Введение в компилятор и его дизайн

Когда мы слышим о термине «компилятор», первое, что приходит нам на ум, это
Что такое компилятор?

Компилятор — это программа, которая переводит программу, написанную на одном языке, в эквивалентную программу, написанную на другом языке, а также обнаруживает ошибки, присутствующие в программе.

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

Компилятор выводит следующие типы ошибок:
Лексическая ошибка
Синтаксическая ошибка
Симентическая ошибка

Весь процесс компиляции разделен на 6 этапов, каждый
модуль должен выполнять определенную задачу. Это
i) лексический анализ
ii) синтаксический анализ
iii) семантический Анализ
iv) Генератор промежуточного кода
v) Оптимизатор кода
vi) Генератор кода

Диграмматическое представление показано ниже

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

Этап синтаксического анализа.На этом этапе он обнаруживает любую синтаксическую ошибку, присутствующую в программе, и создает дерево синтаксического анализа в качестве вывода

Фаза семантического анализа.Обнаруживает любой бессмысленный оператор, присутствующий в программе, а также создает в качестве выходных данных аннотированное дерево синтаксического анализа.

Этап генерации промежуточного кода:он в основном переводит языковую программу высокого уровня в промежуточный код для выполнения оптимизации.

Промежуточный код — это тип кода, который легко переводится с языка высокого уровня и легко преобразуется в язык ассемблера.

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

Этап генерации кода.На этом этапе оптимизированный промежуточный код преобразуется в язык ассемблера или в целевую программу.

Другие важные функции компилятора:
i) Таблица символов
ii) Обработчик ошибок

Таблица символов:Таблица символов — это структура данных, которая содержит информацию об идентификаторах, присутствующих в программе, включая тип, область действия (локальную или глобальную).

Обработчик ошибок. Обработчик ошибок содержит всю информацию обо всех ошибках, присутствующих в программе.
Если на каком-либо этапе обнаруживаются какие-либо ошибки, то они передаются обработчику ошибок, и компилятор продолжает дальнейшую компиляцию.