Компилятор ( англ. Compiler от англ. to compile собирать в целое) - компьютерная программа (или набор к. программ), что превращает ( компилирует ) программный код, написанный известной языке программирования (язык источника, англ. source language ), на семантически эквивалентный код на другом языке программирования (речь цели, англ. target language ), который, как правило, необходим для выполнения программы машиной, например, компьютером.
Коротко компилятор можно определить, как приложение или техническое средство, выполняющее компиляцию.
Исторически компилятором называлась программа связывавшая подпрограммы, чем и обусловлено происхождение слова. Сегодня эту задачу выполняет компоновщик.
Для выполнения программа не всегда должна быть переведена компилятором, существует также другой принцип: пошаговое выполнение программных инструкцийинтерпретатором.
История развития компилятора
Первые компиляторы появились в начале 50-х годов. С тех пор теория и техника построения компиляторов существенно развились. Тогда же велись интенсивные научные исследования и образовывались группы и комитеты по разработке универсальной промежуточного языка. Однако их деятельность великого "индустриального" успеха не имела.
Теоретический вступление
Компилятор - это программа, читающая программу записанную начальной языке и записывает целевой языке. Этот процесс называют компиляцией (трансляцией, переводом).Он состоит из двух частей
-
Анализ (parsing) - разбиение исходной программы на составные части и создание промежуточного представления
-
Синтез - построение целевой программы из промежуточного представления
Начальная язык определяется ее синтаксисом - описанием того, с которых конструкций состоит язык, и семантикой - набором правил, определяющих суть этих конструкций.
Фазы компиляции
Концептуально компилятор работает фазово, в процессе каждой фазы происходит преобразование исходной программы с одного представления к другому. На практике фазы могут объединяться и некоторые промежуточные представления могут не строиться в явном виде. Типичное разбиение компилятора на фазы:
-
Лексический анализатор
-
Синтаксический анализатор
-
Семантический анализатор
-
Генератор промежуточного кода
-
Оптимизатор
-
Генератор целевого кода