Antlr4:antlr4中的无关输入

时间:2013-06-11 03:31:55

标签: antlr4

我的语法运行输入流有问题,这是我语法的一部分

expression  
:  .... 
|   ( '+' | '-' | '&' |) expression
|   expression ('+'|'-') expression
   ....
;

当输入流如2 + 2-2或(2 + 2 + 2)-2时,发生错误

line 10:30 extraneous input '-2' expecting {',', '^',...}

为什么我的语法不能区分-2和2-2? 有人帮帮我!

1 个答案:

答案 0 :(得分:2)

您似乎已经以-2导致单个令牌的方式编写了词法分析器。不要以这种方式处理负数,而是将-视为一元运算符,并允许解析器处理否定操作。如果您尝试直接在词法分析器中处理负数,则2-2等输入将作为2个连续数字标记(2后跟-2)而不是所需的3来发送给解析器令牌(2-2)。