欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第8章语法制导翻译和中间代码生成doc.docx

    • 资源ID:5787346       资源大小:118.77KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第8章语法制导翻译和中间代码生成doc.docx

    1、第8章语法制导翻译和中间代码生成doc给出下面表达式的逆波兰表示(后缀式):(1)a*fb+c)(2)if(x+y)*z=O then s : =(a+b)*c else s : =a答案: 给出卜面农达式的逆波兰表示(后缀式):(1) ab-c+*xy+z*O=sab+c*:=sab*c*:=Y (注:表示 if-then-else 运算)如果写成这样:xy+z*O=sab+c*:=sabc*:=,则是错谋的,因为写表达式和赋值语句 的屮间代码序列,或是写它们的代码生成过程,必须注意按照算符优先序进彳亍,这实际上是 按照LR分析过程进行的。例如:写出赋值语句a:=a+b*c*(d+e)的四元

    2、式中间代码,当前四元 式序号为100o不能写成:100(+,d,e,tl)101(*,b,c,102(*,t2,tl,t3)103(+,a,t3,t4)104(:=t4,-,a)应该写成:100(*,b,c,tl)101(+,d,e,t2)102(*,tl,t2,t3)103(+,a,t3,t4)104(:=,t4,-,a)请将表达式乜+b尸(c+d)-(a+b+c)分别表示成三元式、间接三元式、四元式序列、树形、 逆波兰,当前序号为100。答案:三元式: (+,a,b)(十,c, d)(*,(D,)令业的计算机学习网站103(3), 0104(+, a,b)105(+,c)106G (4),

    3、 (6)间接三元式:间接三元式序列间接码表100 什 a, b)(100)101什,c, d) (101)102(, (1), (2) (102)103 (- (3),/) (103)105(4),(1) (105)或者:间接三元式:100(+,a,b)101(+,c, d)102(車,(1), (2)103(,(3),0104(+,,c)105G,(4),(1)四元式:101什,c, d, t2)102U2,t3)103(WM104(+, a, b,105(+, t5, c,106t4, t6, t7)树形:+ +z za be d逆波兰:ab+cd+*-ab+c+-典型例题:写出 if A

    4、 and B and C D then if AB then F:=lelse F:=0else G:=G+1;的四尤式序列,典型例题: 写出 WHILE AC AND BD DOIF A=1 THEN C:=C+1 ELSEWHILE A=D DO A:=A+2;的四尤式序歹lj。(100)(jv,A,C,102)(101)(101)(jVBD,104)(103)(104)(j= A, 1,106)(105)(106)(+,C,1,T)(107)(:=,T,-,C)(108)(Jr,-,100)(109)(jn语义动作print E.VALEAAL : =E1AAL+E:AALE.VAL :

    5、 =E1.VAL*E:AALE.VAL : =El.VALEAAL : =n.LEXVAL如采用LR分析方法,给出表达式(5*4+8)*2的语法树并在各结点注明语义值VALo答案:S St=Eet采用语法制导翻译思想.表达式E的“值”的描述如下:产生式(0) SJE(1)EtE】+E(2)E-EUE2Et(E】)(4) E-n语义动作print E.VALE.VAL : =E1.VAL+EZ.VALE.VAL : =E1AAL*E:AALE.VAL : =E1AALEAAL : =n.LEXAJL假如终结符n可以是整数或实数,算符+和巒的运算对象类型一致,语义处理增加“类 型匹配检査3请给出相

    6、应的语义描述。答案:(0) SE if errors 1 then print E VAL(1)EtE】+e2 ifEl.TYPE=int AND E2.TYPE=int thenbeginEVAL:=E】VAL + E.VAL;E.YTPE:=int;endelse lfElTYPEeal AND E2.TYPE=real then begmE.VALuEvaL + EVAL; E.YTPE:=ieal;endelse eiTor=l(2)b-EE2 ifb1 TYPb=int AND E2 TYPb=iiit thenbeginE/VAL:=e1.VAL * E.VAL;E.YTPE:=i

    7、nt;endelse if ETYPE=real AND E2.TYPE=real then begmE VAL:=EVAL e.VAL;E YTPE:=real;endelse eiTor=l(3)Et(E) E VAL=EVAL;E TYPE4TYPE (4)E-n E VALn.LEXVAL;ETYPE:=n.LEXTYPE 令Swl为下面的文法由S生成的二进制数的值(如,对于输入101.101, S.val=5.625);S9L.L | LL-LB | BB-0|l按照语法制导翻译的方法,对每个产生式给出相应的语义规则.(中国科学院计算所1995 年)答案:加入新的开始符号S和规则ST

    8、S,得到增广文法。语法制导泄义如卜:产生式语义规则STSpnnt(S.val)S-LbL2S.val:=Li .val+Li.val/?12 lengthS9LS.val:=L.valL-LiBL.val:=Li.val*2+B.valL length:=L 】.length+1L9BL.val:=B.valL.length:=lB今0B val:=0B-1B.val:=l如果题目是 S:=L.L|L L:=LB|B B:=0| 1 则写成:S:=S pniit(S.val);S:=LbL2 S.val:=L val+L2.vaV2L2 kngth ;S:=L S.val:=L.val; L:

    9、=LiB L.val: =Li.val 2+B.x*al; L.length:=Li lengtli+1; L:=B L.val:=B.val; L.lengtli:=l;B:=0 B.val:=0; B:=l B.val:=l;下面文法产生的表达式是对整型和实型常数应用算符+形成的。当两个整数相加时,结果 为整数,否则为实数。E 今 E+T|TT-num.num | num(1)给出语法制导定义确定每个子表达式的类型。(2)把表达式翻译成前缀形式,并且决定类型。试用一元运算符inttoreal把整型值 转换为相等的实型值.以使得前缀表达式中两个运算对象是同类型的.答案:(1 )设type是综

    10、合属性,代表各非终结符的“类熨属性 语法制导定义产生式语义规则ETE1+TIF (E1 trpe=integer) and (T.type=mteger) THEN E.type:=integerELSEE.type:=realE-TE.type:=TtypeT-num.nuniT.type:=realT-nuinT.type:=integer(2)设code 为综合属性,代表各非终结符的代码属性 type为综合属性,代表各非终结符的类型属性 inttoreal把整型值转换为相等的实型值vlochar将数值转换为字符串语法制导定义产生式语义规则StEprint E.codeETE1+TIF (

    11、El .type=integer) aiid (T.type=integer) THEN beginE.type:=integerE.code=屮|Ei.code |T.code;endELSE beginE.type:=realIF E1 type=integer THENbeginEl.type:=realEl val:=inttoreal(El.val)E1 .code=vtochar(E 1 .val) endIF T.type:=mteger THEN beginTtype:=realT.val:=mttoreal(T.val)T.code=xlochai(T.val)endE.co

    12、de=屮|Ei code|T.code;EndE-TE.type:=T.typeE.val:=T.valE.code=xlocliar(b.val)T-num.numTtype:=realT val:=iium num lexvalT.code=vtochar(T val)T-numT.type:=integerT.val:=num.lexvaT.code=vtochar(T val)假设变量的说明是由下列文法生成的:D9iLL-4L| :TT-integer | real建立一个语法制导定义,把每一个标志符的类型加在符号表中。答案:type为综合属性,代表类型厲性,函数addtype实现向符

    13、号表中i对应项填类型信息。语法制导定义产生式语义动作DT1LD Type:=L Type addtype(i. entry D type)LL1L.Type:=Ll.Type addtype(i. entry: L.type)L9TL. type :=T. typeT - integerT typemtegerT-realT.type:=real 专业的计算机学习网站附加题问题1:请将下列语句while (AD) then X:=Y+Z 翻译成四元式答案:假定翻译的四元式序列从(100)开始:(100)if AB goto (102)(101)goto (107)(102)if CT*FT.

    14、val=T!. val拿F valT -FT. val=F. va 1F -(E)F. val=E. va 1F TdigilF. valdigi t.lexval答案:T.val=58T.val=29F.val=2E.val=29digit. lexval=2E.val=28 +T.val=lT.val=28F.val=lT.val=4 *F.val=7digit. lexval=lF.val=4digit. lexval=7digit. lexval=4问题3:请按语法制导的定义.将后缀表达式翻译成中缀表达式。注意,不允许出现冗余括号, 后续表达式的文法如下,EEE+E-*EE*E-id答

    15、案:语法制导定义产生式语义规则S-*Eprint E.codeEf E1E2+E.code=Ei .code| M-Ei-code; E.op=+E-EiE2*IF Ei op=+ AND E2.op=,+, THENE.code=”(”|Ei.codey|*C|E2.code):ELSE IF Ebop=屮THENE.code=VI|EiCode|y|,*,|E2.code;ELSE IF E2 op=+*THENE.code=Ei.code|,*,|(*|E2.code|y;ELSE E.code=Ei.code| * |E2.code|;EidE.code:=id lexeme;问题4:

    16、有文法:Sf(L)|aL-L,S|S给此文法配上语义动作子程序(或者说为此文法写一个语法制导定义),它输出配对括号 的个数。如对于句子(a,(a,a),输出是2(中国科学院计算所1994)答案:加入新开始符号S和产牛式SS,设num为综合屈性.代表值属性则语法制导定义 如卜:产生式语义规则s-spnnt(S.mun)S-(L)S num:=L niun+1SaS.niim:=OL-*L1,SL nuin:=L 1 nuni+S.numL-SL.num:=S.num问题5:文法G的产生式如下:S-*(L)|aL-L,S|S1试写出一个语法制导定义,它输出配对括号个数;2写一个翻译方案,打印每个a

    17、的嵌套深度。如(a),町,打印2,1。(中国科学院软件所1999)答案:为S,L引入综合属性num,代表配对括号个数;语法制导定义产生式语义动作SSpiint(S.num)S(L)S.num:=L.num+lSaS num =0L-L1,SL.nxim:=Ll num+S.nuinL SL.num:=S.muii引入继承属性f,代农腋套深度S-* S.f:=O SS-*rC L.f:=S.fH;L7Sf a print(S.f);L-Ll.f:=Lf;LI, Sf:=L.fSL-Sf=L. f;s问题6:对下面的文法,只利用综合属性获得类型信息.D9L,id | LL9T idT -int |

    18、 real答案:语法制导定义产生式语义规则DTL,idD.type:=L.type addtype(id. entry, L .type)DTLD.type【=L.typeLTTidL. type :=T. type addtype(id. entry,T. type)T-intT.type:=integerT-realT.type:=real问题7:下面文法产生的表达式是对整型和实型常数应用算符+形成的。当两个整数相加时,结果 为整数,否则为实数。E-TRR -+ TR| eT-num.num | num町给出语法制导定义确定每个子表达式的类型。b)把表达式翻译成前缀形式,并且决定类型试用一

    19、元运算符inttoreal把整型值转换为相 等的实型值,以使得前缀表达式中两个运算对象是同类型的。答案:a)设type是综合属性,代表各卄终结符的“类熨”屈性设m是继承属性,翻译方案产生式i吾义规则ETTRR.i:=T.typeE.Type:=R.sR-+TR1IF (R i=integer) and (T.type=integer) THENRl.i:=integerELSERl.i :=iealRs:=Rl.sR- R s:=R.iT-num.nuniT.type:=realT-numT.type:=integerb)设屈性s利11用传递屈性type,属性t利I j用传递属性vaL, )专

    20、业的计算机学习网站翻译方案产生式语义规则E讥Ri:=T.type R.j:=T.valRE.Type:=R s E val:=R tRT+TIF (R.i=integer) and (T.type=integer) THEN BEGINRl.i:=integerPnnt(+,R.j,T.val)Rl.j:=R.j+T.valENDELSE BEGINRl.i :=iealIF R i=integer THENBegin R.i:=realR.j:=inttoreal(R.j)EndIF T type=integer THENBegmT.type:=realT.val =mttoreal(T.v

    21、al)EndPrint(+R j 工 val)Rl.j :=R.j+T.valENDR1Rs:=Rl.s R 上=Rl.tRT R s:=R 1 R t:=R jT -num.numTtype :=realT.val: =num.num lexvalT-numT.type:=integerT.val: =num. lexval 专业的计算机学习网站问题8:翻译算术表达式a*- (b+c)为町一棵语法树b)后缀式C)三地址代码答案:a)语法树:b)后缀式:a b c + imunus * C)三地址代码: tl :=b + c t2 := tl t3 := a * t2问题9:翻译算术表达式-v

    22、:=uutial to finalE mit := mitial.placeE.filial := final.place问题12:写出说明语句中的名字和类型及相对地址的翻译模式,以允许在形如Did : T的说明 中可用一串名字表来代替单个名字答案:产生式动作PTDoffset := 0DTDQDidLenter(id name , L.type , offset) offset := offset + L.widthLd,LlL.type := Ll.typeL.width :=L l.width entei(id name , Ll.type , offset) ofifcet := offset + LI.width LTL.type := T.typeL.width := T.widthT - integerT type := integer T.width := 4T-realT.type := real T.width := 8T-array num of T1T type:=array(num xral, Tl .Type T.width := num.val Tl.Widtli)T-AT1T.type :=pointer(Tl


    注意事项

    本文(第8章语法制导翻译和中间代码生成doc.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开