精品课程《编译原理第7章LR分析》PPT课件.ppt
《精品课程《编译原理第7章LR分析》PPT课件.ppt》由会员分享,可在线阅读,更多相关《精品课程《编译原理第7章LR分析》PPT课件.ppt(62页珍藏版)》请在三一办公上搜索。
1、7.1 LR分析概述,设有文法GZ:ZaBDc Bb Dd,LR(K)的含义:L表示从左到右扫描输入串,R表示最左规约(即最右推导的逆过程),K表示向右查看输入串符号的个数。当K=1时,能满足当前绝大多数高级语言编译程序的需要,所以着重介绍LR(0),SLR(1),LR(1),LALR(1)方法。,分析,特征:规范的符号栈中的符号是规范句型的前缀,且不含句柄以后的任何符号(活前缀)分析决策依据栈顶状态和现行输入符号 识别活前缀的 DFA.四种技术LR(0)SLR(1)LR(1)LALR(1),LR(0)文法 能力最弱,理论上最重要存在FA 识别活前缀识别活前缀的DFA如何构造(LR(0)项目集
2、规范族的构造)LR(0)分析表的构造,7.2 LR(0)分析,定义 如果有Z(Z为开始符),且为终极符串(或空)。称是规范前缀。若是含有句柄的规范前缀,且每个句柄是的后端,称是可归规范前缀。,例子:SmABcde,若其中Abc是句柄,根据定义有mABc是可归规范前缀。,定理 设1A2为可归前缀,AVN,Au为一产生式,则1u也为可归前缀。,例:GZ:ZabAd Ac 若abAd是可归前缀,根据此定理abc也是可归前缀。,即:1A2 1u2,例:G S:SaAc 1 AAbb 2 Ab 3 求:该文法的可归前缀图,生成过程:,构造可归前缀图方法,自动机直观法,形式化方法,形式化方法,设BX1X2
3、XnP是产生式P,则称形如X1X2XiXi+1XnP的侯选式为LR(0)项目(简称项目)。(圆点可在X1之前,也可在Xn之后)。,定义,称形如X1X2XnP的项目为归约项目。移进项目:除归约项目外的其它形式。,设I为项目集,则定义Close(I)=I.uP|AuPG,A1Close(I)称Close(I)为I的闭包集。,设I为项目集,则GO(I,X)=CLOSE(IX)其中IX=X.P|.XPI,构造LR(0)项目集规范族,LR(0)项目集规范族(构成识别一个文法的活前缀的DFA的状态的全体)。LR(0)项目或配置(item or configuration).-在右端某一位置有圆点的G的产生
4、式 A xyz A.xyz Ax.yz Axy.z Axyz.如:SaAd S.aAd Sa.Ad SaA.d SaAd.,可归前缀图的构造算法,1.先产生初始项目集I1=Close(.P|ZPG,Z为初始符)。2.若I是新项目集,则对每X(VNVT),产生项目集GO(I,X)。若两项目集完全相同,则作为一项目集。3.重复2至不产生新项目集为止。4.图的结点由上述项目集组成,且若GO(Ii,X)=Ij,则有Ii Ij。,例:G(S):SaAc 1 AbB2|ba3 BdB4|e 5,0:S.aAc 1,1:a.Ac1.bB2.ba3,2:aA.c1,1:a.Ac1.bB2.ba3,aAc.1,
5、1:a.Ac1.bB2.ba3,3:b.B2 b.a3.dB4.e5,bB.2,3:b.B2 b.a3.dB4.e5,ba.3,3:b.B2 b.a3.dB4.e5,e.5,3:b.B2 b.a3.dB4.e5,4:d.B4.dB4.e5,3:b.B2 b.a3.dB4.e5,dB.4,4:d.B4.dB4.e5,4:d.B4.dB4.e5,4:d.B4.dB4.e5,定义,二义性结点:可归前缀图的一个结点包含多个归约项目或同时包含移进项目和归约项目。,LR(0)文法:文法的可归前缀图不包含二义性结点(可用于判是否LR(0)文法)。,LR分析法的分析栈由两个栈组成:状态栈、符号栈。,例子:Aa
6、Bc Ba Bab,LR分析法的步骤:格局为(0 1i,#X0X1Xi,ajaj+1an#)状态栈 符号栈 输入流,1.若ACTIONi,aj=sk,则有(0 1K,#X0X1Xi,ajaj+1an#)。,2.若ACTIONi,aj=rp,则先把符号栈归约Ap(P产生式的左部),从状态栈删除 np(为侯选式的长度)个状态(后端),再压入=Gotoi-np,Ap有(0i-np,#X0XiAp,ajaj+1an#)。,3.若ACTIONi,aj=ok,则成功。4.若ACTIONi,aj=en,则失败。,分析法的动作:Sjs表示“移进”,j表压入编号rjr表示“归约”,j表产生式号 ok表示分析成功
7、eje表示错误,j表错误编号,例:G(E):EaA|bB AcA|d BcB|d1.用形式化方法作可归前缀图。2.求LR(0)矩阵。3.写出输入串bccd的LR(0)分析过程。,解:可归前缀图,G(S):SE 0 EaA1 EbB2 AcA3 Ad 4 BcB5 Bd 6,解:拓展文法的新文法如下:,0:S.E E.bB E.aA,1:SE.,0:S.E E.bB E.aA,2:Ea.A A.d A.cA,0:S.E E.bB E.aA,6:EaA.,2:Ea.A A.d A.cA,10:Ad.,2:Ea.A A.d A.cA,4:Ac.A A.d A.cA,2:Ea.A A.d A.cA,4
8、:Ac.A A.d A.cA,4:Ac.A A.d A.cA,8:AcA.,4:Ac.A A.d A.cA,0:S.E E.bB E.aA,3:Eb.B B.d B.cB,7:EbB.,3:Eb.B B.d B.cB,11:Bd.,3:Eb.B B.d B.cB,5:Bc.B B.cB B.d,3:Eb.B B.d B.cB,5:Bc.B B.cB B.d,5:Bc.B B.cB B.d,9:BcB.,5:Bc.B B.cB B.d,解:LR(0)矩阵 s表示状态 r表示归约,LR(0)分析过程的关键点:1.用分析栈的栈顶元素对输入串的第一个元素查矩阵,以确定下一步的动作。2.每一步都要保持分
9、析栈和符号栈长度一致。3.归约时,符号栈的元素(产生式的右部)弹出栈时,等长的分析栈元素同时弹出栈,以保持两栈长度一致。4.归约时,产生式的左部压进符号栈时,分析栈压进分析栈栈顶元素对产生式左边查goto矩阵得到的状态编号。例如:第5步:用Bd归约,d,(11)出栈,B进栈;5对B查表得9。,动画演示,解:串bccd的LR(0)分析过程,分析器模型,例 GS为:S a A c B e A b A Ab B d 1)构造识别活前缀的DFA 2)构造它的LR(0)分析表。3)分别给出对输入符号串abbcde和 Abbce的LR(0)分析步骤。,GS拓广为:S S S a A c B e A b A
10、 Ab B d,I0:S S S a A c B e,I1:S S,I2:S a A c B e A b A Ab,I3:S a A c B e A A b,I4:A b,I5:S a A c B e B d,I7:S a A c B e,I8:B d,I9:S a A c B e,I6:A A b,S,a,A,b,b,c,B,e,d,GL=abbcde,GS的LR(0)分析表,Step states.Syms.The rest of inputaction goto 1 0#abbcde#s2 2 02#a bbcde#s4 3 024#ab bcde#r2 3 4 023#aA bcde#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理第7章LR分析 精品课程 编译 原理 LR 分析 PPT 课件
链接地址:https://www.31ppt.com/p-6012951.html