1、编译原理复习1已知有限自动机如图0.1(1)以上状态转换图表示的语言有什么特征(2)写出其正规式.(3)构造识别该语言的确定有限自动机 DFA.答案(1)至少含有两个连续的1的0,1组合(0 I 1)*11 (0 I 1)*01AAABABAABCABCACABCACACABC重新命名,令 AB为B、ABC为C、AC为D01AABBACCDCDDCDFA:2.试构造与下列文法 GS等价的无左递归文法GS: S Sal Nb I cNSd I Ne I f答案S Sa I Nb I cNNe I Sd I f消除NNe I Sd I f左递归:NSdN I fN N eN I 代入 S Sa I
2、 Nb I c:S Sa I SdN b fNb c消除 S Sa I SdN b I fN bl c 左递归:SfN bSl cS 3考虑下面文法 G1:S a IAI (T)TT, S I S消去 G1 的左递归。然后对每一个终结符,写出不带回溯的递归子程 序。答案SaIAI (T)TSTT,ST I &Void match(token t) if (lookahead=t)lookahead=nexttoken;else error( ); void S( ) if (lookahead=a) match(a);else if (lookahead=A match( else if (l
3、ookahead=() match();T( );if (lookahead=) match();else error( ); else error( ); void T( ) S( );T(); void T() if (lookahead=, ) match( , );S( );T(); 4设有以下文法:GS: S eEfGh | gLFSG | hF SEc|cG | &G Sh | &(1)求出该文法每一个非终结符的 FOLLOW 集。(2)它是 LL(1) 文法吗?为什么?答案(1)FIRST(S)=e,gFIRST(E)=h, c,e,g, FIRST(F)=c,e,g, &FIR
4、ST(G)=e,g, &FOLLOW(S)=#,e,g,h,c,fFOLLOW(E)=f,cFOLLOW(F)=e,gFOLLOW(G)=h,f,c,e,g(2)efghc#SSt eEfGhSTgEEt fsgEtSGEt fsgErhEr fsgEt sgFFt SEcFt SEcFt cGFtFtGG ShGsA ShGeGeGSGe不是LL(1)文法5.设有文法:GS:St aBc | bABA t aAb | bBt b | 构造其LL(1)分析表,并分析符号串baabbb是否是该文法的句子答案FIRST(S)=a,bFIRST(A)=a, b FOLLOW(S)=# FOLLOW(
5、A)=b,#FIRST(B)=b, & FOLLOW(B)=c,#abc#SSt aBcSt bABAA t aAbA t bBBt bBt Bt 步骤下推栈输入串动作查分析表1#Sbaabbb#pop(S),push(bAB)St bAB2# BAbbaabbb #pop(b), next(ip)匹配b3# BAaabbb#pop(A),push(aAb)A t aAb4# BbAaaabbb #pop(a), next(ip)匹配a5# BbAabbb#pop(A),push(aAb)A t aAb6# BbbAaabbb #pop(a), next(ip)匹配a7# BbbAbbb#po
6、p(A),push(b)A t b8# Bbbbbbb #pop(b), next(ip)匹配b9# Bbbbb#pop(b), next(ip)匹配b10# Bbb#pop(b), next(ip)匹配b11# B#pop(B)Bt 12#正确结束所以符号串baabbb是该文法的句子6.下面文法是否是LL(1)文法,说明理由(1) S Ab2 a | B| B b | (2)S aSe |BB bBe|CS a Ce | d7.对下列文法G:S SP S | iS D(R)D iR R; P | P求出每个非终结符的 FIRSTVT集和LASTVT集,并构造算符优先关系表。FIRSTVT(S
7、 ) =(, iFIRSTVT(P) =i,(LASTVT(S ) =)LASTVT(P) =),ii7()#i(#V=ViT=ViF=Vi(=T i(=T+F i(=T+( i(=F+( i(=(+( i(句型F+Fi(的语法树:T F/IX IT + F (IF短语:F, F+F, ( , F+Fi(句柄:F素短语:(,F+F(3)FIRSTVT 禾口 LASTVTFIRSTVTLASTVTSi,+,),(i,+,*,(Vi,+,),(i,+,*,(T+,),(+,(,*F),(,*,(2)算符优先关系i+*()#i+*()#三因为任意两个终结符的优先关系唯一,所以该文法为算符优先文法(3
8、)(+(i(的分析过程步骤下推栈输入串动作1#(+(i (# +归约F (3#F+(i (# +移进4#F+(i(#+ i归约F (6#F+Fi(#+ i归约T T+F7#Ti(# i移进8#Ti(#i #归约F (10#TiF#i #归约V ViT11#V#=#接受9.设文法G(S)SAA aA | b构造识别文法G(S的所有活前缀的DFA.答案10= closure(Si .A)10: S. AA. aAA . b11= closure(goto(IO,A)I1: S A .12= closure(goto(I0,a)I2: A a . AA . aAA . b13= closure(go
9、to(I0,b)I3: A b .14= closure(goto(I2,A) I4: A aA . closure(goto(I2,a)= I2 closure(goto(I2,b)= I310.设文法G,试构造G的LR(0)分析表G: (1)SCC(2)C cC(3)C d答案拓广为:S SS CCC cCC d10 = closure(S S)10 : S SS CCC cC11= closure(goto(IO,S)I1 : SS I2 = closure(goto(I0,C)I2:SC .CC . cCC . dI3 = closure(goto(I0,c)I3:C c .CC .
10、cCC . d14= closure(goto(I0,d) I4: C d .15= closure(goto(I2,C) I5: SCC .closure(goto(I2,c)片 I3 closure(goto(I2,d)= I416= closure(goto(I3,C) I6: C cC .closure(goto(I3,c)片 I3 closure(goto(I3,d)= I4状态actio ngotocd#SC0S3S4121acc2S3S453S3S464r3r3r35r1r1r16r2r2r211.对于文法 A - aA | a构造SLR(1)分析表答案(1)A aA(2)A a拓广为:At aA t aAA t a10= closure(AT. a)I0: At. AAt. aAA t. a11= closure(goto(IO,A)I1: AtA .12= closure(goto(I0,a)I2: Ata . AAt. aAA t. aA ta .13= closure(goto(I2,A)I3: AtaA .closure(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1