Consider the syntax directed definition shown below.$$\begin{array}{ll}
S \rightarrow \mathbf{ id :=} E&\qquad \{gen(\mathbf{ id}.place = E.place;);\}\\
E \rightarrow E_1 + E_2 &\qquad \{t = newtemp();\\
&\qquad gen(t = E_1.place + E_2.place;);\\
&\qquad E.place = t;\}\\
E \rightarrow id&\qquad \{E.place = \mathbf{id}.place;\}
\end{array}$$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 $t_i'$s are the temporary variable names generated by $newtemp$. For the statement $\text{‘}X : = Y + Z\text{'},$ the $3$-address code sequence generated by this definition is
- $X = Y + Z$
- $t_1 = Y+Z; X=t_1$
- $t_1 =Y; t_2=t_1 +Z; X=t_2$
- $t_1 =Y; t_2=Z; t_3=t_1+t_2; X=t_3$