我试图将我的问题减少到xtext中最简单的问题 - 我想使用以下语法:
M: lines += T*;
T:
DT
| BDT
| N
;
BDT:
name = ('a' | 'b' | 'c')
;
DT:
'd' name=ID
('(' (ts += BDT (','ts += BDT)*) ')')?
;
N:
'n' name=ID ':' type=[T]
;
我打算解析d f(a,b,b)
形式的表达式,例如工作正常。我也希望能够解析n g:f
哪个也有效,但不能解析n g:a
- 这里是BDT规则的一部分。给出的错误是"在''""中缺少RULE_ID。
我想让语法解析n g:a
例如,如果有人能在这个非常简单的地方指出我在哪里出错,我将非常感激语法。
答案 0 :(得分:0)
Lexing完成了无环境。关键字永远不能是ID。您可以解决此槽解析器规则。
您可以引入数据类型规则
MyID: ID | "a" | ... | "c";
并在使用ID
的地方使用它