考虑乘积A→PQ和A→XY。五个非终端A,P,Q,X和Y分别具有两个属性:s是综合属性,而i是继承属性。请考虑以下规则。
Rule 1: P.i=A.i+2, Q.i=P.i+A.i, and A.s=P.s+Q.s
Rule 2: X.i=A.i+Y.s and Y.i=X.s+A.i
以下哪一项是TRUE?
(A)规则1和规则2均为L归因
(B)只有规则1被归为L
(C)只有规则2被归为L
(D)规则1和规则2都不属于L属性答案: (B)
说明:根据L归因的SDT:
- 如果SDT既使用合成属性又使用继承属性,但有一个限制,即继承属性只能从左同级继承值,则称为S属性。
- L深度SDT中的属性通过深度优先和从左到右的解析方式进行评估。
- 语义动作放在RHS中的任何位置。
所以,
Rule 1: P.i=A.i+2, Q.i=P.i+A.i, and A.s=P.s+Q.s
规则1根据定义属于L属性。
然而,
Rule 2: X.i=A.i+Y.s and Y.i=X.s+A.i
规则2不是L属性的,因为此表达式(X.规则2:i = Ai + Ys)不能满足L属性的定义。
Xi = Ai + Ys失败,因为X从其右边存在的同级中获得值,即(A→XY)。
选项(B)是正确的。这个问题的测验