Xtext文法でセマンティック述部を指定することはできません。さらに、Xtextで任意のアクション(読み込み:ターゲット言語コードブロック)を含めることはできません。唯一サポートされているターゲットプラットフォームはJavaです。
Xtextは、これらの制約を誘導することによって大きな利益を得ることができます。あなたは、あなたの文法に合った任意のモデル/構文グラフを直列化することを可能にするアンパーザを得るでしょう。構文グラフについて言えば、Xtextを使用すると、IDEで編集できる言語用の型付けされたASTが得られます。
Xtextの表現で一意の文法機能は、順序付けられていないグループです。つまり、文法の特定の要素が任意の順序で発生する可能性がありますが、それぞれの要素は1回だけ直接表現することができます。あなたはJavaの修飾子を考えるならば、これは非常に便利なことがあります
visibility=('public'|'private') // this is a mandatory assignment
& abstractOrFinal=('abstract'|'final')? // this is optional
& static?='static'? // this will become a boolean value in your ast
は、文法、言語の詳細についてはXtext docsを見てください。
重要な点は、Xtextは内部的にANTLRとafaikを使用していますが、確かによく分かっています.Xtextは遅かれ早かれ演算子の優先順位などのANTLR機能をサポートしていますよね:) –
XtextはアクションAntlrのブラックボックスターゲット言語リテラルと混同して)演算子の優先順位を実装します。特に、エラーリカバリが重要なインタラクティブな環境では、非常にうまく動作します。私は、Antlrの新しい計画を事前に実施するために移行することは考えていません。 –