Type checking verifies that operations in a program are applied to compatible types, this is a matter of meaning (semantics), not just structure or spelling. Let's check each compiler phase:
Only the phase that attaches semantic computation to the grammar structure is equipped to check types.
Therefore, the correct answer is Syntax directed translation.