编译技术教学课件作者陈文宇05课件幻灯片.pptVIP

编译技术教学课件作者陈文宇05课件幻灯片.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文档。上传文档
查看更多
结构说明的文法 type ? struct {f1}; type ?int type ?char type ?pointer f1 ?f1;f|f f ? type i| type i[n] 处理结构类型说明的基本语义动作 f ? type i {f.NAME:=i.NAME; f.LEN:= type.LEN; FILN(i.NAME, f.LEN)} f ? type i[n] {f.NAME:=i.NAME; f.LEN:= type.LEN*n.VAL; FILN(i.NAME, f.LEN)} f1 ?f {FILO(f.NAME,0); /*第一分量的相对数为0*/ f1.LEN:= f.LEN} f1 ?f1(1);f {FILO(f.NAME,f1 (1).LEN); f1.LEN:= f1(1).LEN, +f1.LEN} type ? struct ‘{’ f1 ‘}’ {type.LEN:=f1.LEN} type ?char {type.LEN:=1} type ?int {type.LEN:=4} type ?pointer {type.LEN:=4} 布尔表达式的翻译 布尔表达式的作用: 计算逻辑值; 用做改变控制沉语句中的条件表达式。 布尔表达式的组成: 是由布尔算符(and,or和not)(或表示为?,?和┓) 施于布尔变量或关系表达式而成。 布尔表达式的翻译方法 控制语句中布尔表达式的翻译 布尔表达式的翻译方法 方法一、步步计算各部分真假值,最后计算表达式的值; 方法二、采取优化措施,只计算部分表达式的值。 示例: 布尔表达式:a or b and not c的四元式翻译 t1:=not c t2:=b and t1 t3:=a or t2 控制语句中布尔表达式的翻译 控制语句的代码结构 E为a rop b翻译的生成代码 if a rop b goto E.ture goto E.false 示例: ab or cd and cf if ab or cd and cf then S1 else S2 控制语句的代码结构 E的代码 S1的代码 E的代码 S1的代码 E的代码 S1的代码 jump out S2的代码 jump begin if E then S1 if E then S1 else S2 while E do S1 (2) 文法及改造 文法:S → if B then S1 用S1的第一条三地址语句的地址回填B.T链。 改写文法: M → if B then S → M S1 B S1 ? B为假 B为真 ? 语义子程序 M → if B then { backpatch(B.T, ip); M.CHAIN := B.F } S → M S1 { S.CHAIN := merg(M.CHAIN , S1.CHAIN) } 例子:if ab then a:=a+b if ab if B B.T=100 100: if a b goto 0 B.F=101 101: goto 0 if B then M backpatch(100,102) M.CHAIN={101} M a:=a+b M A 102: t1=a+b 103: a =t1 M S1 S1.CHAIN={0} S S.CHAIN=merg(M.CHAIN,S1.CHAIN) ={101} 102 4. “if B then S1 else S2”的翻译 语句实例: if a then b:=1; else b:=2; if a then { if b then … } else b:=2; if a then { if b then … else … } else b:=2; if a then { if b …

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档