编译原理习题参考答案.doc_第1页
编译原理习题参考答案.doc_第2页
编译原理习题参考答案.doc_第3页
编译原理习题参考答案.doc_第4页
编译原理习题参考答案.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

程序设计语言与编译语言的设计与实现(第2版)习题4答案4-5 解:上下文有关文法(1型文法),产生的语言L(G)=aibici | i1,i为整数4-6 解:3型文法,L(G)=ai | i1,i为奇数4-7 解:2型文法,L(G)=aibi | i1,i为整数4-8 解:1型文法,L(G)=aibici | i1,i为整数4-9 解:1. 最左推导最右推导S (A) (B) (SdB)S (A) (B) (SdB) (A)dB) (B)dB) (SdS) (Sda) (S)dB) (b)dB) (A)da (B)da) (b)dS) (b)da) (s)da (b)da)2. 语法树4-10解:1. 因为存在推导S SbF SbP Sbc Fbc FaPbc所以FaPbc是文法G (S) 的一个句型。2. 语法树4-11解:因为串aaabaa可有下列两棵不同的语法树所以文法G (S)是二义文法。4-12解:因为串i (*可有下列两棵不同的语法树习题9答案9-2解:(1)消除文法G的产生式直接左递归。ASeA | fA AdA | e (2)消除间接左递归:按S.A排序,将S的产生式代入有AAaeA | AbeA | ceA | fA (3)消除的直接左递归有AceAA | fAA AaeAA | beAA | e (4)对S的产生式提公因子有SAB | c B| a | b (5)最后,文法G提取公因子,消除左递归后的产生式由, , , 和组成,无多余的产生式。(6)若按A.S排序,得到的产生式组合是另外的形式,但它们是等价的文法,读者可以试试。9-3解:消除左递归后,得文法G:S(L) | aLSLL, SL | e递归下降过程: Procedure match(t:token); begin if lookahead=t then lookahead=nexttoken else error end procedure S; begin if lookahead=a then match(a) else if lookahead=( then begin match(); L; if lookahead=) then match() else error end end procudure L; begin S; L; end procudure L; begin if lookahead=, then begin match(,) S; L end end9-6解:(1)G(S):SAS S:AS | e ABA A+BA | e BbS* | a (2)FIRST集和FOLLOW集FIRSTFOLLOWSb,a#,*S:,e#,*Ab,a#,*,:A+,e#,*,:Bb,a#,*,:,+预测分析表a:+b*#SSASSASSS:ASSeSeAABAABAAAeA+BAAeAeBBaBbS*(3)因为预测分析表无多重定义入口,所以G是LL(1)文法。9-7解:对习题9-3的文法G消除左递归后,得文法G: S(L) | a LSL L, SL | e FIRST集和FOLLOW集FIRSTFOLLOWS(,a),#L(,a)L,e)预测分析表()a,#SS(L)SaLLSLLSLLLeL, SL因为预测分析表无多重定义入口,所以文法G是LL(1)文法。习题10答案10-1解:(1)规范规范推导(最右推导)最右推导SABASbAABbbBABb(2)语法树(推导树)(3)短语 bB, AB, ABb, bBABb 直接短语 bB, AB 句柄 bB 最左素短语 bB10-2解:(1)因为存在推导SSbFFbFFaPbFFaPbPFaPbc所以FaPbc是文法G的一个句型。(2)语法树(3)短语 FaP, c, FaPbc 直接短语 FaP, c 句柄 FaP 最左素短语 FaP10-3解:拓广文法0.SS1.SAS2.Sb3.ASA4.AaLR(0)项目集规范族I0=closureSS I1=GO(I0,S) I2=GO(I0,A) I3=GO(I0,b)SS SS SAS SbSAS ASA SAS GO(I1,a)=I4Sb ASA Sb GO(I2,A)=I2ASA Aa ASA GO(I2,b)=I3Aa SAS Aa SbI4=GO(I0,a) I5=GO(I1,A) I6=GO(I1,S) I7=GO(I2,S)Aa ASA ASA SAS SAS ASA ASA SAS Ab ASA Sb SAS Aa ASA Sb SAS Aa Sb GO(I1,b)=I3 GO(I2,a)=I4FOLLOW(S)=a, b, #FOLLOW(A)=a, b 状态5在输入a时有S4和r3的移进归约矛盾。 状态5在输入b时有S3和r3的移进归约矛盾。 状态7在输入a时有S4和r1的移进归约矛盾。 状态7在输入b时有S3和r1的移进归约矛盾。 文法G既不是LR(0)文法,也不是SLR(1)文法。10-4解:(1)最左推导 S(T)(T,S)(S,S)(a,S)(a,(T) (a,(T,S)(a,(S,S)(a,(a,S)(a,(a,a) 最右推导 S(T)(T,S)(T,(T)(T,(T,S)(T,(T,a) (T,(S,a)(T,(a,a)(S,(a,a)(a,(a,a) 最左推导 S(T)(T,S)(S,S)(T),S)(S),S)(T,S),S) (T,S,S),S)(S,S,S),S)(T),S,S),S) (T,S),S,S),S)(S,S),S,S),S)(a,S),S,S),S) (a,a),S,S),S)(a,a),S),S)(a,a),(T),S) (a,a),(S),S)(a,a),(a),S) =(a,a),(a),S)(a,a),(a),a)最右推导S(T)(T,S)(T,a) (S,a)(T),a)(T,S),a) (T,(T),a)(T,(S),a)(T,(a),a)(T,S,(a),a) (T,(a),a)(S,(a),a)(T),(a),a) (T,S),(a),a)(T,a),(a),a)(S,a),(a),a) (a,a),(a),a)(2)对句子(a,(a,a)的移进归约栈的变迁如下:其中,(3),(4),(8),(9),(12),(13),(15),(16),(18)共进行9次归约,最右推导也是9次推导,正好是递过程。归约(3)的句柄是a,语法树如图(1)所示。归约(4)的句柄是S,语法树如图(2)所示。归约(8)的句柄是a,语法树如图(3)所示。归约(9)的句柄是S,语法树如图(4)所示。归约(12)的句柄是S,语法树如图(5)所示。归约(13)的句柄是T,S,语法树如图(6)所示。归约(15)的柄是(T),语法树如图(7)所示。归约(16)的句柄是T,S,语法树如图(8)所示。归约(18)的句柄是(T),语法树如图(9)所示。图(9)即是完整的语法树。图中的下标是为了区分归约过程中同名文法符号和便于理解而添加的,实际是没有的。对句子(a,a),(a),a)的规约栈变迁如图(10)所示。图(10)规范推导(最右推导)一共进行17步推导,归约过程也进行了17次归约,语法树如图(11)所示,其中的下标可表明其形成的先后。图(11)10-7解:0.SSFOLLOW(S)=$1.SABFOLLOW(A)=b,c2.BcBdFOLLOW(B)=d,$3.Bcd4.AaAb5.AabI0=closureSSSSI4=GO(I2,B)I9=GO(I5,d) SAB SAB Bcd AaAbI5=GO(I2,c)I10=GO(I6,b) Aab BcBd AaAbI1=GO(I0,S) BcBdI11=GO(I8,d) SS Bcd BcBdI2=GO(I0,A) Bcd SABI6=GO(I3,A) BcBd AaAb Bcd GO(I3,a)=I3I3=GO(I0,a)I7=GO(I3,b) AaAb Aab AabI8=GO(I5,B) AaAb BcBd Aab GO(I5,c)=I5上述状态集没有移进归约冲突,(a)是SLR文法,分析表如下:abcd$SAB0S3121acc2S543S3S764r15S5S986S107r5r58S119r3r310r4r411r2r2习题11答案11-1解:11-3解: 推导树如下:(1)EiEVAL=B设四元式初始编号ip=100(2)EiEVAL= C(3)E-EEVAL=T1(101)(,c,-,T1)(4)EiEVAL=D(5)EE+EEVAL=T2(101)(+,T1,D,T2)(6)EE*EEVAL=T3(103)(*,B,T2,T3)(7)Si:=E(104)(:=,T3,-,A)11-4解:结果为333645211。11-5解:(1)E1CDE1F=101(100)(BE2F=103(102)(,A,B,104)(4)E1E*EE1VAL=T1(103)(j,-,-,0)(5)E2E+EE2VAL=T2(104)(*,2,z.T1)(6)Ai:=E2Achain=0(105)(+,y,T1,T2)(7)SAS1chain=0(106)(:=,T2,-,x)(8)SWS1S1chain=103(107)(j,-,-,102)(9)Sif E1 thenS1Schain=103习题12答案(3)优化结果(3) B:=10(4) A:=A+8(5) if B100 then goto (8)(6) B:=B+10(7) goto (4)(8) write A12-2解:(1)基本块(2)程序流图 B1 (1)(3) B2 (4)(5) B3

温馨提示

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

评论

0/150

提交评论