网站大量收购独家精品文档,联系QQ:2885784924

第8章语法制导翻译和中间代码(8学时).pptVIP

第8章语法制导翻译和中间代码(8学时).ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * if ab then 1 else 0 对应的四元式: (1) if ab goto (4) (2) t:=0 (3) goto (5) (4) t:=1 (5) … if ab then x:=a+b else x:=a+b*3 对应的四元式: (100) if ab goto (104) (101) t1:=a+b (102) x:=t1 (103) goto (107) (104) t1:=b*3 (105) t2:=a+t1 (106) x:=t2 (107)… * 翻译不是最优 * * * if E then S1 else S2对应的逆波兰式为: E S1 S2 ¥ 则 第(7)题对应的逆波兰式为: xy+z*0= sab+c* := sab*c* := ¥ 第(7)题对应的四元式序列为: (1) t1:=x+y (2) t2:=t1*2 (3) if t2=0 goto (8) (4) t3:=a*b (5) t4:=t3*c (6) s:=t4 (7) goto(11) (8) t5:=a+b (9) t6:=t5*c (10) s:=t6 * t5:=a+b不能省略,只有在代码优化时才能删去。 * * * E?not E1 { E.true := E1.false; E.codebegin := E1.codebegin; E.false := E1.true; } (2) E?E1 and E2 { backpatch(E1.true, E2.codebegin); E.codebegin := E1.codebegin; E.true := E2.true; E.false := merge(E1.false, E2.false); } (3) E?E1 or E2 { backpatch(E1.false, E2.codebegin); E.codebegin := E1.codebegin; E.true := merge(E1.true, E2.true); E.false := E2.false; } 布尔表达式译为四元式的语义描述: (4) E?(E1) { E.true := E1.true; E.codebegin := E1.codebegin; E.false := E1.false; } (5) E?id1 rop id2 { E.true := nextstat; E.codebegin := nextstat; E.false := nextstat + 1; emit(‘if’,id1.place,‘rop’,id2.place,‘goto’,–); emit(‘goto’,-); } (6) E?id { E.true := nextstat; E.codebegin := nextstat; E.false := nextstat + 1; emit(‘if’,id1.place,‘goto’,–); emit(‘goto’,-); } 控制语句 S ? if E then S1 else S2 E.false E 的代码 E .true E .false: S 2 的代码 goto out E.true: S 1 的代码 out: 控制语句中布尔表达式的翻译 举例 将下列控制语句翻译成四元式 if ab or cd and ef then S1 else S2 控制语句中布尔表达式的翻译 if ab goto (i+1) //i+1是S1的入口 if cd goto (4) goto (6) if ef goto (i+1) [关于S2的四元式] ┋ (i) goto (n) //n是S1的出口 (i+1) [关于S1的四元式] ┋ (n) 例 for I:=1 step 1 until N do M:=M+I 对应的四元式 For循环语句的翻译 I:=1 goto (4) I:=I+1 if I=N goto (6) goto (9) T:=M+I M:=T goto (3) …… 课堂练习 1(1)(2)(5)(6)(7) 2 [逆波兰式、三元式、四元式序列] 3 5 6 7 课后 1 (1)a*(-b+c) ab一c+

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档