《编译原理》(陈火旺版)课后作业参考答案ch6-10_第1页
《编译原理》(陈火旺版)课后作业参考答案ch6-10_第2页
《编译原理》(陈火旺版)课后作业参考答案ch6-10_第3页
《编译原理》(陈火旺版)课后作业参考答案ch6-10_第4页
《编译原理》(陈火旺版)课后作业参考答案ch6-10_第5页
全文预览已结束

下载本文档

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

文档简介

第6章属性文法和语法制导翻译7.下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:S→L.L∣LL→LB∣BB→0∣1试设计求S.val的属性文法,其中,已知B的综合属性c,给出由B产生的二进位的结果值。例如,输入101.101时,S.val=5.625,其中第一个二进位的值是4,最后一个二进位的值是0.125。【答案】产生式语义规则{S.val:=L1.val+L2.val*2-L2.length}S→L1.L2S→L{S.val:=L.val}{L.val:=L1.val*2+B.val;L.length:=L1.length+1}L→L1B{L.val:=B.val;L.length:=1}L→BB→0B→1{B.val:=0}{B.val:=1}11.设下列文法生成变量的类型说明:L→idLL→,idL∣:TT→integer∣real(1)构造一下翻译模式,把每个标识符的类型存入符号表;参考例6.2。【答案】产生式语义规则{S.val:=L1.val+L2.val*2-L2.length}L→idL1L→,idL1L→:T{S.val:=L.val}{L.val:=L1.val*2+B.val;L.length:=L1.length+1}{L.val:=B.val;L.length:=1}T→integerT→real{B.val:=0}第7章语义分析和中间代码产生1.给出下面表达式的逆波兰表示(后缀式):【答案】原式后缀式(1)a*(-b+c)ab-c+*(2)a+b*(c+d/e)abcde/+*+a-bc-d+*+(3)–a+b*(-c+d)(4)notAornot(CornotD)(5)(AandB)or(notCorD)AnotCDnotornotorABandCnotDoror(6)(AorB)and(CornotDandABorCDnotEandorandE)(7)if(x+y)*z=0then(a+b)↑celsea↑b↑cifxy+z*0=thenab+c↑elseab↑c↑3.请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。【答案】三元式(1)(2)(3)(4)(5)(6)(7)+ab-(1)c/+d*++(2)a(3)b(5)(4)c-(6)四元式(1)(2)(3)(4)+abT1T2T3T4-T1/+cd*T2T3(5)(6)(7)++abcT5T6T7T5-T4T6间接三元式(1)(2)(3)(4)(5)(6)+ab-(1)c/+d*(2)(1)(4)(3)c+-(5)间接码表:(1)→(2)→(3)→(4)→(1)→(5)→(6)4.按7.3节所说的办法,写出下面赋值句A:=B*(-C+D)的自下而上语法制导翻译过程。给出所产生的三地址代码。四元式(1)(2)(3)(4)uminusc/DT1T2T3A+*T1BT2:=T3/【答案】5.按照7.3.2节所给的翻译模式,把下列赋值句翻译为三地址代码:A[i,j]:=B[i,j]+C[A[k,l]]+d[i+j]【答案】中间代码中间代码(1)T1:=i*NA2(13)(14)(15)(16)(17)(18)(19)(20)(21)(22)(23)(24)T10:=WA*T8T11:=T9[T10]T12:=C-Cc(2)T1:=T1+j(3)T2:=A-CAT3:=WA*T1T4:=i*NB2T4:=T4+j(4)T13:=Wc*T11T14:=T12[T13]T15:=T7+T14T16:=i+j(5)(6)(7)T5:=B-CBT6:=WB*T4T7:=T5[T6]T8:=k*NA2T8:=T8+l(8)T17:=d-Cd(9)T18:=Wd*T16T19:=T17[T18]T20:=T15+T19T2[T3]:=T20(10)(11)(12)T9:=A-CA6.按7.4.1和7.4.2节的翻译办法,分别写出布尔式Aor(Bandnot(CorD))的四元式序列。【答案】用作数值计算时产生的四元式:用作条件控制时产生的四元式:四元式(1)(2)(3)(4)ornotandorCT1BDT1T2/T2T3T3T4A四元式四元式(1)(jnz,A,-,0)(5)(jnz,C,-,(4))(j,-,-,(7))(2)(3)(4)(j,-,-,(3))(jnz,B,-,(5))(j,-,-,0)(6)(7)(8)(jnz,D,-,(5))(j,-,-,(1))其中:右图中(1)和(8)为真出口,(4)(5)(7)为假出口。7.用7.5.1节的办法,把下面的语句翻译成四元式序列:WhileA<CandB<DdoifA=1thenC:=C+1elsewhileADdoA:=A+2;【答案】四元式四元式(1)(2)(3)(4)(5)(6)(7)(8)(j<,A,C,(3))(9)(j,-,-,(1))(j,-,-,0)(10)(11)(12)(13)(14)(15)(j,A,D,(12))(j,-,-,(1))(j<,B,D,(5))(j,-,-,0)(+,A,2,T2)(:=,T2,-,A)(j,-,-,(10))(j,-,-,(1))(j=,A,1,(7))(j,-,-,(10))(+,C,1,T1)(:=,T1,-,C)第9章运行时存储空间组织4.下面是一个Pascal程序:pro

温馨提示

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

评论

0/150

提交评论