《编译原理》课程教学资源:第六章 属性文法

属性文法 本节要点 义 ●属性文法 ●属性等式 ●合成属性和继承属性 ●依赖图 ●属性计算顺序 ●S-属性文法和-属性文法
属性文法 本节要点 ⚫ 语义 ⚫ 属性文法 ⚫ 属性等式 ⚫ 合成属性和继承属性 ⚫ 依赖图 ⚫ 属性计算顺序 ⚫ S-属性文法和L-属性文法

属性文法 本节要点 属性文法的应用 ●值的计算 ●类型计算 ●抽象语法树生成 翻译模式
属性文法 本节要点 ⚫ 属性文法的应用 ⚫ 值的计算 ⚫ 类型计算 ⚫ 抽象语法树生成 ⚫ 翻译模式

语义分析、属性文法 主要参考资料 程序设计语 实践之路 Michael L. Scott, Programming Languages Pragmatics, Morgan Kaufmann,2000,2005) 中文版由表宗燕译电子工业出版社出版,2005 ●2编译原理及实践 Kenneth C. Louden机械工业出版社.1997 3程序设计语言编译原理(第3版).陈火旺国防工业出版社2000 4编译原理李建中等译机械工业出版社.2005 (Compilers Principles, Techniques, and Tools)
语义分析、属性文法 主要参考资料 ⚫ 1.程序设计语言——实践之路 Michael L. Scott, Programming Languages Pragmatics, Morgan Kaufmann, 2000, 2005) 中文版由裘宗燕译.电子工业出版社出版,2005 ⚫ 2.编译原理及实践.Kenneth C.Louden.机械工业出版社.1997 ⚫ 3.程序设计语言编译原理(第3版).陈火旺.国防工业出版社.2000 ⚫ 4.编译原理.李建中等译.机械工业出版社.2005 ⚫ (Compilers Principles,Techniques, and Tools)

语义 法分析关注程序的结构、而语义关注的是 程序的意义。 语义:一组规则,用它可以定义一个程序的 意义 ●语义规则可分为静态语义和动态语义 编译器在编译期间推行静态语义规则,生成的代 码在执行时实施动态语义规则 有些错误不可能在编译时捕获,必须推迟到程序 执行时,如:被0除,数组下标越界等
语义 语法分析关注程序的结构,而语义关注的是 程序的意义。 语义:一组规则,用它可以定义一个程序的 意义。 语义规则可分为静态语义和动态语义 ⚫ 编译器在编译期间推行静态语义规则,生成的代 码在执行时实施动态语义规则 ⚫ 有些错误不可能在编译时捕获,必须推迟到程序 执行时,如:被0除,数组下标越界等

请语义的描述方法 ●描述方法: ●自然语言描述 ●隐藏错误、二义性和不完整性 ●形式描述: 操作语义 指称语义 a代数语义 ●属性文法(目前流行的方法) ●语义分析和中间代码生成都可以通过在分析树或者语法树上 加标注的方法实现,这些标注称为属性
语义的描述方法 描述方法: ⚫ 自然语言描述 ⚫ 隐藏错误、二义性和不完整性 ⚫ 形式描述: 操作语义 指称语义 代数语义 ⚫ 属性文法(目前流行的方法) ⚫ 语义分析和中间代码生成都可以通过在分析树或者语法树上 加标注的方法实现,这些标注称为属性

语义分析器的角色 不同的语言语义分析器扮演不同的角色 强制不同 ● FORTRAN和C允许在表达式中混合使用各种类型 Ada类的语言根本不允许 ●执行动态检查多少不同 ●C语言几乎不做,除了硬件顺便做的(除0,数组越界等) ●Java尽可能地检查许多规则,以便保证无法信任的程序不会对其 运行所在的机器的存储或文件造成任何破坏。 通常语义分析器创建一棵带标注的语法树,随后由中 间代码生成器 线性化为某种理想机器的汇编语 ●语义分析和中间代码生成可以与语法分析交错进行, 也可单独作为一遍
语义分析器的角色 不同的语言语义分析器扮演不同的角色 ⚫ 强制不同 ⚫ FORTRAN和C允许在表达式中混合使用各种类型; ⚫ Ada一类的语言根本不允许。 ⚫ 执行动态检查多少不同 ⚫ C语言几乎不做,除了硬件顺便做的(除0,数组越界等) ⚫ Java尽可能地检查许多规则,以便保证无法信任的程序不会对其 运行所在的机器的存储或文件造成任何破坏。 通常语义分析器创建一棵带标注的语法树,随后由中 间代码生成器将它线性化为某种理想机器的汇编语言。 语义分析和中间代码生成可以与语法分析交错进行, 也可单独作为一遍

2.6.1属性文法 属性文法(属性翻译文法) Knuh在1968年提出 ●在上下文无关文法的基础上,为每个文法符号 终结符或非终结符)配备若干相关的“值”(称为 属性)。 ●属性描述文法符号对应程序结构的特性,如: ●变量的数据类型 ●符号表 ●表达式的值。 存储器中变量的位置 程序的目标代码 数的有效位数
2.6.1 属性文法 属性文法(属性翻译文法) ⚫ Knuth在1968年提出 ⚫ 在上下文无关文法的基础上,为每个文法符号 (终结符或非终结符)配备若干相关的“值”(称为 属性)。 ⚫ 属性描述文法符号对应程序结构的特性,如: ⚫ 变量的数据类型。 ⚫ 符号表 ⚫ 表达式的值。 ⚫ 存储器中变量的位置 ⚫ 程序的目标代码 ⚫ 数的有效位数

2.6.1属性文法 属性的表示: 属性直接与语言的文法符号终结符号或非终结符号) 相联系。如果X是一个文法符号,a是X的一个属性 那么我们把与X关联的a的值记作Xa ●属性可以进行计算和传递 语义规则:对于文法的每个产生式都配备了 组属性的计算规则(属性等式 ●属性文法可看成是上下文无关文法+语义规
2.6.1 属性文法 属性的表示: ⚫ 属性直接与语言的文法符号(终结符号或非终结符号) 相联系。如果X是一个文法符号,a 是X的一个属性, 那么我们把与X关联的a的值记作X.a。 属性可以进行计算和传递 语义规则:对于文法的每个产生式都配备了 一组属性的计算规则(属性等式) 属性文法可看成是上下文无关文法+语义规 则

属性等式 若有一个属性的集台a1∴,ak,语法制导语义 的原理应用于每个文法规则 Xo→X1X2Xn(Xo∈vN,X∈NVN∪V)),每 个文法符号X的属性X1a的值与规则中其他符号的 属性值有关。如果同一个符号X在文法规则中出现 不止一次,那么每次必须用合适的下标与在其他地 方出现的符号区分开来。每个关系用属性等式或语 义规则表示,形式如下 ajij(Ao·a1,∴…,A0·ak X1a1, X. a k
若有一个属性的集合a1 , . . . , ak ,语法制导语义 的原理应用于每个文法规则 X0→X1 X2 . . .Xn ( X0∈VN,Xi∈(VN∪VT ) ),每 个文法符号Xi的属性Xi .aj的值与规则中其他符号的 属性值有关。如果同一个符号Xi在文法规则中出现 不止一次,那么每次必须用合适的下标与在其他地 方出现的符号区分开来。每个关系用属性等式或语 义规则表示,形式如下: Xi.aj=fij(X0.a1,...,X0.ak, X1.a1,...,X1.ak,...,Xn.a1,...,Xn.ak ) 属性等式

思考 ●为什么在属性等式中说“如果同一个符 号X在文法规则中出现不止一次,那么 每次必须用合适的下标与在其他地方出 现的符号区分开来”?
思考 为什么在属性等式中说“如果同一个符 号Xi在文法规则中出现不止一次,那么 每次必须用合适的下标与在其他地方出 现的符号区分开来”?
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《编译原理》课程教学资源:第八章 符号表.ppt
- 《编译原理》课程教学资源:第四章 对象和环境.ppt
- 《编译原理》课程教学资源:第五章 YACC.ppt
- 《编译原理》课程教学资源:第二章(2-4-1)One parse tree only.ppt
- 《编译原理》课程教学资源:第二章(2-4)语法分析一自上而下分析.ppt
- 《JavaScript》权威指南简介.ppt
- 《编译原理》课程教学资源:第三章 正则表达式常应用于文本匹配:.ppt
- 《编译原理》课程教学资源:第二章(2-3-1)对于词法分析器的要求.ppt
- 《编译原理》课程教学资源:第二章 词法分析 2.6 利用Lex自动生成扫描程序.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.1 程序语言的语法描述.ppt
- 《编译原理》课程教学资源:第一章(1-2)编译简介.ppt
- 《编译原理》课程教学资源:语义分析和中间代码产生.ppt
- 《编译原理》课程教学资源:Chapter 5 Procedure Activations.ppt
- 《互联网软件应用与开发》综合复习材料.doc
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第四章 门电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第六章 时序逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第五章 组合逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第二章 半导体基本器件.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第三章 开关理论基础.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第七章 存储器和可编程逻辑器件.ppt
- 《编译原理》课程教学资源:第五章(5-2)过程激活.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.5 语法分析——自下而上分析.ppt
- 《编译原理》课程教学资源:教学计划.doc
- 《编译原理》课程教学资源:第十章 优化.ppt
- 《编译原理》课程教学资源:属性文法.ppt
- 《体系结构》第二章 计算机指令集结构设计.doc
- 《体系结构》第三章 流水线技术.doc
- 《体系结构》第五章 存储层次.doc
- 《体系结构》第六章 输入输出系统.doc
- 《体系结构》第一章 计算机体系结构的基本概念.doc
- USB系统研究(学位论文)USB System Study.pdf
- 《微型计算机原理与接口技术》第10章 串行通信接口.ppt
- 《微型计算机原理与接口技术》第11章 人机交互接口技术.ppt
- 《微型计算机原理与接口技术》第12章 模拟量输入输出接口技术.ppt
- 《微型计算机原理与接口技术》第1章 微型计算机基础知识.ppt
- 《微型计算机原理与接口技术》第2章 典型微处理器.ppt
- 《微型计算机原理与接口技术》第3章 指令系统与汇编语言程序设计.ppt
- 《微型计算机原理与接口技术》第4章 半导体存储器及其接口.ppt
- 《微型计算机原理与接口技术》第5章 总线技术.ppt
- 《微型计算机原理与接口技术》第6章 基本输入输出接口技术.ppt