5

Xtext を使用して記述された DSL があります。私が望むのは、その DSL を実行して、そこから何か良いことを実行することです。

java コードを生成するために、xtend でインターフェイス IGenerator を実装する myDslGenerator クラスを作成しましたが、正常に動作しています。

2 つの質問があります。

  1. インタープリターとコードジェネレーターの違いは何ですか? どちらも DSL を実行するためのものではありませんか?
  2. インタプリタの書き方は?ステップバイステップのチュートリアルリンクはありますか? xtend を使用してコードを生成するためのチュートリアルはたくさん見つかりましたが、インタープリターを作成するためのチュートリアルは見つかりませんでした。

ありがとうございました、

サルマン

4

1 に答える 1

5

基本的に、インタープリターとコード ジェネレーターはまったく異なる働きをします。コード ジェネレーターはコンパイラのようなものです。別の言語で DSL の実行可能なコードを作成します。一方、インタープリターは、DSL をトラバースして独自の環境で実行するために使用されます。つまり、生成されたコードは DSL に依存する必要はなく (もちろん可能です)、高速化/最適化することができます。インタープリターは言語の構造を理解する必要がありますが、開発 IDE で実行でき、追加のアプリケーションを実行する必要はありません。

AFAIK Xtext はインタープリターの作成をサポートしていません。その範囲外です (完全ではない - Xbase 式の場合、再利用できる XbaseInterpreter インスタンスがあります - クラスパスを正しく設定すれば)。

また、Xtext DSL の解釈に関するステップバイステップのチュートリアルも知りません (XbaseInterpreter の場合でも) が、基本的には AST のトラバーサルに要約され、ノードがトラバースされると、対応するステートメントが動的に実行されます。 . このトラバーサルが機能するためには、予想どおり、インタープリターは変数やその他の参照の (おそらく階層的な) コンテキストを維持する必要があります。

于 2013-01-13T14:46:12.463 に答える