我在为我的语法运行输入流时遇到了问题,下面是我的语法的一部分
expression
: ....
| ( '+' | '-' | '&' |) expression
| expression ('+'|'-') expression
....
;当像2+2-2或(2+2+2)-2这样的输入流时,出现错误
line 10:30 extraneous input '-2' expecting {',', '^',...}为什么我的语法不能区分-2和2-2?有没有人帮帮我!
发布于 2013-06-11 11:40:49
看起来您编写词法分析器的方式使得-2只产生一个令牌。与其以这种方式处理负数,不如将-视为一元运算符,并允许解析器处理求反操作。如果您尝试在词法分析器中直接处理负数,诸如2-2之类的输入将作为2个连续的数字标记(2后跟-2)发送到解析器,而不是所需的3个标记(2、-、2)。
https://stackoverflow.com/questions/17036086
复制相似问题