Xtext 不匹配的输入 '0' 期望 RULE_INT

Xtext mismatched input '0' expecting 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'
;

以下简单测试语句因 JUnit 而失败,并显示消息“不匹配的输入‘0’期望在 HeaderRULE_INT 上

Test:Revision2.0;

如果我从别名规则中删除“0”或将测试语句更改为:

,一切正常
Test:Revision2.00;

你能告诉我这个语法有什么问题吗?

使用 Alias,您可以将“0”变成关键字,这样它就永远不会被 INT 终端规则匹配。如果您创建一个名为 'L' 或名称 'H' 的元素,也会发生同样的情况,您可以引入一个数据类型规则,例如

IntValue: INT | '0' | '1';

并在 Decimal 中使用那个而不是 INT