编译原理-第十一章语义分析和中间代码生成.pptVIP

编译原理-第十一章语义分析和中间代码生成.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-第十一章语义分析和中间代码生成

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 四、循环语句的翻译 S→for i:=1 to N do S1 其语义为 i:=1; if i?N then begin S1; i:=i+1; goto again end 1.文法及分析 电子科技大学计算机科学与工程学院 again: 代码结构可为: F+0:(:=,’1’,-,i) F+1: (j=,i,N,F+3) F+2: (j,-,-,0) F+3: (S1的四元式序列) … D+0: (+,i, ‘1’,i) D+1: (j,-,-,F+1) 电子科技大学计算机科学与工程学院 2.翻译方案 F→for i:=1 to N do S→F S1 电子科技大学计算机科学与工程学院 (1)为了在生成S1的代码之前生成i:=1等三个语句,必须改写文法。 F.CHAIN:记录前述F+2的地址 F.place:记录i在符号表入口 F.again:记录F+1 电子科技大学计算机科学与工程学院 (2)F具有三个语义值 电子科技大学计算机科学与工程学院 (3)语义子程序 F→for i:=1 to N do { gen(:=,’1’,-,entry(i)); F.again:=ip; gen(j?,entry(i),N,0); F.CHAIN:=ip; gen(j,-,-,0); F.place:=entry(i) } { backpatch(S1.CHAIN,ip); gen (+,F.place,’1’,F.place); gen(j,-,-,F.again); S.CHAIN:=F.CHAIN } 电子科技大学计算机科学与工程学院 S→F S1 F→for i:=1 to N do S1 例4: for I:=1 to N do M:=M+I的翻译 for I:=1 to N do F F M:=M+I F S1 S 电子科技大学计算机科学与工程学院 100: (:=,I,-,1) 101: (j?,I,N,103) 102: (j,-,-,0) F.again=101 F.CHAIN=102 F.place=I 103: (+,M,I,t1) 104: (:=,t1,-,M) S1.CHAIN=0 106: (j,-,-,101) 105: (+,I,1,I) S.CHAIN=102 电子科技大学计算机科学与工程学院 例子 写出 for i=1 to 10 do if A100 then C=C+1; 的中间代码序列。 电子科技大学计算机科学与工程学院 for i=1 to 10 do if A100 then C=C+1; 100: (=,I,1,i) 101: (J=,i,10,103 ) 102: (J, -, -, 0) 103: (J, A, 100, 0) 104: (J, -, -, 0) 105: (+, C,1,t1) 106: (=, t1, ,C) 107: (+,i ,1 ,i) 108: (J,- , - , 101) 109: 105 107 109 电子科技大学计算机科学与工程学院 for i=1 to 10 do if A100 then C=C+1 for i=1 to 10 do F 100: (=,I,1,i) 101: (J=,i,10,103 ) 102: (J, -, -, 0 ) F.again=101 F.Chain=102 F.place=i F if A100 F if B 103: (J, A, 100, 0 ) 104: (J, -, -, 0 ) B.T=103 B.F=104 F if B then F M backpatch(B.T,ip) M.Chain = B.F =104 F M S1 S2.Chain=merge

文档评论(0)

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

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

1亿VIP精品文档

相关文档