- 1、本文档共94页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 语法制导翻译和中间代码生成 学习目标: 掌握: 常见语法成分的中间代码形式; 常见语法成分的属性文法或翻译方案 理解: 属性文法、语法制导翻译方法 语义分析基础 语义分析的内容 主要是类型相容检查,有以下几种: 各种条件表达式的类型是不是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
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)