我怎样才能找到一个属性是从语法的产生中合成还是继承的?
我猜这个属性必须在问题中预定义——如果它的值取决于子节点或父节点。但是有没有办法分析一个属性是从语法产生中继承还是合成的。
我怎样才能找到一个属性是从语法的产生中合成还是继承的?
我猜这个属性必须在问题中预定义——如果它的值取决于子节点或父节点。但是有没有办法分析一个属性是从语法产生中继承还是合成的。
综合属性:从附加到其非终端子的属性中获取其值的属性。
继承属性:从附加到其非终端的父(或兄弟)的属性中获取其值的属性。
**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 是综合属性。
进一步阅读:属性语法。
从其子节点获取数据值的属性称为综合属性。
这些也称为 s 属性生产。从父节点或兄弟节点获取值的属性称为继承属性。具有继承属性的产生式规则(每个继承的属性仅限于从父级或左兄弟级继承)称为 L 属性产生式。
让我们看看计算器