第7章LR分析.ppt
《第7章LR分析.ppt》由会员分享,可在线阅读,更多相关《第7章LR分析.ppt(59页珍藏版)》请在三一办公上搜索。
1、7.1 LR分析概述,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)项目集规范族的构造)LR(0)分析表的构造,
2、7.2 LR(0)分析,定义 如果有Z(Z为开始符),且为终极符串(或空)。称是规范前缀。若是含有句柄的规范前缀,且每个句柄是的后端,称是可归规范前缀。,例子:SmABcde,若其中Abc是句柄,根据定义有mABc是可归规范前缀。,定理 设1A2为可归前缀,AVN,Au为一产生式,则1u也为可归前缀。,例:GZ:ZabAd Ac 若abAd是可归前缀,根据此定理abc也是可归前缀。,例:G(S):SaAc 1 AAbb 2 Ab 3,生成过程:,构造可归前缀图方法,自动机直观法,形式化方法,形式化方法,设BX1X2XnP是产生式P,则称形如X1X2XiXi+1XnP的侯选式为LR(0)项目(简
3、称项目)。(圆点可在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的产生式 A xyz A.xyz Ax.yz Axy.z Axyz.如:SaAd S.aAd
4、 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|c 5,0:.aAc 1,1:a.Ac1.bB2.ba3,2:aA.c1,1:a.Ac1.bB2.ba3,aAc.1,1:a.Ac1.bB2.ba3,3:b.B2 b.a3.dB4.e5,bB.2,3:b.
5、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,e,4:d.B4.dB4.e5,d,4:d.B4.dB4.e5,定义,二义性结点:可归前缀图的一个结点包含多个归约项目或同时包含移进项目和归约项目。,LR(0)文法:文法的可归前缀图不包含二义性结点(可用于判是否LR(0)文法)。,LR分析法的分析栈由两个栈组成:状态栈、符号栈。,例子:AaBc Ba Bab,LR分析法的步骤:格局为(0 1i,#X0X1Xi,ajaj
6、+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表示分析成功eje表示错误,j表错误编号,例:G(E):EaA|bB AcA|d BcB|d
7、1.用形式化方法作可归前缀图。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,a,2:Ea.A A.d A.cA,0:S.E E.bB E.aA,A,6:EaA.,2:Ea.A A.d A.cA,d,10:Ad.,2:Ea.A A.d A.cA,4:Ac.A A.d A.cA,2:Ea.A A.d A.cA,d,4:Ac.A A.d A.cA,4:Ac.A A.d A.cA,A
8、,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,d,11:Bd.,3:Eb.B B.d B.cB,5:Bc.B B.cB B.d,3:Eb.B B.d B.cB,d,5:Bc.B B.cB B.d,c,5:Bc.B B.cB B.d,9:BcB.,5:Bc.B B.cB B.d,解:LR(0)矩阵 s表示状态 r表示归约,第5步:d,(11)出栈,B进栈;5对B查表得9。,动画演示,解:串bccd的LR(0)分析过程,分析器模型,例 GS为:S a A c B e A b A Ab B
9、 d 1)构造识别活前缀的DFA 2)构造它的LR(0)分析表。3)分别给出对输入符号串abbcde和 Abbce的LR(0)分析步骤。,GS拓广为:S S S a A c B e A b A 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=ab+cde,GS的LR(0)分析表,Step states.S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LR 分析
链接地址:https://www.31ppt.com/p-4784539.html