xtext不接受字符串常量 - 期待RULE_ID

时间:2017-01-17 14:44:13

标签: parsing xtext

我试图将我的问题减少到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例如,如果有人能在这个非常简单的地方指出我在哪里出错,我将非常感激语法。

1 个答案:

答案 0 :(得分:0)

Lexing完成了无环境。关键字永远不能是ID。您可以解决此槽解析器规则。

您可以引入数据类型规则

MyID: ID | "a" | ... | "c"; 

并在使用ID

的地方使用它