综合属性和继承属性
Last updated
Last updated
结点N的属性值由N的产生式所关联的语义规则来定义;
通过N的子节点或N本身的属性值来定义;
结点N的属性值由N的父节点所关联的语义规则来定义;
依赖于N的父节点、N本身和N的兄弟节点上的属性值;
不允许N的继承属性通过N的子节点上的属性来定义,但允许N的综合属性依赖于N本身的继承属性;
终结符号有综合属性(来自词法分析),但是无继承属性(方便属性的定义)
只包含综合属性的SDD称为S属性的SDD。每个语义规则都根据产生式体中的属性值来计算头部非终结符号的属性值。
S属性的SDD可以和LR语法分析器一起实现,栈中的状态/文法符号可以附加相应的属性值,归约时,按照语义规则计算归约得到的符号的属性值。
语义规则一般不应该有复杂的副作用。要求副作用不影响其他属性的求值,没有副作用的SDD称为属性文法(Attribute Grammar)。方便语义信息的计算,每次可以专注于当前的产生式。