2011年8月19日金曜日

Xtextで最小限覚える3つの要素

XtextでDSL開発を行うときに、最小限覚える必要があるのは、以下の3つの要素かと思います。

構文定義(Grammar)
Xtextはパーサ生成式の外部DSL技術なので、何よりも構文定義が必要です。
構文定義は、シンプルなXtext文法に従って行います。
文法は、構文定義、終端定義、モデル定義を兼ねていて、扱いやすいです。

終端、値型、ValueConverter、RuntimeModule
終端は字句パターンとしてだけでなく、何らかの値型として定義します。
標準の終端と値型だけ利用する場合は、これらの特別な定義は不要です。
本格的なDSLを作る場合、制約を設けるために独自の定義が必要になります。
その場合、終端の字句を値型に変換するValueConverterを実装します。
ValueConverterは、RuntimeModuleを実装してパーサに組み込みます。

モデルクラス/リソースAPI
構文からコード生成するとモデルクラスやパーサ/エディタが生成されます。
モデルクラスはEMFモデルであり、Ecoreファイルも一緒に生成されます。
DSLを読み込んでモデルを得るには、EMFリソースAPIを使用します。
パーサはリソースAPIの背後で自動的に使用されます。
エディタはEclipseアプリケーションとして実行できます。
なお既存EMFモデルからDSL開発を始めた場合、モデルは生成されません。
パーサやエディタは、既存EMFモデルを使用するように生成されます。

0 件のコメント:

コメントを投稿