我正在 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)
缺少一个括号-> 应该会出错。
我不知道如何在 XText 中实现这一点。有人可以帮忙吗?
谢谢帮忙。