2

私の目標は自分のアプリケーション用の DSL を開発することですが、ユーザーがDSL が実行されている基盤となる言語について何も知らなくても、DSL にブレークポイントを設定できるようにしたいと考えています。 DSL 関連の構文、スタック、ウォッチ変数など。

どうすればこれを達成できますか?

4

2 に答える 2

1

ターゲットプラットフォームによって異なります。たとえば、.NET上にDSLコンパイラを実装している場合、デバッグ情報(変数名、式やステートメントのソースコードの場所など)でバイトコードに注釈を付けるのは簡単です。

言語にVisualStudio拡張機能も提供している場合は、DSLコードの編集とデバッグの両方にロイヤリティフリーのMSVS分離シェルを再利用できます。

JVMでもほぼ同じアプローチが可能です(デバッグフロントエンドとしてEclipseまたはNetbeansを使用できます)。

ネイティブコードの生成はもう少し複雑ですが、lineプラグマを詰めたCコードを生成するなど、いくつかの簡単なことを行うことは可能です。

于 2012-11-28T13:53:28.823 に答える
1

基本的に、ブレークポイントの組み込み機能を備えた DSL のコードを生成する必要があります。それぞれに、内部状態変数を監視するための組み込み機能があります。次に、デバッガーは、DSL 内の場所をデバッグ ブレークポイントにマップする方法を認識し、ブレークポイントごとにオブザーバーを呼び出すだけです。(オブザーバーに変数名などの名前がある場合は、ユーザーが呼び出すものを選択できるようにすることができます)。

于 2012-11-28T13:58:06.447 に答える