标签: parsing yacc
我有以下语法:
解析器堆栈当前是:“(z(zx”下一个令牌是+)*)*
规则3或4中的哪一个要使解析器减少以及为什么?
谢谢
答案 0 :(得分:0)
答案是:规则4。
直观地说,这是因为规则3和规则4是一个左关联对,它以贪婪的方式将X转换为Z.
另一个原因是,如果我们减少规则3,我们最终会在解析堆栈上使用Z Z,这不是一种可能的句子形式。语法不会生成具有Z Z的部分派生。