Xtextを使用して、セマンティック空白を含む言語を解析するにはどうすればよいですか?CoffeeScriptの文法を書き込もうとしていますが、これに関する適切なドキュメントが見つかりません。
4 に答える
これは、XTextの空白に敏感な言語の例です。
私の知る限り、できません。
Python のような言語を解析する場合は、lexer を発行してトークンを発行する必要がありINDENT
ますDEDENT
。terminal
そのためには、入力の次の文字の現在の行内位置が 0 (行の先頭) に等しいかどうかを最初にチェックするレクサー規則 (Xtext の規則) 内でサポートされるセマンティック述語が必要です。およびは' '
または'\t'
です。
しかし、ドキュメントを参照すると、現時点でこれが Xtext でサポートされているとは思えません。Xtext 2.0 以降、生成規則 ( 6.2.8. 構文述語 を参照) では意味述語のサポートが追加されましたが、終端規則ではサポートされていません。
Xtext でこれを行う唯一の方法は、字句解析器に終端スペースと改行を生成させることですが、これでは生成規則が完全に混乱してしまいます。
Java(およびJava指向のパーサージェネレーター)を使用してそのような言語を解析したい場合は、そのようなトークンを非常に簡単に発行できるANTLRをお勧めします。しかし、Eclipse との統合に熱心であれば、Xtext を使用してこれを行う方法がわかりません。申し訳ありません。INDENT
DEDENT