Attribute Grammars.pdf - Compiler2008 AttributeGrammar 6.1.

Info icon This preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Compiler2008 AttributeGrammar Yinliang Zhao 1 第六章 属性文法 语义分析阶段计算编译所需的额外信息,这些信息 与程序的最终含义密切相关,目的: 保证程序正确及正常执行(语言定义) 提高程序运行效率(优化) 语义举例: 建立符号表保存声明中的名字的含义; 类型检查和类型推理 语义表示的困难性 缺乏标准的方法描述语言的语义; 语义分析中的量和种类在不同语言间变化很大; 表示语义的较好的方法 首先标识语言实体 (language entity) 的属性(特 性); 然后写出属性方程(语义规则):表明如何把这 些属性的计算跟文法规则相关联; 属性 + 属性方程 = 属性文法 6.1 属性 属性: 是任意一个跟程序设计语言构造相关的特 性。 属性 所包含的信息、复杂程度、能够确定其 值的时间区间等都有较大的范围。 举例: 变量的类型; 表达式的值; 变量在存储器中的位置; 过程 (procedure) 的目标代码; 数中有效位数。 为语言构造指定属性 给定上下文无关文法,为它的每个文法符号关联 相关的 (称为属性),以表示与这些文法符 号相关的信息。 属性的 binding 计算属性的值及将其跟语言构造建立联系的过程, 属性绑定发生的时刻称为绑定时间 静态:在编译过程中(执行之前) 动态:在执行时 变量的类型; (C/Pascal/Lisp Type Checker) 表达式的值; (Code/Constant Folding) 变量在存储器中的位置; (Static/Dynamic Allocation) 过程 (procedure) 的目标代码; (Static) 数中有意义数字的个数。 (Runtime Env.)
Image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon