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

《编译原理》教学课件合集(共9章)非AI生成.ppt

《编译原理》教学课件合集(共9章)非AI生成.ppt

  1. 1、本文档共695页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

五、使用回填翻译控制流语句文法:(1)S→ifEthenS(2)S→ifEthenSelseS(3)S→whileEdoS(4)S→beginLend(5)S→A(6)S→L;S(7)L→SS表示语句 L表示语句表A为赋值语句 E为一个布尔表达式*E的代码S1的代码JMP0S2的代码c.nextlistE.flaseE.trues1.nextlistt.nextlists2.nextlists.nextlistelsethenIfEthens1elses2目标结构If语句的跳过else部分的语句;while语句的break部分*E的代码S1的代码c.nextlistE.flaseE.trues1.nextlistthenIfEthenS1目标结构*E的代码S1的代码E.flaseE.trues1.nextlistdoWhileEdoS1目标结构w.heads.nextlistIf语句的跳过else部分的语句;while语句的continue部分*文法:(1)C→ifEthen(2)T→CS1else(3)S→TS2(4)S→CS1(8)S→beginLend(9)S→A(10)S→L;MS(11)L→S(5)W→while(6)U→WEdo(7)S→US1*修改后文法的翻译模式:(1)C→ifEthen(2)T→CS1else{BACKPATCH(E.TRUE,nextquad)C.nextlist=E.false}{q=nextquademit(j,-,-,-)T.nextlist=MERG(S1.nextlist,q)BACKPATCH(C.nextlist,nextquad)}*(3)S→TS2(4)S→CS1(5)W→while(6)U→WEdo{S.nextlist=MERG(T.nextlist,S2.nextlist)}{S.nextlist=MERG(C.nextlist,S1.nextlist)}{W.Head=nextwuad}{BACKPATCH(E.true,nextquad)U.nextlist=E.falseU.Head=W.Head}*(7)S→US1(9)S?A(10)L?L1;MS{BACKPATCH(S1.nextlist,U.Head)emit(J,-,-,U.head)S.nextlist=U.nextlist}{S.nextlist:=null}{backpatch(L1.nextlist,M.quad); L.nextlist:=S.nextlist}(11)L?S{L.nextlist:=S.nextlist}(12)M?ε{M.quad=nextquad}*总结:先记录要回填的转移指令地址,(8)S?beginLend{S.nextlist:=L.nextlist}在适当的时候进行回填,以便赋值和布尔表达式的求值得到合适的连接,以完成程序的控制流程。*例7.6使用自底向上的分析法生成四元式目标代码.ifa<bandc<dande<fthenX=1elseX=2; wh

文档评论(0)

188****7976 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档