Проектирование трансляторов
Цели и задачи курса
Модули
Литература
Теория развития компиляторов развивалась в течение последних 70 лет. Процесс создания новых компиляторов не прекращается, это
Существуют языки:
Основные понятия и определения
Основные понятия и определения
Основные понятия и определения
Основные понятия и определения
Основные понятия и определения
Основные технические средства, используемые в комплексе с компиляторами
Общая схема работы компилятора
Процесс прохода. Разнопроходные компиляторы
Трехпроходный компилятор
Двухпроходный компилятор
Однопроходный компилятор
578.76K
Category: programmingprogramming

Проектирование трансляторов языков программирования. Схема работы компилятора. (Глава 1)

1. Проектирование трансляторов

ГЛАВА 1
Проектирование трансляторов
к.т.н., доцент, зам. зав. кафедры ИТиПИ
Бальченко Ирина Владимировна
ауд. 55

2. Цели и задачи курса

• Познакомится с базовыми идеями и
методами, используемыми при создании
трансляторов, а также получить
практические навыки построения
простейших компиляторов.
2

3. Модули

Модуль 1
Лабораторные
работы
ТЕСТЫ
РГР
15 б
20 б

Общая теория
Л.Р. № 1 – 5 б
Лексический анализ
Л.Р. № 2 – 10 б
Модуль 2
Синтаксический
анализ
15 б
Генерация кода
Средства автомат.
постр. трансляторов
20 б

Л.Р. № 3 – 15 б
Семантический анализ
Модуль 3
Тест №1 – 20 б
Тест №2 – 20 б
20 б

10 б
Л.Р. № 4 – 10 б
Л.Р. № 5 – 10 б
РГР – 10 б
3

4. Литература

Волкова И.А., Руденко Т.В. “Формальные
грамматики и языки. Элементы
теории трансляции”: учебное пособие. – М.:МГУ,
1999 – 62 с.
4

5. Теория развития компиляторов развивалась в течение последних 70 лет. Процесс создания новых компиляторов не прекращается, это

связано с:
• развитием технологии вычислительных
систем
• с необходимостью решения более сложных
разнообразных прикладных задач.
5

6.

6

7. Существуют языки:

• логики (Prolog1970, программа представляет собой
набор целей и правил, которые будут выполняться
для достижения цели)
• функциональные (Lisp, оперируют функциями
высокого порядка, не данными!!!)
• параллельного программирования (MPI)
• объектные языки (Java, С#)
• запросов (SQL)
• четвертого поколения 4GL (используют
естественные языки или визуальные конструкции)
• мета-языки PNF (язык предназначен для описания
другого языка).
7

8. Основные понятия и определения

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

9. Основные понятия и определения

• Ассемблер – системная обслуживающая
программа, преобразующая символические
конструкции в команды машинного языка.
• Машинный код - набор кодов операций,
выполняемых определенной машиной.
9

10. Основные понятия и определения

Интерпретатор – программа или устройство,
осуществляющая последовательную
интерпретацию и выполнение исходной
программы.
• Интерпретатор не порождает объектную
программу, распознает и сразу выполняет.
• Граница между компиляцией и
интерпретацией в трансляторе может
перемещаться от входного языка (чистый
интерпретатор) до машинного языка (чистый
компилятор).
10

11. Основные понятия и определения

• Если выходной язык компилятора является
машинным языком для компьютера с другой
архитектурой, нежели тот, в котором работает
компилятор, то такой компилятор называется
кросс компилятором, а сама система – кросс
система.
• Эмулятор – программа или программнотехническое средство, обеспечивающая
возможность без перепрограммирования
выполнять на данной ЭВМ программу,
использующую коды или способы выполнения
операций, отличные от данной ЭВМ.
11

12. Основные понятия и определения

• Перекодировщик – программа или программное
устройство, переводящее программы, написанные на
машинном языке одной ЭВМ в машинный язык другой
ЭВМ. (пример, компилятора).
• Препроцессор (макропроцессор) – программа,
обеспечивающая замену одной последовательности
символов в другую последовательность.
• Перемещаемая программа – программа (или часть
программы) которая может быть загружена в любую
область памяти. Обычно такая программа разделяется
на управляющие секции, и все требуемые адреса
выражаются относительно начала соответствующей
секции. Компилятор или ассемблер создает таблицу
всех таких обращений к памяти, а программа-загрузчик
преобразует их в абсолютные адреса.
12

13. Основные технические средства, используемые в комплексе с компиляторами

• Текстовый редактор – служит для создания
исходных текстов
• Компоновщик – позволяет объединять
несколько объектных модулей, библиотеки
прикладных программ, которые содержат в
себе уже откомпилированные объектные
модули и объединены в единое целое
• Загрузчик – обеспечивает подготовку готовой
программы к выполнению (часть ОС).
• Отладчик
13

14. Общая схема работы компилятора

14

15. Процесс прохода. Разнопроходные компиляторы

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

16. Трехпроходный компилятор

16

17. Двухпроходный компилятор

17

18. Однопроходный компилятор

18
English     Русский Rules