Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы СПО-2.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
185 Кб
Скачать

4. Компиляторы. Этапы трансляции. Общая схема работы транслятора.

Компилятор — это транслятор, который осуществляет перевод исходной програм-

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

или на языке ассемблера.

Таким образом, компилятор отличается от транслятора лишь тем, что его резуль-

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

или на языке ассемблера.

Процесс компиляции состоит из двух основных этапов — анализа и синтеза.

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

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

5. Компиляторы. Понятие прохода. Многопроходные и однопроходные компиляторы.

Компилятор это транслятор, который осуществляет перевод исходной програм-

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

или на языке ассемблера.

Реальные компиляторы, как правило, выполняют трансляцию текста исходной

программы за несколько проходов.

Проходэто процесс последовательного чтения компилятором данных из внеш-

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

Чаще всего один проход включает в себя выполнение одной или нескольких фаз

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

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

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

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

6. Интерпретаторы. Особенности построения интерпретаторов.

Интерпретатор — это программа, которая воспринимает исходную программу

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

Далеко не все языки программирования допускают построение интерпретаторов,

которые могли бы выполнять исходную программу по мере поступления команд.

Для этого язык должен допускать возможность существования компилятора,

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

может интерпретироваться по мере поступления команд, если он допускает по-

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

Преимуществом интерпретатора является независимость выполнения программы от архитектуры целевой вычислительной системы. В результате компиляции получается объектный код, который всегда ориентирован на определенную целевую вычислительную систему. Для перехода на другую целевую вычислительную систему исходную программу требуется откомпилировать заново. А для интерпретации программы необходимо иметь только ее исходный текст и интерпретатор с соответствующего языка.