我不明白这个语法有什么问题:
MyFunc
以下简单测试语句因JUnit失败,消息“错误输入'0'期望标题上的RULE_INT
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
header=Header (elements+=Element)*;
Header:
'Test:Revision' version=Decimal ';'
;
Decimal:
INT'.'INT
;
Element:
TableRow
;
TableRow:
'__Row' name=ID '{'
'__Alias' '=' Alias(','Alias)* ';'
'}'
;
Alias:
'0'|'1'|'H'|'L'
;
如果从Alias规则中删除“0”或将测试语句更改为:
,一切正常Test:Revision2.0;
你能告诉我这个语法有什么问题吗?
答案 0 :(得分:1)
使用别名,您将'0'变为关键字,因此它永远不会被INT终端规则匹配。如果您创建名为“L”或名称为“H”的元素,则可能会出现相同的情况,您可以引入类似
的数据类型规则IntValue: INT | '0' | '1';
并在Decimal
中使用那个而不是INT