1、编译原理期末大题1. 设有如下文法 G(S ) ,试消除其左递归。G(S):SAc|cABb|bBSa|a解:SabcS|bcS|cS, SabcS| 2. 试构造与下面 G(S)等价的无左递归的文法。G(S):SSa|Nb|cNSd|Ne|f解:SfNbS|cS, SaS|dNbS| , NeN|3. 设有文法 G(S):SaBc|bABAaAb|bBb|求各产生式的 FIRST集,FOLLOW(A)和 FOLLOW(B),以及各产生式的 SELECT集。构造 LL(1)分析表,并分析符号串 baabbb是否是。解:(1)FIRST(aBc)=a, FIRST(bAB)=b FIRST(aA
2、b)=a, Ab: FIRST(Ab)=b, Bb: FIRST(b) = b, FIRST()= FOLLOW(A)=b, #, FOOLOW(B)=c, #SELECT(SaBc)=a, SELECT(SbAB) =b, SELECT(AaAb)=a, SELECT(A b)=b, SELECT(Bb)=b, SELECT(B )=c, #因此,所得的 LL(1)分析表如表 A-4 所示。表 A-4 LL(1)分析表输入符号输入VN a b c #S SaBc SbABA AaAb AbB Bb B B (2)分析符号串 baabbb 成功,baabbb 是该文法的句子,如图 A-16 所
3、示。步 骤 符 号 栈 输 入 串 所 用 的 产 生 式 1 #S babb# SbAB 2 #BAb babb# 3 #BA abb# AaAb 4 #BbAa abb# 5 #BbA abb# AaAb 6 #BbAa abb# 7 #BbA bb# Ab 8 #Bbb bb# 9 #Bb b# 10 #Bb b# 1 #B # B 12 # # 成 功 图 A-16 识别串 baabbb 的过程4. 对下列文法 G(S):SD(R) RR;P|PPS|I Di计算文法 G中每个非终结符的 FIRSTVT集和 LASTVT集。构造文法 G的算符优先关系矩阵。解:(1)FIRSTVT(S)
4、=(, i,FIRSTVT(D) =i,FIRSTVT(R)=;, (, i,FIRSTVT(P)=i, (,LASTVT(S)=) ,LASTVT(D)=i,LASTVT(R) = ;, ), i,LASTVT(P)=i, )(2)算符优先矩阵,如表 A-5 所示。表 A-5 优先矩阵( ) ; i #( B) ; i# B5. 已知文法 G(S):Sa|(T)TT,S|S给出句子(a,a),a)的最左推导并画出语法树;给出句型(T,a,(T)所有的短语、直接短语、素短语、最左素短语、句柄和活前缀。解:(1)最左推导:S (T) (T,S) (S,S) (a,S) (a,(T) (a,(T,
5、S)(a,(S,S) (a,(a, S) (a,(a,a)语法树:如图 A-16 所示。S( T )T , SSa( T )SaaT , S图 A-16 (a,(a,a)的语法树(2)句型(T, a, (T)的短语、直接短语、素短语、最左素短语、句柄、活前缀及语法树(图 A-17) 。短语:a | T,a | (T) | T , a , (T) | (T , a , (T)直接短语:a | (T)素短语:a | (T)最左素短语:a句柄:a活前缀: | ( | (T | (T , | (T , aS( T )T , ST , Sa( T )图 A-17 (T,a,(T)的语法树6. 设文法()
6、为: 求()项目集族;构造识别文法()的;构造文法()的 SLR()的分析表;分析句子的识别过程。解:(1) 、 (2)LR(0)项目集族和识别活前缀的 DFA,如图 A-19 所示。图 A-19 LR(0) I0: SS Sa SaAb Sb SbBa I1: S S I2: Sa SaAb A1A0 A I3: Sb SbBa B1B0 B I8: SaAb I4: SaAb I10: SbBa I6: SbBa I5: A1A0 A1A0 A I7: B1B0 B1B0 B I9: A1A0 I1: B1B0 I12: A1A0 I13: B1B0 S1abB1A1B0a10Ab项目集族和 DFA(3) 、 (4)略。