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

Содержание

Слайд 2

Цели и задачи курса Познакомится с базовыми идеями и методами, используемыми

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

Познакомится с базовыми идеями и методами, используемыми при

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

Модули

Модули

Слайд 4

Литература Волкова И.А., Руденко Т.В. “Формальные грамматики и языки. Элементы теории

Литература
Волкова И.А., Руденко Т.В. “Формальные грамматики и языки. Элементы теории трансляции”: учебное

пособие. – М.:МГУ, 1999 – 62 с.
Слайд 5

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

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

новых компиляторов не прекращается, это связано с:

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

Слайд 6

Слайд 7

Существуют языки: логики (Prolog1970, программа представляет собой набор целей и правил,

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

логики (Prolog1970, программа представляет собой набор целей и правил, которые

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

Основные понятия и определения Транслятор – обслуживающая программа, преобразующая исходную программу

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

Транслятор – обслуживающая программа, преобразующая исходную программу на

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

Основные понятия и определения Ассемблер – системная обслуживающая программа, преобразующая символические

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

Ассемблер – системная обслуживающая программа, преобразующая символические конструкции

в команды машинного языка.
Машинный код - набор кодов операций, выполняемых определенной машиной.
Слайд 10

Основные понятия и определения Интерпретатор – программа или устройство, осуществляющая последовательную

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

Интерпретатор – программа или устройство, осуществляющая последовательную интерпретацию

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

Основные понятия и определения Если выходной язык компилятора является машинным языком

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

Если выходной язык компилятора является машинным языком для

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

Основные понятия и определения Перекодировщик – программа или программное устройство, переводящее

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

Перекодировщик – программа или программное устройство, переводящее программы,

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

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

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

Текстовый редактор – служит

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

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

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

Слайд 15

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

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

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

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

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

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

Слайд 17

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

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