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