Antlr没有认识到数字

时间:2017-09-16 03:11:25

标签: parsing numbers antlr4 lexer dynamic-languages

我定义了3种类型的数字,数字,小数和百分比。

this.commentData.author = this.comment.get('author').value; this.commentData.rating = this.comment.get('rating').value; this.commentData.comment = this.comment.get('comment').value;
Percentage : (Sign)? Digit+ (Dot Digit+)? '%' ;
Number : Sign? Digit+;

百分比和小数点工作正常,但是当我指定一个数字时,除非我在数字前加上一个符号(+或 - ),否则它不会将其识别为数字。
Decimal : Sign? Digit+ Dot Digit*;
number foo = +5 // does recognize

它在评估表达中确认了它 number foo = 5; // does not recognize

这是我的语言(我取出了这些功能,只留下语言识别)。

if (foo == 5 )  // does recognize

2 个答案:

答案 0 :(得分:0)

我预感到这种片段的使用是不正确的:

fragment Sign :   Plus | Minus;

我在参考书中找不到任何内容,但我认为需要将其更改为:

fragment Sign :   [+-];

答案 1 :(得分:0)

我发现了这个问题。我使用的是版本4.5.2-1,因为每次尝试升级到4.7都会导致更多错误,我不想在尝试解决另一个错误时导致更多错误。我终于崩溃并将库升级到4.7,修复了错误并且数字识别问题消失了。这是图书馆里的一个错误。