Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП-2 Основные принципы построения трансляторов...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.65 Mб
Скачать

Тема 2. Основные принципы построения трансляторов

2.1.1. Формальное определение транслятора 2

2.1.2. Определение компилятора. Отличие компилятора от транслятора 3

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

2.1.4. Определение интерпретатора. Разница между интерпретаторами и трансляторами 6

2.1.5. Трансляция в ассемблер 7

2.1.6. T-диаграммы 8

2.1.7. Методики создания компилятора 8

2.1.8. Метод раскрутки 9

2.1.9. Кросс-транслятор 10

2.1.10. Виртуальная машина 10

2.1.11. Компиляция "на лету" 11

2.2.1. Лексический анализ 14

2.2.2. Синтаксический анализ 15

2.2.3. Семантический анализ 16

2.2.4. Оптимизация кода 16

2.2.5. Генерация кода 17

2.2.6. Просмотры 17

Вопросы 18

Задачи 20

  1. Трансляторы, компиляторы и интерпретаторы - общая схема работы

  1. Формальное определение транслятора

  1. Транслятор — это программа, которая переводит программу на исходном (вход­ном) языке и эквивалентную ей программу на результирующем (выходном) языке.

Само слово «транс­лятор» (англ.: translator) означает «переводчик».

Рис. 2. 1. Схема работы транслятора

В работе транслятора участвуют три программы. Во-первых, сам транслятор является программой. То есть транслятор — это часть программного обеспечения (ПО), он выполняется компьютером, как и нее прочие программы в рам­ках операционной системы (ОС). Все составные части транслятора представля­ют собой динамически загружаемые библиотеки или модули этой программы со своими входными и выходными данными. Язык, на котором написан компилятор, будем называть языком реализации.

Во-вторых, исходными данными для работы транслятора служит программа на исходном языке программирования — некоторая последовательность предло­жений входного языка. Эта программа называется входной, или исходной про­граммой. Текст исходной программы должен удовлетворять синтаксическим и семантическим требованиям входного языка.

В-третьих, выходными данными транслятора является программа на результи­рующем языке. Эта программа называется результирующей(целевой) программой. Резуль­тирующая программа строится по синтаксическим правилам выходного языка транслятора, а ее смысл определяется семантикой выходного языка.

Важным пунктом в определении транслятора является эквивалентность исходной и результирующей программ. Эквивалентность этих двух программ означает совпа­дение их смысла с точки зрения семантики входного языка (для исходной програм­мы) и семантики выходного языка (для результирующей программы). Без вы­полнения этого требования сам транслятор теряет всякий практический смысл.

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

Если мы обозначим исходный язык (source language) через L1, язык целевой программы (target language) - L2, а язык реализации (implementation language) - L3, то мы можем представить транслятор, как отображение множества L1 в множество L2 , т.е.