これらのフレームワークはどちらもメタモデルを扱います。
それらのツールを使用したメタモデル変換に基づく実用的なアプリケーションの例はありますか?
MPS を使用して全体のバグ トラッカーを作成しました。コード生成は目標ではなく、実行可能なコードを取得することを意味します。目標は、最小限の労力で DSL を作成できるツールを開発者に提供することです。
MPS の優れた点は、言語用の IDE も提供されることです。また、作成するさまざまな DSL は互換性があります。つまり、Java をクロージャーで拡張する DSL と、外部メソッドを有効にする別の DSL を作成でき、これらの拡張機能は連携して動作します。
それらは、メタモデルを格納するドキュメントの点で異なります。
XTextに関して、この記事では、独自のプログラミング言語とドメイン固有言語(DSL)を作成する場合の1つの使用法を説明します。
言語を取得したら、それを処理する必要があります。これは通常、モデルを別の表現に変換することを意味します。
この変換を担当する機能はジェネレーターと呼ばれ、一連の変換テンプレート(eGXPand
)とそれらを実行するいくつかのコードで構成されます。あるイベントでは、モデルが読み込まれ、変換が適用されてコードが生成されます。
dot3zestは、DOT to Zestインタープリター(DOT文法用に生成されたXtextスイッチAPIを使用するようになりました)に付属しており、アドホックDOTエッジ定義をサポートしています。
MPSに関しては、Java、C#、C ++、XMLなどのGPLへ
のこのコード生成のような一連の実用的な例があります。
(ソース:googlecode.com)
XText の主な使用法は、まず、定義した文法から DSL を作成し、Eclipse ワークベンチを自動生成することだと思います。次に、DSL に記述されたスクリプトを Java に変換できます。XText2 の組み込み式はプラスです。このフレームワークは、作成した DSL の記述をサポートする無料の IDE を提供します。そして、DSL は提供する究極の製品です。現実世界からルールとロジックを抽象化するために使用できます。たとえば、私たちのプロジェクトでは、製品構成ルールです。それらを知っているのは専門家だけなので、あなたが作成する DSL にそれらを書き込んでいます。