我正在尝试使用 antlr 4 解析文件,但我不明白为什么不解析多于一位的整数(第 79:44 行在输入“17”处没有可行的替代方案)。
这是整个语法http://pastebin.com/rxktvUBi
这是int的定义
fragment DIGIT : [0-9] ;
integer : DIGIT+ ;
这根本不起作用。这个版本
integer : ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')+ ;
仅适用于 1 位整数。
这是未解析的行的示例
struct p_77_bound_17_or: ((bound(MEK)<=17) | (bound(MEKPP)<=17))
问题出在
simple_expression:
(integer)+
请注意,如果我使用标识符
ID:
('a'..'z'|'A'..'Z'|'0'..'9'|'_')+;
identifier: ID;
而不是整数
simple_expression:
identifier
这样可行。
为什么?任何想法?