15 views

Suppose that we have a production $A\rightarrow BCD$. Each of the four nonterminals $A, B, C,$ and $D$ have two attributes: $s$ is a synthesized attribute, and $i$ is an inherited attribute. For each of the sets of rules below, tell whether

1. the rules are consistent with an S-attributed definition
2. the rules are consistent with an L-attributed definition, and
3. whether the rules are consistent with any evaluation order at all?

1. $A.s=B.i+C.s.$
2. $A.s=B.i+C.s$ and $D.i=A.i+B.s.$
3. $A.s=B.s+D.s$
4. $A.s=D.i,B.i=A.s+C.s,C.i=B.s,$ and $D.i=B.i+C.i.$
| 15 views

$A\rightarrow BCD$
a. $A.s=B.i+C.s$

This is L attributed SDD. Attributes of parent node can take values from their children

b. $A.s=B.i+C.s,$ $D.i=A.i+B.s$

A cannot have inherited attribute. Since, there is nothing present on the LHS of A. So this SDD is neither S attributed nor L attributed

c. $A.s=B.s+D.s$

A's synthesized attribute is a function of synthesized attributes of its children. This confirms to S attributed definition. Every S attributed SDD is also L attributed SDD

d. $A.s=D.i,$ $B.i=A.s+C.s,$ $C.i=B.s,$ $D.i=B.i+C.i$

In the rule B.i=A.s+C.s. Here B's inherited attributed is taking values from its right sibling C. This violates L-attributed definition which says that inherited attributes are limited to take values from its parents or left siblings only. Hence, this SDD is not L-attributed
by Active (5k points)
edited by