Пять этапов являются поддельными. Например, стандартная ML Нью-Джерси когда-то был 33-проходным компилятором, переходя от исходного кода к машинному коду (без текстового сборка, он записывает машинный код прямо в память). Я сомневаюсь, что есть ровно пять представлений, через которые проходит код. В lcc C компиляторе есть следующие представления:
- Необработанный источник
- Предварительно обработанный источник
- IR Dags
- Текстовая сборка
- Код перемещаемого объекта
- Исполняемый бинарный файл
В наши дни большинство других компиляторов переводят исходный код в абстрактный синтаксис, и на самом деле разработчики lcc ретроспективно заявляют, что они хотели бы использовать деревья абстрактного синтаксиса.
Это похоже на одну из тех печальных ситуаций, когда вам нужно выяснить, что ваш инструктор хочет услышать и отрыгнуть это обратно. И не воспринимайте это слишком серьезно.