19

編集用の IDE だけでなく、DSL を作成するための非常に優れたツール Xtext に出くわしました。Web で検索を行ったところ、ANTLR のすべての機能が提供されていないと言っている人が見つかりました。パーサージェネレーターとして ANTLR を使用しています。

自分の言語用の完全なパーサーを作成するために ANTLR のどの機能が必要になるかさえわかりませんが、ANTLR はかなり長い間使用されており、おそらく Xtext よりも多くの機能をサポートしています。

Xtext文法で指定できないものの例を誰か教えてください。

4

1 に答える 1

22

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 ドキュメントを参照してください。

于 2011-05-05T22:15:54.857 に答える