属性文法 本节要点 义 ●属性文法 ●属性等式 ●合成属性和继承属性 ●依赖图 ●属性计算顺序 ●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代数语义 ●属性文法(目前流行的方法) ●语义分析和中间代码生成都可以通过在分析树或者语法树上 加标注的方法实现,这些标注称为属性
语义的描述方法 描述方法: ⚫ 自然语言描述 ⚫ 隐藏错误、二义性和不完整性 ⚫ 形式描述: 操作语义 指称语义 代数语义 ⚫ 属性文法(目前流行的方法) ⚫ 语义分析和中间代码生成都可以通过在分析树或者语法树上 加标注的方法实现,这些标注称为属性