编译原理99剖析.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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文档。上传文档
查看更多
第六章 属性文法和语法制导翻译 编译程序的功能和组织结构 表 处 理 词 法 分 析 源 程 序 目 标 程 序 错 误 处 理 语 法 分 析 语义 分析 和 中间 代码 生成 目 标 代 码 生 成 前 端 后 端 中 间 代 码 优 化 本章学习内容 本章介绍有关语义描述及语义处理的问题。其处理的方法主要是属性文法和语法制导翻译。 掌握:属性文法,语法制导翻译的概念 理解:如何在自下而上分析中实现S-属性计算。 第六章 属性文法和语法制导翻译 6.1 属性文法 6.2 语法制导翻译的概述 6.3 S-属性文法的自下向上的计算 6.1 属性文法 属性文法: 是在上下文无关文法的基础上为每个文法符号配备若干个相关的 “值”(称为属性);对于文法的每一个产生式配备一组属性的“计算规则”(称为语义规则)。 属性和变量一样,可以进行计算和传递。 属性加工的过程即是语义处理的过程 代表与文法符号相关的信息,例如它的类型、值、代码序列?、符号表内容等等。 6.1 属性文法 属性: 综合属性:用于“自下而上”传递信息 在语法树中,一个结点的综合属性的值由其子结点的属性值确定。 继承属性:用于“自上而下”传递信息 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。 继承属性和综合属性 例: E → P P.env := E.env; E.val := P.val; E1 → P+E2 P.env := E1.env E2.env := E1.env E1.val :=P.val+E2.val P → n P.val :=n.val P → id P.val :=Lookup(P.env,id.name) P → (E) E.env := P.env P.val := E.val 6.1 属性文法 语义规则: 对应于每个产生式A??都有一套与之相关联的语义规则,每条语义规则的形式为: b:=f(c1,c2,…,ck) 这里f是一个函数,并满足下面的条件之一: (1)b是A的一个综合属性并且c1,c2,…ck是产生式右边文法符号的属性; (2)b是产生式右边某个文法符号的一个继承属性并且c1,c2,…ck是A或产生式右边任何文法符号的属性 在这两种情况下,我们都说属性b依赖于属性c1,c2…,ck. 用于“自下而上”传递信息 在语法树中,一个结点的综合属性的值由其子结点的属性值确定 用于“自上而下”传递信息 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。 6.1 属性文法 特别强调: 终结符只有综合属性,由词法分析器提供; 非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值。 属性计算规则中只能使用相应产生式的文法符号的属性。 一般而言: 出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则. 出现在产生式左边的继承属性和出现在产生式右边的综合属性由其它产生式的属性规则计算或由属性计算器的参数提供 例6.1 计算器程序的属性文法(表6.1) 产生式 语义规则 S’?E print(E?val) E ?E1+T E ?val := E1 ? val+T ? val E ?T E ?val := T ? val T ?T1*F T ?val := T1 ? val*F ? val T ?F T ?val := F ? val F ?(E) F ?val := E? val F ?digit F ?val := digit?lexval 每个文法符号有一个val属性,属性值的设置和语法结构的语义以及翻译程序的需要有关。 6.1 属性文法 语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码生成等。语义规则可能产生副作用(如产生代码),也可能不是变元的严格函数(如某个规则给出可用的下一个数据单元的地址)。这样的语义规则通常写成过程调用,或过程段(如上例中的pri

文档评论(0)

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

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

版权声明书
用户编号:5341224344000002

1亿VIP精品文档

相关文档