Дизайн компилятора - Архитектура

Компилятор можно в общих чертах разделить на две фазы в зависимости от того, как они компилируются.

Фаза анализа

Известный как интерфейс компилятора, analysis На этапе анализа компилятор считывает исходную программу, разделяет ее на основные части, а затем проверяет наличие лексических, грамматических и синтаксических ошибок. На этапе анализа создается промежуточное представление исходной программы и таблицы символов, которые должны быть переданы на этап синтеза в качестве входных данных. .

Фаза синтеза

Известный как серверная часть компилятора, synthesis phase генерирует целевую программу с помощью промежуточного представления исходного кода и таблицы символов.

У компилятора может быть много фаз и проходов.

  • Pass : Проход относится к обходу компилятора через всю программу.

  • Phase: Фаза компилятора - это различимый этап, который принимает входные данные из предыдущего этапа, обрабатывает и выдает выходные данные, которые можно использовать в качестве входных данных для следующего этапа. У пасса может быть более одной фазы.