现在我们再看图7.11在I5,I7项目集中的移进-归约冲突,不能用SLR(1) 方法解决的原因如下: I5: S→ae·c A→e· 因 S′ ![]() ![]() ![]() ![]() ![]() ![]() R R R S′ ![]() ![]() ![]() ![]() R R 这两个最右推导已包括了活前缀为a的所有句型,因此,不难看出对活前缀ae来说,当面临输入符号为c时应移进,面临d时应用产生式A→e归约。因为 S′ ![]() ![]() R R 这说明从S′出发不能用最右推导(规范推导)推出aAc句型,所以aAc不是该文法的规范句型。回顾LR分析过程,若输入符号串是所给文法的句子,那么分析过程的任何时刻在文法符号栈中的符号和剩余的符号总是构成该文法的规范句型。 这也说明了并不是FOLLOW(A)的每个元素在含A的所有句型中在A的后面都会出现,例中d只在规范句型aAd中A的后面出现,因此面临输入符为d才应归约。再看在I7中。 |