编译原理计算题.doc_第1页
编译原理计算题.doc_第2页
编译原理计算题.doc_第3页
编译原理计算题.doc_第4页
编译原理计算题.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1. 按指定类型给出下列语言的文法。(1) L1= canbm| n0,m0 用正规文法。答案:ScA AaA|aB|a BbB|b2文法GS为: SSdT | T TTG | G G(S) | a试给出句型adT(S)的短语、简单(直接)短语、句柄和最左素短语答案:短语:a, T, (S), T(S), adT SaQ = SaR = Sae = Qae = QbRae所以句型 QbRae 是规范句型(2)语法树:略 句柄:QbR9 已知文法GS: SaBc|bABAaAb|bBb|(1) 构造其LL(1)分析表;判断符号串baabbb是否为该文法的句子(写出含有符号栈、输入串和规则的分析过程)。其中判断“baabbb是该文法句子”为2分,其他错一个扣0.5分,扣完为止符号栈输入串规则$S$BAb$BA$BbAa$BbA$BbbAa$BbbA$Bbbb$Bbb$Bb$b$baabbb$baabbb$aabbb$aabbb$abbb$abbb$bbb$bbb$bb$b$SbABAaAbAaAbAbBsuccess9 (共15分)已知文法GE: EETE|(E)|i T*|+(1)文法存在左递归(P87),消除左递归后的文法为:E(E)E|i E(2分)ETEE| (2分)T*|+ (1分)(2)(5分)没考虑#扣0.5分,其它错或少写一个扣0.5分FIRST(E)=(,i FIRST(E)=*,+, FIRST(T)=*,+ FOLLOW(E)=),*,+,# FOWLLOW(E)= ),*,+,# FOLLOW(T)=(,i(3)每错一个扣0.5分,全错或不写不得分,扣完为止,共5分()i*+#EE(E)EEiEEE ETEEE ETEEE E TT*T+10. 判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表,并写出aabbb的分析过程。SaD DSTe| TbM MbH HM|答案:abe#SSaDDDSTeDDTTbMMMbHHHMH步骤栈输入串动作(规则右部逆序入栈)0#Saabbb#Push SaD1#Daabbb#Pop a2#Dabbb#Push DSTe3#eTSabbb#Push SaD4#eTDaabbb#Pop a5#eTDbbb#Push D6#eTbbb#Push TbM7#eMbbbb#Pop b8#eMbb#Push MbH9#eHbbb#Pop b10#eHb#Push HM11#eMb#Push MbH12#eHbb#Pop b13#eH#出错,故句子不合法11、考虑以下文法: D T V T int | float V id ,V | ida. 在该文法中提取左公因子。b. 为所得的文法的非终结符构造First集合和Follow集合。c. 说明所得的文法是LL(1)文法。d. 为所得的文法构造LL(1)分析表e. 假设有输入串 int x,y,z 写出相应的LL(1)分析程序的动作答案:a. 文法存在左公因子,提取左公因子后的文法为: D T VT int | floatV id VV ,V |b. 非终结符First集合Follow集合D int , float $ T int , float id V id $ V , , $ c. (1) First ( TV ) = int , float First(int) First(float)=intfloat=; First(id V)=id; First(,V) First()=, =; (2) V=, First(V)Follow(V)= , , $ = 根据LL(1)文法的定义判断,此文法是LL(1)文法;d. LL(1)分析表为:intfloatid,$DD TVD TVTT intT floatVVidVVV ,VVe. 输入串int x,y,z的LL(1)分析:步骤分析栈输入串分析程序的动作1$Dint x,y,z$D TV2$VTint x,y,z$T int3$V intint x,y,z$int匹配4$Vx,y,z$VidV5$ Vxx,y,z$x匹配6$ V,y,z$V ,V7$ V,y,z$, 匹配8$ Vy,z$VidV9$ Vyy,z$y匹配10$ V,z$V ,V11$ V,z$, 匹配12$ Vz$VidV13$ Vzz$z匹配14$接受12、考虑以下的文法:E ( L ) | aL L , E | Ea. 为这个文法构造LR(0)项目的DFA。b. 判断这个文法是否是LR(0)文法?若不是,请描述出LR(0)冲突,如果是,则构造LR(0)分析表。c. 判断这个文法是否为SLR(1)文法?若是,构造SLR(1)分析表。d. 显示分析栈和输入串(a),a,(a,a)的SLR(1)分析程序的工作。答:拓广文法:(0) E E(1) E ( L ) (2) E a(3) L L , E (4) L Ea( I0:EE E(L) EaI2:E(L) LL,ELEE(L)Ea Ad I3:EaI1:E EI4:E(L)LL,E I5:L EE(aELI6:E(L), I7:LL,EE(L)Ea(a I8:LL,EE是LR(0)文法, LR(0)分析表为:ACTIONGOTOa(),$EL0S3S211acc2S3S2s4543r2r2r2r2r24S6S75r4r4r4r4r46r1r1r1r1r17S3S288r3r3r3r3r3非终结符Follow集合E $ E), , ,$L), , 是SLR(1)文法,SLR(1)分析表为:ACTIONGOTOa(),$EL0S3S211acc2S3S2s4543r2r2r24S6S75r4r46r1r1r17S3S288r3r3步骤分析栈输入ACTIONGOTO1$0(a),a,(a,a)$S22$0(2(a),a,(a,a)$S23$0(2(2a),a,(a,a)$S34$0(2(2a3),a,(a,a)$r255$0(2(2E5),a,(a,a)$r446$0(2(2L4),a,(a,a)$S67$0(2(2L4)6,a,(a,a)$r158$0(2E5,a,(a,a)$r449$0(2L4,a,(a,a)$S710$0(2L4,7a,(a,a)$S311$0(2L4,7a3,(a,a)$r2812$0(2L4,7E8,(a,a)$r3413$0(2L4,(a,a)$S714$0(2L4,7(a,a)$S215$0(2L4,7(2a,a)$S316$0(2L4,7(2a3,a)$r2517$0(2L4,7(2E5,a)$r4418$0(2L4,7(2L4,a)$S719$0(2L4,7(2L4,7a)$S320$0(2L4,7(2L4,7a3)$r2821$0(2L4,7(2L4,7E8)$r3422$0(2L4,7(2L4)$S623$0(2L4,7(2L4)6)$r1824$0(2L4,7E8)$r3425$0(2L4)$S626$0(2L4)6$r1127$0E1$acc13、把下面的语句翻译成四元式序列。 (只给出最后结果,设LABEL当前值为100)while AC do if A0 then A:=A+1 else A:=A+2答:100:j ,A ,C ,102101:j ,- ,- ,110102:j ,A ,0 ,104103:j ,- ,- ,107104:+ ,A ,1 ,T1105:= ,T1 ,- ,A106:j ,- ,- ,100107:+ ,A ,2 ,T2108:= ,T2 ,- ,A109:j ,- ,- ,100110:S.NEXT=10114试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。答案:wab+cde10-/+8*+15、设有基本块 T1:2 T2:10/T1 T3:SR T4:SR A:T2 * T4 B:A T5:SR T6:T3 * T5 B:T6 (1) 画出DAG图; (2) 假设基本块出口时只有A,B还被引用,请写出优化后的四元序列。T3T6T1 T45SR2B10T2T4AB+-*T5T3:=S-RT4:

温馨提示

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

评论

0/150

提交评论