📜  门| GATE CS 2020 |第 43 题

📅  最后修改于: 2021-09-26 03:04:31             🧑  作者: 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 

以下哪一项是正确的?
(A)规则 1 和规则 2 都是 L 属性的
(B)只有规则 1 是 L 属性的
(C)只有规则 2 是 L 属性的
(D)规则 1 和规则 2 都不是 L 属性的答案:(乙)
说明:根据L-attributed SDT:

  1. 如果一个 SDT 同时使用合成属性和继承属性,并限制继承属性只能从左兄弟节点继承值,则称为 L-attributed SDT。
  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)是正确的。这个问题的测验