XText で DSL を定義すると、Java バージョンの言語パーサーとコード生成スケルトンが自動的に生成されます。これは非常に優れています。
問題は、私の DSL が、複数の言語で実装されているプロジェクトによって使用されることを意図していることです。少なくとも C#、Java、Ruby で DSL を解析する必要があるかもしれないと想像できます。
問題は、xtext を使用して複数の言語用のパーサーを生成する方法はあるのかということです。
純粋な構文解析は、完全な Xtext スイートのほんの一部です。Eclipse IDE と Xtend ジェネレーターへの統合は、コードの 2 つの大きなチャンクです。Xtext は EMF Ecore モデルの上に構築されています。これらの部分は、他の言語では利用できません。
したがって、単純な C# および Ruby 内から Xtext を実行することはできません。
できること:
パーサーとジェネレーターをスタンドアロンの jar にパッケージ化して、どこからでも (C# や Ruby を含む) 外部プロセスとして呼び出すことができます。javac
これは、独自の DSL のようなものです。
JRuby で Ruby コードを実行し、そこから Xtext を呼び出すことができます。すべてが同じ JVM で実行されるため、外部プログラムを実行するよりも適切に制御できます。
Xtext を使用すると、すべての優れた機能を備えた使いやすいエディターを取得しながら、任意の言語に独立した文法を実装できます。