编译原理(陈火旺第三版)练习答案(14)
发布时间:2021-06-07
发布时间:2021-06-07
编译原理(陈火旺第三版)练习答案
#(S,(S,a #(S,(S,S #(S,(T #(S,(T) #(S,S #(T #(T) #S
P134-5 (1)
))# ))# ))# )# )# )# # #
移进 归约 归约 移进 归约 归约 移进 归约
考察I1、I6、I7:
I1:存在移进-归约冲突,因为Follow(S’)={#},不包含a或b,因此冲突可以使用SLR解决方法解决。
I6:存在移进-归约冲突,因为Follow(A)={a,b},因此无法使用SLR方法解决移进-归约冲突
I7:存在移进-归约冲突,因为Follow(S)={#,a,b},因此无法解决移进-归约冲突 所以不是SLR(1)文法。
构造LR(1)项目集规范族:
编译原理(陈火旺第三版)练习答案
本文档由计算机吧【www.jsj8.com】搜集,版权归原作者,不得用于商业活动!
更多计算机考研资料请大家到:www.jsj8.com下载!
检查I5,[A→SA.,a/b],要求输入为a或者b使用A→SA归约,而[S→.b,a/b]及[A→.a,a/b]要求移进,因此存在移进-归约冲突,所以不是LR(1)文法。 P135-8 解答:
不存在左递归;
因为Fist(AaAb)={a},First(BbBa)={b}所以交集为空 所以该文法是LL(1)文法。
I0={S→.AaAb,S→.BbBa,A→.,B→.} I1=GO(I0,A)={ S→A.aAb } I2=GO(I0,B)={ S→B.bBa } I3=GO(I1,a)={ S→Aa.Ab,A→.} I4=GO(I2,b)={ S→Bb.Ba,B→.} I5=GO(I3,A)={ S→AaA.b } I6=GO(I4,B)={ S→BbB.a } I7=GO(I5,b)={ S→AaAb.} I8=GO(I6,a)= { S→BbBa.}
考虑:I0:存在两个归约项目,A→.,B→.,Follow(A)={a,b},Follow(B)={a,b},所以冲突不能解决,不是SLR(1)文法。