Дизайн компилятора - Архитектура
Компилятор можно в общих чертах разделить на две фазы в зависимости от того, как они компилируются.
Фаза анализа
Известный как интерфейс компилятора, analysis На этапе анализа компилятор считывает исходную программу, разделяет ее на основные части, а затем проверяет наличие лексических, грамматических и синтаксических ошибок. На этапе анализа создается промежуточное представление исходной программы и таблицы символов, которые должны быть переданы на этап синтеза в качестве входных данных. .
Фаза синтеза
Известный как серверная часть компилятора, synthesis phase генерирует целевую программу с помощью промежуточного представления исходного кода и таблицы символов.
У компилятора может быть много фаз и проходов.
Pass : Проход относится к обходу компилятора через всю программу.
Phase: Фаза компилятора - это различимый этап, который принимает входные данные из предыдущего этапа, обрабатывает и выдает выходные данные, которые можно использовать в качестве входных данных для следующего этапа. У пасса может быть более одной фазы.