Компилятор — это программа, которая преобразует компьютерный код, написанный на одном языке программирования, в другой. Язык программирования — это набор правил для программирования компьютера.
Компилятор состоит из четырех основных фаз:
1. Предварительная обработка
2. Синтаксический анализ
3. Генерация кода
4. Оптимизация
1. Предварительная обработка
На этапе предварительной обработки компилятор берет исходный код, написанный на языке программирования, и преобразует его в форму, которую компилятору легче читать и понимать. Этот процесс преобразования известен как лексический анализ или токенизация.
На этапе предварительной обработки компилятор расширяет макросы и обрабатывает такие директивы, как #include, #define и #ifdef.
2. Разбор
На этапе синтаксического анализа компилятор преобразует исходный код из его предварительно обработанной формы в промежуточную форму, называемую деревом синтаксического анализа.
Во время синтаксического анализа компилятор проверяет исходный код на наличие ошибок, таких как синтаксические ошибки. При обнаружении ошибок компилятор выдаст сообщение об ошибке и остановит процесс компиляции.
3. Генерация кода
Фаза генерации кода компилятора берет дерево синтаксического анализа, созданное на этапе синтаксического анализа, и генерирует из него ассемблерный или машинный код.
На этапе генерации кода компилятор создает исполняемый файл, который можно запустить на компьютере.
4. Оптимизация
На этапе оптимизации компилятор пытается улучшить сгенерированный код с точки зрения времени выполнения и/или использования памяти.
Оптимизация является сложной задачей и часто выполняется с использованием эвристики, а не полного перебора. Этап оптимизации может сделать сгенерированный код скорее хуже, чем лучше.
Подпишитесь на меня и в Scientyfic World, чтобы получать больше историй и информативных блогов.