0

我在为我的语法运行输入流时遇到问题,这是我的语法的一部分

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

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

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

为什么我的语法不能区分 -2 和 2-2 ?请任何人帮助我!

4

1 回答 1

2

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

于 2013-06-11T03:40:48.837 回答