grammar Test;
IDHEAD: ('a'..'z' | 'A'..'Z' | '_');
IDTAIL: (IDHEAD | '0'..'9');
ID: (IDHEAD IDTAIL*);
fragment
TYPE: ('text' | 'number' | 'bool');
define: 'define' ID 'as' TYPE;
的问题是define
规则令牌define
,ID
,as
,但不会匹配TYPE
匹配。我正在产生MissingTokenException。这个语法有什么问题?
如果我内联类型,如下所示,它的作品,因为我打算:
grammar Test;
IDHEAD: ('a'..'z' | 'A'..'Z' | '_');
IDTAIL: (IDHEAD | '0'..'9');
ID: (IDHEAD IDTAIL*);
fragment
TYPE: ('text' | 'number' | 'bool');
define: 'define' ID 'as' ('text' | 'number' | 'bool');
更新:The following token definitions can never be matched because prior tokens match the same input: TYPE
:本fragment
关键字在努力解决相互冲突增加。
格式化丢失了,但您仍然可以看到词法分析器规则的顺序。 – WayneH