我有问题运行输入流为我的语法,这是我的语法的一部分
expression
: ....
| ( '+' | '-' | '&' |) expression
| expression ('+'|'-') expression
....
;
当输入流为2+2-2或(2+2+2)-2时,发生错误
line 10:30 extraneous input '-2' expecting {',', '^',...}
为什么我的语法不能区分-2和2-2 ?谁来帮帮我!
看来您已经以这样一种方式编写了词法分析器,即-2
产生单个令牌。不以这种方式处理负数,而是将-
视为一元操作符,并允许解析器处理否定操作。如果您尝试直接在词法分析器中处理负数,则输入(例如2-2
)将作为2个连续的数字标记(2
跟着-2
)发送到解析器,而不是所需的3个标记(2
, -
, 2
)。