\[ \textbf{Match all items in Group 1 with correct options from Group 2} \] \[ \begin{array}{ll} \text{Group 1} & \text{Group 2} \\ \hline P.\ \text{Intermediate representation} & 2.\ \text{Code generation} \\ Q.\ \text{Top-down parsing} & 3.\ \text{Leftmost derivation} \\ R.\ \text{Runtime environments} & 1.\ \text{Activation records} \\ S.\ \text{Register allocation} & 4.\ \text{Graph colouring} \\ \end{array} \]
Step-by-step Solution:
\[ \textbf{Explanation:} \] \begin{aligned} &\bullet\ P \to 2:\ \text{Intermediate representation is used as a bridge for optimization and } \\ &\quad\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{code generation in compilers.} \\[6pt] &\bullet\ Q \to 3:\ \text{Top-down parsing expands the start symbol using a } \\ &\quad\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{leftmost derivation strategy.} \\[6pt] &\bullet\ R \to 1:\ \text{Runtime environments are managed through } \\ &\quad\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{activation records (stack frames).} \\[6pt] &\bullet\ S \to 4:\ \text{Register allocation is typically solved using a } \\ &\quad\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{graph colouring approach.} \end{aligned} \] \[ \boxed{P \to 2,\ Q \to 3,\ R \to 1,\ S \to 4} \]