为什么语法在这个答案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
复制相似问题