为什么语法在这个答案https://stackoverflow.com/a/1932664/5613768接受这样的表达式: 2(38)?我知道为什么12*(5-6)被接受,为什么12*(5-6 )不被接受,但我无法解释这种行为。
发布于 2017-06-10 18:41:15
它不接受整个输入。它在2
之后停止解析,因为eval
规则:
eval
: additionExp
;
将2
匹配为additionExp
,然后停止,因为其余的输入无法匹配。
如果您“锚定”了eval
规则,那么它必须消耗整个令牌流,如下所示:
eval
: additionExp EOF
;
您将在控制台上看到一个错误。
https://stackoverflow.com/questions/44475098
复制相似问题