1、第七章 动作文法与属性文法任课教师王养廷主要内容n 属性文法n 继承属性n 综合属性n 属性树n 属性求值n 拷贝型属性文法1 属性文法n 属性文法 带属性的文法 ,1968年 Knuth提出n 作用 描述静态语义n 特点 类似于尾动作文法 属性文法 = 文法产生式 + 属性计算规则 比动作文法 规范 级别高 使用时受到限制1 属性文法n 属性文法的思想 对每个语法符号引进相关的属性符号 对每个产生式写出计算属性的属性规则n 属性文法包括 文法内容 语义内容 属性符号的定义 属性规则的定义1 属性文法n 属性规则的形式= 说明 规则是一个赋值结构 属性变量 属性表达式:包括属性变量和常量1 属
2、性文法n 属性计算 对于产生式 ABC 图 P260 描述属性的计算方法 说明 P261 想象一下,对于一个表达式是如何计算的?1 属性文法n 属性文法思想 每个文法符号定义相关的属性 每个产生式有一个求值规则1 属性文法n 属性分类 继承属性 相当于输入属性 有父结点和兄弟结点的属性值决定 综合属性 相当于输出属性 有本结点的继承属性和子结点的属性决定1 属性文法n 属性定义 为了描述属性,为每个属性定义: 名字 类型 类别 例如表达式 E senv:SEnv denv:DEnv etype:EType eval: EValue Id name: string n val: integer1 属性文法n 属性规则 LX1 X2 Xk /X1.i = e1 Xk.i = ek L.s = e0 /n 注意: 属性规则没有次序 属性规则并不代表要进行属性计算 Xi可以依赖其后面的属性 定义产生式右部的继承属性规则 定义产生式左边的综合属性规则