- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 语法制导翻译和中间代码生成 学习目标: 掌握: 常见语法成分的中间代码形式; 常见语法成分的属性文法或翻译方案 理解: 属性文法、语法制导翻译方法 语义分析基础 语义分析的内容 主要是类型相容检查,有以下几种: 各种条件表达式的类型是不是boolean型? 运算符的分量类型是否相容? 赋值语句的左右部的类型是否相容? 形参和实参的类型是否相容? 下标表达式的类型是否为所允许的类型? 函数说明中的函数类型和返回值的类型是否一致? 其它语义检查: V[E]中的V是不是变量,而且是数组类型? V.i中的V是不是变量,而且是记录类型?i是不是该记录的域名? x+f(…)中的f是不是函数名?形参个数和实参个数是否一致? 每个使用性标识符是否都有声明?有无标识符的重复声明? 在语义分析同时产生中间代码,在这种模式下,语义分析的主要功能如下: 语义审查 在扫描声明部分时构造标识符的符号表 在扫描语句部分时产生中间代码 语义分析方法 语法制导翻译方法 使用属性文法为工具来说明程序设计语言的语义。 8.1 属性文法 8.2 语法制导翻译概论 8.3 中间代码形式 8.4 基本语言成分的自下而上语法制导翻译 8.5 自上而下的语法制导翻译 8.1 属性文法(Attribute Grammar) 属性 对文法的每一个符号,引进一些属性,这些属性代表与文法符号相关的信息,如类型、值、存储位置等。 语义规则 为文法的每一个产生式配备的计算属性的计算规则,称为语义规则。 属性文法是带属性的一种文法 它的主要思想: 首先对于每个文法符号引进相关的属性符号; 其次对于每个产生式写出计算属性值的语义规则 属性文法的形式定义 一个属性文法是一个三元组,A=(G, V, F) G是一个上下文无关文法; V是属性的有穷集; F是关于属性的断言的有穷集。 说明: 每个属性与文法符号相联,N.t表示文法符号N的属性t。属性值又称语义值。存储属性值的变量又称语义变量。 每个断言与文法的某个产生式相联,写在{ }内。属性的断言又称语义规则,它所描述的工作可以包括属性计算、静态语义检查、符号表的操作、代码生成等,有时写成函数或过程段。 例 完成类型检查的属性文法 E→T1+T2 {T1.t=int AND T2.t=int} E→T1 or T2 {T1.t=bool AND T2.t=bool} T→num {T.t :=int} T→true {T.t :=bool} T→false {T.t :=bool}? 属性的分类: 综合属性: 从语法树的角度来看,如果一个结点的某一属性值是由该结点的子结点的属性值计算来的,则称该属性为综合属性。 内在属性是综合属性。 用于“自下而上”传递信息 继承属性 从语法树的角度来看,若一个结点的某一属性值是由该结点的兄弟结点和(或)父结点的属性值计算来的,则称该属性为继承属性。 用于“自上而下”传递信息 说明: 终结符只有综合属性,它们由词法分析器提供 非终结符既有综合属性也有继承属性,但文法开始符没有继承属性 例 简单算术表达式求值的属性文法 L→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 }? 8.2 语法制导翻译概论 语法制导翻译 基本思想: 在语法分析过程中,随着分析的步步进展,每当使用一条产生式进行推导(对于自上而下分析)或归约(对于自下而上分析),就执行该产生式所对应的语义动作,完成相应的翻译工作。 语法制导翻译法不论对自上而下分析或自下而上分析都适用 例 简单算术表达式求值的属性文法 E→E1+T { E.val :=E1.val +T.val } E→T { E.val :=T.val } T→T1*digit { T.val :=T1.val * digit.lexval } T→digit { T.val :=digit.lexval }? 语法制导翻译的实现途径 以自下而上( LR分析)的语法制导翻译来说明 将LR分析器能力扩大,增加在归约后调用语义规则的功能 增加语义栈,语义值放到与符号栈同步操作的语义栈中,多项语义值可设多个语义栈 ,栈结构为: 例 简单算术表达式求值的属性文法 L →E {print(E.val)} E→E1+T { E.val :=E1.val +T.val } E→T { E.val :=T
您可能关注的文档
- 第八章第4讲离散系统频率响应.ppt
- 第八章第一节 假设检验.ppt
- 第八章第九节圆锥曲线的综合问题(理科).doc
- 第八章第三节基态多电子原子核外电子排布.ppt
- 第八章第三节2.ppt
- 第八章管理的组织职能(组织行为学清华大学,詹正茂).ppt
- 第八章粉碎过筛混合.ppt
- 第八章糖代谢有氧分解.ppt
- 第八章纳米固体材料的微观结构.ppt
- 第八章线性与非线性方程组的迭代解法.ppt
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
原创力文档


文档评论(0)