繁体   English   中英

ANTLR4整数解析失败

[英]ANTLR4 integer parsing fail

我正在尝试使用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

这样可行。

为什么? 任何想法?

您的integer规则是解析器规则,而不是词法分析器规则。 它引用的'0''1'等文字被隐式转换为词法分析器规则,每个规则都与一位数字匹配。 您应该改为使用以下词法分析器规则:

INTEGER : '0'..'9'+;

或在ANTLR 4中,只需执行以下操作:

INTEGER : [0-9]+;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM