精品课程《编译原理第7章LR分析》PPT课件.ppt
《精品课程《编译原理第7章LR分析》PPT课件.ppt》由会员分享,可在线阅读,更多相关《精品课程《编译原理第7章LR分析》PPT课件.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7章章 LR分析分析7.1 LR分析概述Z aBDc aBdc abdcZ aBDc abDc abdcrrrlll设有文法GZ:ZaBDc Bb Dd LR(K)的含义的含义:L表示从左到右扫描输入串,表示从左到右扫描输入串,R表示最左表示最左规约规约(即最右推导的逆过程即最右推导的逆过程),K表示向右查表示向右查看输入串符号的个数。当看输入串符号的个数。当K=1时,能满足当时,能满足当前绝大多数高级语言编译程序的需要,所以前绝大多数高级语言编译程序的需要,所以着重介绍着重介绍LR(0),SLR(1),LR(1),LALR(1)方法。方法。分析分析特征特征:规范的规范的符符号号栈栈中中的
2、的符符号号是是规规范范句句型型的的前前缀缀,且且不不含含句柄以后的任何符号句柄以后的任何符号(活前缀活前缀)分分析析决决策策依依据据栈栈顶顶状状态态和和现现行行输输入入符符号号 识别活前缀的识别活前缀的 DFA.四种技术LR(0)SLR(1)LR(1)LALR(1)LR(0)文法文法 能力最弱,理论上最重要能力最弱,理论上最重要存在存在FA 识别活前缀识别活前缀识别活前缀的识别活前缀的DFA如何构造如何构造(LR(0)项目集规范族的构造)项目集规范族的构造)LR(0)分析表的构造分析表的构造7.2 LR(0)分析 定义 如果有Z (Z为开始符),且为终极符串(或空)。称是规范前缀。若是含有句柄
3、的规范前缀,且每个句柄是的后端,称是可归规范前缀。r*例子:SmABcde-mABcdeemABcddemABccdemAB后缀规范前缀 若其中Abc是句柄,根据定义有mABc是可归规范前缀。定理 设1A2为可归前缀,AVN,Au为一产生式,则1u也为可归前缀。例:GZ:ZabAd Ac 若abAd是可归前缀,根据此定理abc也是可归前缀。即:1A2 1u2例:G S :SaAc 1 AAbb 2 Ab 3 求:该文法的可归前缀图123203cabbAb1可归前缀图1bcAa3bbA2S:A:子自动机生成过程:12,34203cabbAb11bcAa3bA2b34120构造可归前缀图方法自动机
4、直观法形式化方法 形式化方法,设BX1X2XnP是产生式P,则称形如X1X2XiXi+1XnP的侯选式为LR(0)项目(简称项目)。(圆点可在X1之前,也可在Xn之后)。定义F称形如X1X2XnP的项目为归约项目。移进项目:除归约项目外的其它形式。F 设I为项目集,则定义Close(I)=I.uP|AuPG,A1Close(I)称Close(I)为I的闭包集。F 设I为项目集,则GO(I,X)=CLOSE(IX)其中IX=X.P|.XPI构造构造LR(0)项目集规范族项目集规范族LR(0)项项目目集集规规范范族族(构构成成识识别别一一个个文文法法的的活活前前缀缀的的DFA的状态的全体的状态的全
5、体)。LR(0)项目或配置()项目或配置(item or configuration).-在右端某一位置有圆点的在右端某一位置有圆点的G的产生式的产生式 A xyz A.xyz Ax.yz Axy.z Axyz.如:如:SaAd SaAd S.aAd Sa.Ad SaA.d SaAd.S.aAd Sa.Ad SaA.d SaAd.例子:UXYZ,求项目 UXYZ UXYZ UXYZ UXYZ 移进项目归约项目 可归前缀图的构造算法1.先产生初始项目集I1=Close(.P|ZPG,Z为初始符)。2.若I是新项目集,则对每X(VNVT),产生项目集GO(I,X)。若两项目集完全相同,则作为一项目
6、集。3.重复2至不产生新项目集为止。4.图的结点由上述项目集组成,且若GO(Ii,X)=Ij,则有Ii Ij。x例:G(S):SaAc 1 AbB2|ba3 BdB4|e 5 0:S.aAc 1a1:a.Ac1 .bB2 .ba3A2:aA.c11:a.Ac1 .bB2 .ba3caAc.1b1:a.Ac1 .bB2 .ba33:b.B2 b.a3 .dB4 .e5BbB.23:b.B2 b.a3 .dB4 .e5aba.33:b.B2 b.a3 .dB4 .e5e e.53:b.B2 b.a3 .dB4 .e5d4:d.B4.dB4 .e53:b.B2 b.a3 .dB4 .e5BdB.44
7、:d.B4.dB4 .e5e4:d.B4.dB4 .e5d4:d.B4.dB4 .e5 定义 二义性结点:可归前缀图的一个结点包含多个归约项目或同时包含移进项目和归约项目。Aa.SBD.移进、归约冲突AaS.BD.归约、归约冲突例:LR(0)文法:文法的可归前缀图不包含二义性结点(可用于判是否LR(0)文法)。LR分析法的分析栈由两个栈组成:状态栈、符号栈。例子:AaBc Ba BabLR分析法的步骤:格局为(0 1i,#X0X1Xi,ajaj+1an#)状态栈 符号栈 输入流 1.若ACTIONi,aj=sk,则有(0 1K,#X0X1Xi,ajaj+1an#)。2.若ACTIONi,aj=
8、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|d1.用形式化方法作可归前缀图。2.求LR(0)矩阵。3.写出输入串bccd的LR(0)分析过程。解:可归前缀图 G(S):SE 0 EaA1 EbB2 AcA
9、3 Ad 4 BcB5 Bd 6 解:拓展文法的新文法如下:0:S.E E.bB E.aAE1:SE.0:S.E E.bB E.aAa2:Ea.A A.d A.cA0:S.E E.bB E.aAA6:EaA.2:Ea.A A.d A.cAd10:Ad.2:Ea.A A.d A.cAc4:Ac.A A.d A.cA2:Ea.A A.d A.cAd4:Ac.A A.d A.cAc4:Ac.A A.d A.cAA8:AcA.4:Ac.A A.d A.cAb0:S.E E.bB E.aA3:Eb.B B.d B.cBB7:EbB.3:Eb.B B.d B.cBd11:Bd.3:Eb.B B.d B.c
10、Bc5:Bc.B B.cB B.d3:Eb.B B.d B.cBd5:Bc.B B.cB B.dc5:Bc.B B.cB B.dB9:BcB.5:Bc.B B.cB B.d解:LR(0)矩阵 s表示状态 r表示归约r4r4r4r4r4r4r4r4r4r41010r6r6r6r6r6r6r6r6r6r61111r5r5r5r5r5r5r5r5r5r59 9r3r3r3r3r3r3r3r3r3r38 8r2r2r2r2r2r2r2r2r2r27 7r1r1r1r1r1r1r1r1r1r16 69 9S11S11S5S55 58 8S10S10S4S44 47 7S11S11S5S53 36 6S1
11、0S10S4S42 2AccAcc1 11 1S3S3S2S20 0B BA AE E#d dc cb ba aGotoGotoActionAction状态状态 LR(0)分析过程的关键点:1.用分析栈的栈顶元素对输入串的第一个元素查矩阵,以确定下一步的动作。2.每一步都要保持分析栈和符号栈长度一致。3.归约时,符号栈的元素(产生式的右部)弹出栈时,等长的分析栈元素同时弹出栈,以保持两栈长度一致。4.归约时,产生式的左部压进符号栈时,分析栈压进分析栈栈顶元素对产生式左边查goto矩阵得到的状态编号。例如:第5步:用Bd归约,d,(11)出栈,B进栈;5对B查表得9。动画演示动画演示S11d#b
12、cc03554S5cd#bc0353S5ccd#b032S3bccd#01GOTO Action 输入串 符号栈 状态栈 步骤 r6#bccd0355(11)59r6#bccB03555r5#bccB0355969r5#bcB0356 解:串bccd的LR(0)分析过程acc#E0191r2#bB03787r5#bcB035979r5#bccB0355969r6#bccd0355(11)5S11d#bcc03554S5cd#bc0353S5ccd#b032S3bccd#01GOTO Action 输入串 符号栈 状态栈 步骤 分析分析器模型器模型总控程序outputInput#S1 XmS1X
13、1S0#栈状态文法符号ACTION GOTOLR分析表产生式表例例 GS为为:S a A c B e A b A Ab B d 1)构造识别活前缀的构造识别活前缀的DFA 2)构造它的构造它的LR(0)分析表。分析表。3)分别给出对输入分别给出对输入符号串符号串abbcdeabbcde和和 Abbce Abbce的的LR(0)分析步骤。分析步骤。GS拓广拓广为为:S S S a A c B e A b A Ab B dI I0:S S S a A c B e I I1:S S I I2:S a A c B e A b A AbI I3:S a A c B e A A bI I4:A b I I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理第7章LR分析 精品课程 编译 原理 LR 分析 PPT 课件
限制150内