如何找到某个属性是从语法的产生中合成还是继承?
我想因为必须在问题中预定义属性 - 如果它的值取决于子节点或父节点。但有没有办法分析属性是从语法产生继承还是合成。
答案 0 :(得分:9)
Synthesized Attribute :一个属性,它从附加到非终端子节点的属性中获取其值。
继承属性:从附加到其非终端的父(或兄弟)的属性获取其值的属性。
**PRODUCTION** **SEMANTIC RULES**
T->FT’ T’.inh=F.val
T.val=T’.syn
T’->*FT1’ T1’.inh=T’.inh*F.val
T’.syn=T1’.syn
T’->Ɛ T’.syn=T’.inh
F->id F.val=id.lexval
从给定的语法(作品)中可以看出, inh是一个继承属性,syn是一个合成属性 。
答案 1 :(得分:1)
从子节点获取数据值的属性称为合成属性。
这些也被称为s-referenced生产。 从父节点或兄弟节点获取值的属性称为继承属性。具有继承属性的生产规则(每个继承的属性仅限于从父级或左侧兄弟继承)称为L属性生产。
答案 2 :(得分:0)
让我们看看计算器