ANTLR4整数解析失败
问题描述:
我想解析一个文件与antlr 4,我不明白为什么整数多个数字不解析 (行79:44没有可行的替代在输入'17')。ANTLR4整数解析失败
这是entier语法http://pastebin.com/rxktvUBi
这里是INT
fragment DIGIT : [0-9] ;
integer : DIGIT+ ;
不工作在所有的定义。此版本
integer : ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')+ ;
仅适用于1位整数。
这不是parsified线的一个例子
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
工作。
为什么?任何想法?
答
您的integer
规则是解析器规则,而不是词法分析器规则。 '0'
,'1'
等它引用的文字被隐含地转换成词法规则,每个规则匹配一个数字。您应该进行以下词法规则来代替:
INTEGER : '0'..'9'+;
还是在ANTLR 4,简单:
INTEGER : [0-9]+;