XTextで独自のDSLを開発しています。
私はこのようなことをしたい:
1 AND (2 OR (3 OR 4))
ここに私の現在の.xtextファイル:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
(greetings+=CONDITION_LEVEL)
;
terminal NUMBER :
('1'..'9') ('0'..'9')*
;
AND:
' AND '
;
OR:
' OR '
;
OPERATOR :
AND | OR
;
CONDITION_LEVEL:
('('* NUMBER (=>')')* OPERATOR)+ NUMBER ')'*
;
私が抱えている問題は、DSLが無制限のブラケットを作成する可能性があるはずですが、プログラマーが開いているすべてのブラケットを閉じないとエラーを表示することです。
例:
1 AND (2 OR (3 OR 4)
1つの角かっこがありません->エラーが発生するはずです。
XTextでこれをどのように実現できるかわかりません。誰か助けてもらえますか?
助けてくれてありがとう。