Лекция: Компилятор

– это транслятор, который осуществляет перевод сходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера.

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

Компилятор в целом выполняет две функции:

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

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

Основные этапы компиляции:

Лексический анализ (сканер) – это часть компилятора, которая читает литеры программы на исходном языке и строит из них слова (лексемы) исходного языка.

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

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

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

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

 

еще рефераты
Еще работы по информатике