编译原理(第八章).pptVIP

  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文档。上传文档
查看更多
编译原理(第八章)

四元式是一种常用的中间代码表示形式,为了更直观,也可以将四元式写成赋值语句的形式。 例如:赋值语句a:=b*c+b*d的四元式 (*,b,c,t1) t1=b*c (*,b,d,t2) t2=b*d (+,t1,t2,t3) t3=t1+t2 (:=,t3,-,a) A:=t3 (jump,-,-,L) goto L (jrop,B,C,L) if B rop C goto L 8.4一些语句的翻译 一、 控制语句中布尔表达式的翻译 控制语句 S if E then S 1 else S 2 E 的代码 E .true E.false E .true: S 1 的代码 goto out E.false: S 2 的代码 out: 二、简单赋值语句(的四元式)翻译四元式形式 t:=arg1 op arg2 语义 属性:id.name, E.place 函数:lookup(id.name) ; 过程:emit(t:=arg1 op arg2); newtemp; 产生式 语义描述 (1) S?id:=E { P:=lookup (id.name) ; if P?nil then emit( P“:=”E.place) } (2)?????????? E?E1+E2 {E.place:= newtemp; emit(E.place“:=” E1.place“+”E2.place)} (3)?????????? E?- E1 { E.place:=newtemp; emit(E.place“:=”“uminus” E1.place)} (4)?????????? E?( E1) { E.place:= E1.place} (5)?????????? E?id { P:=lookup(id.name); if P?nil then E.place:=P else error}? 第8章 语法制导翻译和中间代码生成 8.1语义处理概述 8.2属性文法,语法制导翻译 8.3中间代码 8.4一些语句的翻译 语言的语义和编译的语义处理工作: 静态语义检查:审查静态语义 动态语义处理:生成中间(目标)代码 8.1语义处理概述 一、静态语义审查 (1)类型检查。根据类型相容性要求,验证程序中执行的每个操作是否遵守语言的类型系统的过程,编译程序必须报告不符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while、for或switch语句。如果不存在包括它的这样的语句,则就报错。 (3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次,同一case语句的标号不能相同,枚举类型的元素不能重复出现等等。 (4)上下文相关性检查。比如,变量名字必须先声明后引用;而有时,同一名字必须出现两次或多次,

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档