
- •Обзорная лекция по курсу «языки программирования и методы трансляции»
- •Основная литература
- •1 Описание языка программирования
- •2 Введение в трансляцию
- •3 Способы описания языка
- •4 Формальные языки и грамматики. Основные термины и определения
- •5 Порождающие грамматики (Грамматики н.Хомского1)
- •6 Классификация формальных грамматик
- •7 Автоматные грамматики и конечные автоматы
- •7.1. Механизмы распознавания и преобразования
- •7.2 Конечные автоматы
- •7.3 Способы задания конечных автоматов
- •Контекстно-свободные грамматики и языки
- •Проверка существования языка
- •Удаление бесполезных символов грамматики
- •Эквивалентные преобразования кс-грамматик
- •9.1 Устранение цепных правил
- •Удаление произвольного правила
- •9.3 Левая факторизация правил
- •9.4 Преобразование к нормальной форме Хомского
- •Распознающий автомат для кс- языков (автомат с магазинной памятью)
- •Разнозновидности мп-автоматов
- •11 Методы синтаксического анализа
- •Нисходящий разбор
- •Восходящий разбор
- •12 Генерация внутреннего представления программ
- •12.1 Польская запись
- •2 Алгоритм перевода на промежуточный язык
- •2.1 Полиз как промежуточный язык
Обзорная лекция по курсу «языки программирования и методы трансляции»
Основная цель курса для студента: получить представление об основах теории алгоритмов и формальных языков, принципах построения и способах описания языков программирования, основных этапах трансляции.
Основная литература
А.Ахо, Р.Сети, Д.Ульман, Компиляторы: принципы, технологии, инструменты.-М: Издат.дом «Вильямс», 2003. – 768с.
Опалева, Э. А. Языки программирования и методы трансляции: учеб. пособие для вузов / Э. А. Опалева, В. П. Самойленко. - CПб. : БХВ - Санкт-Петербург, 2005. - 480 с.
Гордеев, А.В. Системное программное обеспечение / А.В. Гордеев, А.Ю. Молчанов. - CПб. : Питер, 2001. - 736 с.
Бен-Ари М. Языки программирования. Практический сравнительный анализ. – М.: Мир, 2000. – 366с
Свердлов С. З. Введение в методы трансляции. Вологда, Русь, 1994
Р.Компаниец, Е.Маньков, Н.Филатов, Системное программирование: основы построения трансляторов, Корона-Принт, СПб, 2000
1 Описание языка программирования
Вопросы разработки, использования и реализации языка программирования тесно связаны с проблемой точного описания (определения) языка. Для определения языка требуется задать множество основных символов языка и описать его синтаксис и семантику.
Синтаксис языка определяет правила составления конкретных программ как цепочек, состоящих из основных символов языка.
Семантика задает смысловые значения конструкций языка, а также интерпретацию различных синтаксических конструкций языковым процессором.
Лексема
2 Введение в трансляцию
Различают несколько видов трансляторов: компиляторы, интерпретаторы, конверторы (рисунок 1).
Компилятор, обрабатывая исходную программу, создает эквивалентную программу на машинном языке, которая называется также объектной программой, или объектным кодом. Объектный код как правило записывается в файл, но не обязательно представляет собой готовую к исполнению программу. Для программы, состоящей из многих модулей, может образовываться много объектных файлов. Объектные файлы объединяются в исполняемый модуль с помощью специальной программы-компоновщика, которая входит в состав системы программирования.
Интерпретатор, распознавая как и компилятор, исходную программу, не формирует машинный код в явном виде. Для каждой операции, которая может потребоваться при исполнении исходной программы, в программе-интерпретаторе заранее заготовлена машинная команда или команды. «Узнав» очередную операцию в исходной программе, интерпретатор выполняет соответствующие команды, потом – следующие, и так всю программу. Интерпретатор – это переводчик и исполнитель исходной программы.
Существую трансляторы, переводящие программу не в машинный код, а на другой язык. Такие трансляторы иногда называют конверторами.
Транслятор в общем случае связан с тремя языками:
входной язык – с которого выполняется перевод
целевой (объектный) язык – на который выполняется перевод
инструментальный язык – на котором написан сам транслятор
Трансляторы удобно изображать в виде Т-диаграмм, которые предложил (Х.Брэтман) в 1961 г. Cлева на такой диаграмме записывается исходный язык, справа – объектный, снизу – инструментальный.
Бейсик
IBM PC

Этапы трансляции