蒋立源编译原理第三版第四章 习题与答案2_第1页
蒋立源编译原理第三版第四章 习题与答案2_第2页
蒋立源编译原理第三版第四章 习题与答案2_第3页
蒋立源编译原理第三版第四章 习题与答案2_第4页
蒋立源编译原理第三版第四章 习题与答案2_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 习题5-1 设有文法GS: SA/ AaAAS/(1) 找出部分符号序偶间的简单优先关系。(2) 验证GS不是简单优先文法。 5-2 对于算符文法GS:SE EE-TT TT*FF F-PP P(E)i(1) 找出部分终结符号序偶间的算符优先关系。(2) 验证GS不是算符优先文法。5-3 设有文法GE:EE1 E1E1+T1|T1 T1T TT*F|F F(E)|i 其相应的简单优先矩阵如题图5-3所示,试给出对符号串(i+i)进行简单优先分析的过程。题图5-3 文法GE的简单优先矩阵5-4 设有文法GE:EE+T|TTT*F|FF(E)|i其相应的算符优先矩阵如题图5-4所示。试给出

2、对符号串(i+i)进行算符优先分析的过程。(i*+)#(i*+)#题图5-4 文法GE的算符优先矩阵5-5 对于下列的文法,试分别构造识别其全部可归前缀的DFA和LR(0)分析表,并判断哪些是LR(0)文法。(1) SaSbaScab(2) SaSSbaSSSc(3) SA AAba5-6 下列文法是否是SLR(1)文法?若是,构造相应的SLR(1)分析表,若不是,则阐明其理由。(1) SSabbR RSa(2) SaSABBA AaAB Bb(3) SaAbB AcAd BcBdd5-7 对如下的文法分别构造LR(0)及SLR(1)分析表,并比较两者的异同。 ScAdb AASca 5-8

3、对于文法GS:SA ABA BaBb (1) 构造LR(1)分析表;(2) 给出用LR(1)分析表对输入符号串abab的分析过程。5-9 对于如下的文法,构造LR(1)项目集族,并判断它们是否为LR(1)文法。 (1) SA AAB BaBb (2) SaSaa第4章 习题答案2 5-1 解:(1) 由文法的产生式和如答案图5-1(a)所示的句型Aa的语法树,可得G中的部分优先关系如答案图5-1(b)所示。(2) 由答案图5-1(b)可知,在符号A和/之间,即存在等于关系,又存在低于关系,故文法GS不是简单优先文法。 5-2 解:(1) 由文法GS的产生式可直接看出:( )此外,再考察句型P(

4、E)和i*(T*F)的语法树 (见答案图5-2(a)及(b)。由答案图5-2(a)可得: , , ( 由答案图5-2(b)可得: i * , * ( , ( * , * ) (2) 由答案图5-2(a)可知,在终结符号和之间,存在两种算符优先关系: , 故文法GS不是算符优先文法。5-3 解:对符号串(i+i)进行简单优先分析的过程如答案表5-3所示。因为分析成功,所以符号串(i+i)是文法GE的合法句子。答案表5-3 符号串(i+i)的简单优先分析过程步骤分析栈关系当前符号余留输入串句柄所用产生式0#低于(i+i)# 1#(低于i+i)# 2#(i优于+i)# iFi3#(F优于+i)# F

5、TF4#(T优于+i)# TT1T5#(T1优于+i)# T1E1T16#(E1等于+i)# 7#(E1+低于i)# 8#(E1+i优于)# iFi9#(E1+F优于)# FTF10#(E1+T优于)# TT1T 11#(E1+T1优于)# E1+T1E1E1+T1 12#(E1优于)# E1EE1 13#(E等于)# 14#(E)优于#(E)F(E) 15#F优于#FTF16#T优于#TT1T17#T1优于#T1E1T1 18#E1优于#E1EE1 19#E优于#分析成功5-4 解:对符号串(i+i)进行算符优先分析的过程如答案表5-4所示。 因为分析成功,所以符号串(i+i)是文法GE的合

6、法句子。句子(i+i)及其分析过程中所得句型的语法树如答案图5-4所示。答案表5-4 符号串(i+i)的算符优先分析过程步骤分析栈当前栈顶终结符号优先关系当前输入符号余留输入串最左素短语0#(i+i)# 1#((i+i)# 2#(ii+i)# i3#(F(+i)# 4#(F+i)# 5#(F+ii)# i6#(F+F+)# F+F7#(E()# 8#(E)#(E) 9#F#分析成功 5-5 解:(1) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 2.SaSc1.SaSb 3.Sab识别文法GS全部可归前缀的DFA如答案图5-5

7、-(1)所示。因为文法GS的每个LR(0)项目集中都不含冲突项目,所以文法GS是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(1)所示。答案表5-5-(1) 文法GS的LR(0)分析表状态ACTIONGOTOabc#S0123456s2 s2 r3 r1r2 s4s5r3r1 r2s6r3r1r2accr3r1r213(2) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 2.SaSSS1.SaSSb 3.Sc识别文法GS全部可归前缀的DFA如答案图5-5-(2)所示。因为文法GS的每个LR(0)项目集

8、中都不含冲突项目,所以文法GS是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(2)所示。答案表5-5-(2) 文法GS的LR(0)分析表状态ACTIONGOTOabc#S01234567s2 s2 r3s2 s2r1r2 r3r1 r2s3s3 r3s3s3r1r2accr3r1r21457(3) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 2.AAb1.SA 3.Aa识别文法GS全部可归前缀的DFA如答案图5-5-(3)所示。因为在LR(0)项目集I2中含有移进-归约冲突项目,所以文法GS不是LR

9、(0)文法,故构造出的LR(0)分析表中含有冲突动作。文法GS的LR(0)分析表如答案表5-5-(3)所示。答案表5-5-(3) 文法GS的LR(0)分析表状态ACTIONGOTOab#SA01234s3 r1 r3r2 s4 ,r1r3r2accr1 r3r212 5-6 解:(1) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 3.RS1.SSab 4.Ra2. SbR识别文法GS全部可归前缀的DFA如答案图5-6-(1)所示。由答案图5-6-(1)可知,在项目集I1 和I4中都存在“移进-归约”冲突。在项目集I4 = RS

10、, SSab 中, 由于FOLLOR(R)=a,FOLLOR(R)a=a,所以其项目集的“移进-归约”冲突不可能通过SLR(1)规则得到解决,从而该文法不是SLR(1)文法。(2) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 3.AaA1.SaSAB 4.AB2.SBA 5.Bb识别文法GS全部可归前缀的DFA如答案图5-6-(2)所示。答案图5-6-(2) 识别GS全部可归前缀的DFA因为文法GS的每个LR(0)项目集中都不含冲突项目,所以文法GS是LR(0)文法,故也是SLR(1)文法。因为FOLLOW(S)=a,b,#,

11、 FOLLOW(A)=a,b,#, FOLLOW(B)=a,b,#, 所以文法GS的SLR(1)分析表如答案表5-6-(2)所示。答案表5-6-(2) 文法GS的SLR(1)分析表状态ACTIONGOTOab#SAB01234567891011s2 s2 s7r5 s7r2s7r4r1r3s4s4 s4 r5s4r2s4r4s4r1r3accr5r2r4r1r31569113388810(3) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 4.A1.SaA 5.BcBdd2.SbB 6.B3. AcAd识别文法GS全部可归前缀的

12、DFA如答案图5-6-(3)所示。由答案图5-6-(3)可知,在项目集I2 ,I3 ,I5 和I9中都存在“移进-归约”冲突。因为在项目集I2 和I5中, 由于FOLLOR(A)=d,#,FOLLOR(A)c=,所以其项目集的“移进-归约”冲突能通过SLR(1)规则得到解决;又因为在项目集I3 和I9中, 由于FOLLOR(B)=d,#,FOLLOR(B)c=,所以其项目集的“移进-归约”冲突也能通过SLR(1)规则得到解决;所以文法GS是SLR(1)文法。因为FOLLOR(S)=#,FOLLOR(A)=d,#,FOLLOR(B)=d,#,所以文法GS的SLR(1)分析表如答案表5-6-(3)

13、所示。答案表5-6-(3) 文法GS的SLR(1)分析表状态ACTIONGOTOabcd#SAB0123456789101112s2 s3s5s9s5s9r4r6r4s7r3r6s11s12r5accr4r6r1 r4r3r2r6r5146810 5-7 解:在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 3.AASc1.ScAd 4.Aa2.Sb 识别文法GS全部可归前缀的DFA如答案图5-7所示。因为文法GS的每个LR(0)项目集中都不含冲突项目,所以文法GS是LR(0)文法。文法GS的LR(0)分析表如答案表5-7-(a)所

14、示。答案表5-7-(a) 文法GS的LR(0)分析表状态ACTIONGOTOabcd#SA012345678 s4 r2r4r1r3s3r2r4s3r1r3s2r2r4s2r1s8r3r2r4s6r1r3accr2 r4 r1 r3 175因为FOLLOR(S)=#,c,FOLLOR(A)=b,c,d,所以文法GS的SLR(1)分析表如答案表5-7-(b)所示。答案表5-7-(b) 文法GS的SLR(1)分析表状态ACTIONGOTOabcd#SA012345678 s4 s3r4s3r3s2r2r4s2r1s8r3r4s6r3accr2 r1 175两个表的相同之处为:(1) 两个表的GOT

15、O表部分完全相同。(2) 在两个表的ACTION表中,不含归约项目的项目集对应的行的元素完全相同,即第0,2,5,7行完全相同。两个表的不同之处为:在两个表的ACTION表中,含有归约项目的项目集对应的行的元素不同,即第3,4,6,8行的元素不同。以第3行为例,答案表5-7-(a)中的所有元素都为r2 ;而在答案表5-7-(b)中 , 因为FOLLOR(S)=#,c,故仅在“#”和“c”列对应的元素为r2 。5-8 解:(1) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 3.A1.SA 4.BaB2.ABA 5.Bb文法GS的

16、LR(1)项目集及DFA如答案图5-8所示。文法GS的LR(1)分析表如答案表5-8-(1)所示。答案表5-8-(1) 文法GS的LR(1)分析表状态ACTIONGOTOab#SAB01234567s4 s4s4r5r4s5s5s5r5r4r3accr1r3r5r2r4126337(2) 用LR(1)分析表对输入符号串abab的分析过程如答案表5-8-(2)所示。因为分析成功,所以符号串abab是文法GS的合法句子。答案表5-8-(2) 符号串abab的LR分析过程步骤状态栈符号栈余留输入串分析动作下一状态1I0#abab#s442I0I4#a bab#s553I0I4I5 #ab ab#r5

17、GOTOI4 ,B=74 I0I4I7 #aB ab#r4GOTOI0 ,B=35 I0I3 #B ab#s446I0I3I4 #Ba b#s557I0I3I4I5 #Bab #r5GOTOI4 ,B=78 I0I3I4I7 #BaB #r4GOTOI3 ,B=39 I0I3I3 #BB #r3GOTOI3 ,A=610 I0I3I3I6 #BBA #r2GOTOI3 ,A=611I0I3I6 #BA #r2GOTOI0 ,A=212 I0I2 #A #r1GOTOI0 ,S=113 I0I1 #S #acc 5-9 解:(1) 在文法GS中引入一个新的开始符号S,且将SS作为第0个产生式添加到文法G中,从而得到G的拓广文法GS:0.SS 3.A1.SA 4.BaB2.AAB 5.Bb文法GS的LR(1)项目集及DFA如答案图5-9-(1)所示。文法GS的LR(1)分析表如答案表5-9-(1)所示。因为分析表中不含多重定义的元素,所以文法GS是LR(1)文法。答案表5-9-(1) 文法GS的LR(1)分析表状态ACTIONGOTOab#SAB0123456r3 s5r2r5 s5r4r3s4r2r5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论