详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !
首先对文法进行拓广,得到如下的拓广文法:<0>S→S<1>S→AaAb<2>S→BbBa<3>A→ε<4>B→ε构造的LR(0)项目集规范族(自动机)如图5—16所示。构造出来的LR(0)分析表如表5-22所示。表5-22构造出来的L据R(0)分析表状态ACTION(动作)GOTO(转移)ab#SAB0r3/r4r3突头己王协级含剧/r4r3/r41231acc2s43s54r3r3r365r友格钢连道责却虽推4r4r486s77r1r1r18s99r2r2r2构造出的LR(0)分析表存在归约-归约冲突(0号状态行),所以给定文法不是LR(0)文法。$构造出的SLR(1)分析表如表5-23所示:表5-23构造出的SLR(1)分析表状态ACT|ON(动作)GOTO(转移)ab#SAB0r3/r4r3/r41231aCC八娘原举搞宜2s43s54r3r365r4r486s77r18s99续r2由于SLR(1)分析表存在多重入口,因此给定文法不是SLR(1)文法。$构造LR(1)项目议施宗集规范族,如图5-17所示。LR(1)分析表如表5—24所示:表5-24LR(1)分析表状态ACTION(动婷死作)GOTO(转移)ab#SAB0r3r41231acc2s眼免艺述市药43s74r355京演s66r17r488s99r2构造出的LR(1)陆买论烟动分析表不含多重入口,因此给定文法是LR(1)文法。$由于上述LR(1)项目集合中不含同心项目集,因此,上述的LR(1)分析表也是LALR起调宪艺胶活(1)分析表。给定文法是LALR(1官绍示团清某州)文法。$下面使用前面得到的LR(1)分析表,对句子ab进行LR语法分析。①开始时,经过初始化,堆封约白村发左具永栈和缓冲区具有如下所示的情形:②此时栈顶状态为月有密0,输入符号为a,查找分析耐出表,得到r3,即用A→ε进行归约,将栈顸的ε弹出(由于是空串,所以什么也不弹)后栈顶的状态为0,归约出的文法非终结符为A,查找0行A列,得到2,于是将<2,A>压栈,形成如下的情形:③此时栈顶状态为2,输入符或爱号为a,查找2行a列动作子表,得到s4,即移进转入4号状态,形成:④此时栈顶状态为4,输入符号为b,查找分析表得到r3,即用A→ε进行归约。归约后,得到帮历议哥训标如下的情况:⑤此时栈顶状态为5,输入符号为b,查找分析表,得到s6,即移进转入6号状态:⑥此时栈顶状态为6,输入符号为#,查找分析表,得到r1,即用S→AaAb进行归约。归约时,先弹出栈顶的句柄(长度为4,退栈4次),得到:⑦然后查找分析表0行s列,得到1,于是,将<1,S>压栈,形成:此时栈项状态为1,输入符号为“#”,查找分析表,得到acc,即接受,分析成功地结束,说明待分析终结符号串ab是给定文法的合法句子。