Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vse_v_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
179.9 Кб
Скачать

9. Процесс трансляции и его этапы. Типовая структура транслятора (общая характеристика).

Рассматривая транслятор, будем ориентироваться на компилятор.

Компилятор – транслятор, входным языком которого является ЯВУ, а объектным – язык близкий к МЯ реальной или виртуальной ЭВМ.

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

Процесс трансляции:

1) анализ исходной программы

2) синтез объектной программы

Существует 2 способа анализа текста программы:

  1. Рекурсивный спуск.

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

  1. Табличный распознаватель.

Работает как КА (тетрадь).

Если транслятор однопроходный, то скорость трансляции достаточно высока. Для работы однопроходного транслятора нужен большой объём доступной памяти. Если нужна скорость выполнения программы, то требуется многопроходная (или если есть недостаток памяти) трансляция.

10. Процесс трансляции. Лексический анализ исходной программы.

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

В результате получается совокупность объектов - лексические единицы – лексемы.

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

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

DO 10 I = 1,5 – оператор цикла

И

DO 10 I = 1.5 – оператор присваивания (в Fortran пробелы игнорируются)

11. Процесс трансляции. Синтаксический анализ исходной программы.

2 этап анализа исходной программы. Синтаксический анализ (разбор) - набор правил формирования языка программирования.

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

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

For i:=1 to 5 do begin – норм, а For i:=1 to begin 5 do - нет

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]