The Gateway to Computer Science Excellence

+1 vote

Consider the following grammar and the semantic actions to support that 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$?

- $X_1=L, \: X_2=T, \: X_3=L_1, \: X_4 = L$
- $X_1=T, \: X_2=L, \: X_3=L_1, \: X_4 = T$
- $X_1=L, \: X_2=L, \: X_3=L_1, \: X_4 = T$
- $X_1=T, \: X_2=L, \: X_3=T, \: X_4 = L_1$

+7 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.

+10 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

+2 votes

option 1

see given example https://www.geeksforgeeks.org/s-attributed-and-l-attributed-sdts-in-syntax-directed-translation/

+1 vote

The production

L → L1, id {X3.type = X4.type } ,

Above production has L and L1, hence X3 and X4 can not be T.

So option 1, 3 and 4 cannot be correct.

Hence, A is the correct answer.

L → L1, id {X3.type = X4.type } ,

Above production has L and L1, hence X3 and X4 can not be T.

So option 1, 3 and 4 cannot be correct.

Hence, A is the correct answer.

- All categories
- General Aptitude 1.9k
- Engineering Mathematics 7.5k
- Digital Logic 2.9k
- Programming and DS 4.9k
- Algorithms 4.3k
- Theory of Computation 6.2k
- Compiler Design 2.1k
- Databases 4.1k
- CO and Architecture 3.4k
- Computer Networks 4.1k
- Non GATE 1.5k
- Others 1.5k
- Admissions 595
- Exam Queries 576
- Tier 1 Placement Questions 23
- Job Queries 72
- Projects 17

50,644 questions

56,523 answers

195,607 comments

101,286 users