GATE 2003
February 13, 2024Compiler-Design
February 13, 2024Question 9637 – Compiler-Design
Consider the syntax directed definition shown below.
S → id := E {gen (id.place = E.place;);}
E → E1 + E2 {t = newtemp ( );
gen(t = E1.place + E2.place;);
E.place = t}
E → id {E.place = id.place;}
Here, gen is a function that generates the output code, and newtemp is a function that returns the name of a new temporary variable on every call. Assume that ti’s are the temporary variable names generated by newtemp. For the statement ‘X: = Y + Z’, the 3-address code sequence generated by this definition is
Correct Answer: B
Question 46 Explanation:

X = Y + Z
t1 = Y + Z; X = t1
t1= Y; t2 = t1 + Z; X = t2
t1 = Y; t2 = Z; t3 = t1 + t2; X = t3
