Перечисленные шаги работы любого компилятора:
(1) перевод программы на промежуточный язык, не зависящий от системы команд конкретного компьютера
(2) разбор исходной программы и перевод ее во внутреннее представление, удобное для дальнейшей работы
(3) генерация выходного кода на машинном языке
(4) оптимизация кода программы
выстраиваются в следующей последовательности…
(1), (2), (4), (3)
(1), (2), (3), (4)
(2), (1), (3), (4)
(2), (1), (4), (3)