in Compiler Design retagged by
16,401 views
21 votes
21 votes

Consider the following grammar and the semantic actions to support the inherited type declaration attributes. Let $X_1, X_2, X_3, X_4, X_5$, and $X_6$ be the placeholders for the non-terminals $D, T, L$ or $L_1$ in the following table:

$$\begin{array}{|l|l|} \hline  \text{Production rule} & \text{Semantic action} \\ \hline D \rightarrow T L & X_1.\text{type} = X_2.\text{type} \\ \hline T \rightarrow \text{int} & T.\text{type} = \text{int} \\ \hline T \rightarrow \text{float} & T.\text{type} = \text{float} \\ \hline
L \rightarrow L_1, id & X_3.\text{type}= X_4.\text{type}  \\ 
&\text{addType}(id. \text{entry}, X_5.\text{type})\\ \hline
L \rightarrow id & \text{addType}(id. \text{entry}, X_6.\text{type}) \\ \hline \end{array}$$

Which one of the following are appropriate choices for $X_1, X_2, X_3$ and $X_4$?

  1. $X_1=L, \: X_2=T, \: X_3=L_1, \: X_4 = L$
  2. $X_1=T, \: X_2=L, \: X_3=L_1, \: X_4 = T$
  3. $X_1=L, \: X_2=L, \: X_3=L_1, \: X_4 = T$
  4. $X_1=T, \: X_2=L, \: X_3=T, \: X_4 = L_1$
in Compiler Design retagged by
by
16.4k views

3 Comments

A can take value from S, whereas B can take value from A as well as S.
0
0

In option C X1= L and X2 = L is this allowed in inherited ?

just asking to be clear about it, though as per defination they have said inherit mean from parent or sibling. so it should also be a reason to eliminate option c
0
0

if the 5th option is give. 

  •  T
  • L
  • L1
  • L

is this also true.  

0
0

6 Answers

40 votes
40 votes
Best answer

A node in a parse tree can $\text{INHERIT}$ an attribute either from its parent or its siblings. This means for a production
$$S \to AB,$$ $A$ can inherit values from either $S$ or $B$ and similarly $B$ can inherit values from either $S$ or $A.$

In the given productions, for

$L \to L_1, id,$

$L_1$ can inherit from $L$ or $,$ or $id$ with only $L$ being a non-terminal.

So, this means $X_3$ must be $L_1$ and $X_4$ must be $L$ as $X_i$ is a placeholder for non-terminals. 

Only option A matches this. 

selected by
by

4 Comments

Thank you so much @codeitram
0
0

@Arjun Sir,

A can inherit values from either S or B 

I think sir it will be A can inherit values from S. 

0
0

@samarpita you are confusing inherited attributed grammar with L-attributed grammar . 
In case of L-attributed grammar A can take value only from S but in case of inherited attributes A can take values from  S or B .

note :- every L attributed grammar is inherited attributed grammar but every inherited grammar is not L-attributed.

10
10
16 votes
16 votes

Inherited attributes :a attribute that gets its values from the attributes attached to the parent (or siblings) of its non-terminal.

Now in question first semantics $X1 \cdot \text{Type} = X2 \cdot \text{Type}$. $X1$ inherit value from $X2$  it means $X1$ can be $L$ or $T$ same for $X2$. Option C ruled out.

$X3 \cdot \text{type}=X4 \cdot \text{type} X3$ should be  $L1$  and $X4$ should be $L$ according to definition. Option B,D ruled out

So answer is A

https://en.m.wikipedia.org/wiki/Attribute_grammar

edited by

2 Comments

Very good explanation. Cleared all my doubts :)
0
0
Thanks ,Easy way to approach the question
0
0
5 votes
5 votes

See might be it works. PLZ view page 1 then page 2 for better understanding. Also take a input example and yrself verify the situation :

edited by

2 Comments

what's the source for images ?
0
0
myself ….
1
1
3 votes
3 votes
Answer:

Related questions