📜  门| GATE CS 2020 |第43章

📅  最后修改于: 2021-06-29 10:41:33             🧑  作者: Mango

考虑乘积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:

  1. 如果SDT既使用合成属性又使用继承属性,但有一个限制,即继承属性只能从左同级继承值,则称为S属性。
  2. L深度SDT中的属性通过深度优先和从左到右的解析方式进行评估。
  3. 语义动作放在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)是正确的。这个问题的测验