- •Лекция № 3 теория языков и формальных грамматик
- •3.1 Способы определения языков
- •3.2 Формальные грамматики
- •3.3 Грамматики с ограничениями на правила
- •Лекция № 4 способы записи синтаксиса языка. Распознаватели
- •4.1 Метаязык Хомского
- •4.2 Метаязык Хомского-Щутценберже
- •4.3 Бэкуса-Наура формы (бнф)
- •4.4 Расширенные Бэкуса-Наура формы (рбнф)
- •4.5 Диаграммы Вирта
- •Диаграмм Вирта
- •4.6 Распознаватели
- •Лекция № 5 демонстрационный язык программирования dpl
- •5.1 Синтаксис и семантика dpl
- •5.1.1 Элементарные конструкции
- •5.1.2 Составные конструкции. Организация программы
- •5.1.3 Краткое описание семантики языка
- •5.3 Описание пользовательского синтаксиса с использованием диаграмм Вирта
- •6.2 Транслитератор
- •6.3 Грамматики и распознаватели для лексического анализа
- •6.3.1 Связь между диаграммой Вирта и конечным автоматом
- •В эквивалентный конечный автомат
- •Задающая идентификатор
- •6.3.2 Связь между диаграммами Вирта и праволинейными грамматиками. Преобразование правой рекурсии в итерацию
- •Грамматик в диаграммы Вирта
- •В итеративную диаграмму Вирта
- •Идентификатора в итеративную диаграмму Вирта
- •Идентификатора в итеративную диаграмму Вирта (окончание)
- •6.3.3 Связь между диаграммами Вирта и грамматиками с левой рекурсией. Преобразование левой рекурсии в итерацию
- •В итеративную диаграмму Вирта
- •6.4 Методы лексического анализа
- •6.4.1 Организация непрямого лексического анализатора
- •Лексического анализатора
- •6.4.2 Организация прямого лексического анализатора
- •Прямого лексического анализатора
- •Лекция № 7 лексический анализатор демонстрационного языка программирования
- •7.1 Транслитератор dpl
- •7.1.1 Общая организация транслитератора
- •7.1.2 Программная реализация транслитератора
- •7.2 Непрямой лексический анализатор dpl
- •7.2.1 Диаграммы Вирта для отдельных автоматов непрямого лексического анализатора
- •7.2.1 Программная реализация отдельных автоматов
- •7.2.3 Общая структура непрямого лексического анализатора
- •7.3 Прямой лексический анализатор dpl
- •Прямого лексического анализатора
- •Прямого лексического анализатора (продолжение)
- •Прямого лексического анализатора (окончание)
- •Лекция № 8 общие принципы организации синтаксического разбора
- •8.1 Назначение синтаксического разбора
- •8.2 Классификация методов синтаксического разбора
- •Синтаксического разбора
- •8.3 Методы разбора
- •С операции умножения
- •Распознавателя самых нижних ветвей дерева выступает лексический анализатор
- •8.4 Последовательность разбора
- •8.5 Использование просмотра вперед
- •8.6 Использование возвратов
- •8.7 Выводы
- •Лекция № 9 использование автоматов с магазинной памятью для нисходящего разбора слева направо
- •9.1 Организация автомата с магазинной памятью
- •9.1.1 Операции автомата
- •9.1.2 Распознаватель скобочных выражений
- •9.2 Общая связь между грамматиками и автоматами с магазинной памятью
- •9.3 Связь между s-грамматикой и автоматом с магазинной памятью
- •9.3.1 Обобщенный алгоритм построения нисходящего амп
- •9.4 Построение автомата с магазинной памятью по q-грамматике
- •9.4.1 Построение нисходящего автомата
- •Заменить (αr), Сдвиг
- •Вытолкнуть, Сдвиг.
- •Вытолкнуть.
- •9.4.2 Примеры построения амп по q-грамматике
- •Список использованных источников
- •Содержание
Список использованных источников
1. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация / Под общей ред. А. Матросова. – СПб.: Питер, 2002. – 688 с.: ил.
2. Серебряников В.А. Теория и реализация языков программирования. – М.: МЗ-Пресс, 2003.
3. Альфред В. Ахо, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий. – М.: Вильямс, 2001.
4. Системное программирование. Основы построения трансляторов. Учебное пособие. – М.: КОРОНА-принт, 2001.
5. Кауфман В. Ш. Языки программирования. Концепции и принципы. - М.: Радио и связь, 1993. - 432 с.
6. Льюис Ф., Розенкранц Д., Стринз Р. Теоретические основы проектирования компиляторов. - М.: Мир, 1979.
7. Маккиман У. Генератор Компиляторов. - М.: Статистика, 1980.
8. Рейоурд-Смит В.Дж. Теория формальных языков. Вводный курс. - М.: Радио и связь, 1988.
9. Фостер Дж. Автоматический синтаксический анализ. - М.: Мир, 1975.
10. Дейкстра Э. Дисциплина программирования. М.: Мир, 1978.
11. Шишмарев А.И., Заморин А.П. Англо-русско-немецко-французский толковый словарь по вычислительной технике. М.: Издательство «Русский язык», 1978.
12. Браун П. Макропроцессоры и мобильность программного обеспечения. - М.: Мир, 1977.
13. Легалов А.И. Процедурно-параметрическая парадигма программирования. Возможна ли альтернатива объектно-ориентированному стилю? - Красноярск: 2000. Деп. рук. № 622-В00 Деп. в ВИНИТИ 13.03.2000. - 43 с.
14. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. - М.: Мир, 1978.
15. Грис Д. Наука программирования. М.: Мир, 1984.
16. Льюис Ф., Розенкранц Д., Стринз Р. Теоретические основы проектирования компиляторов. - М.: Мир, 1979.
17. Легалов А.И. Основы разработки трансляторов. Конспект лекций.
18. Вайнгартен Ф. Трансляция языков программирования. - М.: Мир, 1977.
Содержание
ЛЕКЦИЯ № 3 ТЕОРИЯ ЯЗЫКОВ И ФОРМАЛЬНЫХ ГРАММАТИК 1
3.1 Способы определения языков 1
3.2 Формальные грамматики 1
3.3 Грамматики с ограничениями на правила 4
ЛЕКЦИЯ № 4 СПОСОБЫ ЗАПИСИ СИНТАКСИСА ЯЗЫКА. РАСПОЗНАВАТЕЛИ 6
4.1 Метаязык Хомского 6
4.2 Метаязык Хомского-Щутценберже 7
4.3 Бэкуса-Наура формы (БНФ) 8
4.4 Расширенные Бэкуса-Наура формы (РБНФ) 8
4.5 Диаграммы Вирта 10
4.6 Распознаватели 12
ЛЕКЦИЯ № 5 ДЕМОНСТРАЦИОННЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ DPL 15
5.1 Синтаксис и семантика DPL 15
5.1.1 Элементарные конструкции 16
5.1.2 Составные конструкции. Организация программы 18
5.1.3 Краткое описание семантики языка 20
5.2 Примеры программ на DPL 21
5.2.1 Алгоритм Евклида (нахождение наибольшего общего делителя) 22
5.2.2 Одновременное нахождение наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК) 22
5.2.3 Суммирование n элементов из входного потока 22
5.2.4 Сортировка элементов вектора 23
5.3 Описание пользовательского синтаксиса с использованием диаграмм Вирта 23
5.3.1 Элементарные конструкции 24
5.3.2 Составные конструкции 27
ЛЕКЦИЯ № 6 ОРГАНИЗАЦИЯ ЛЕКСИЧЕСКОГО АНАЛИЗА 31
6.1 Назначение и необходимость фазы лексического анализа 31
6.2 Транслитератор 32
6.3 Грамматики и распознаватели для лексического анализа 33
6.3.1 Связь между диаграммой Вирта и конечным автоматом 33
6.3.2 Связь между диаграммами Вирта и праволинейными грамматиками. Преобразование правой рекурсии в итерацию 35
6.3.3 Связь между диаграммами Вирта и грамматиками с левой рекурсией. Преобразование левой рекурсии в итерацию 38
6.4 Методы лексического анализа 40
6.4.1 Организация непрямого лексического анализатора 40
6.4.2 Организация прямого лексического анализатора 45
ЛЕКЦИЯ № 7 ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР ДЕМОНСТРАЦИОННОГО ЯЗЫКА ПРОГРАММИРОВАНИЯ 48
7.1 Транслитератор DPL 48
7.1.1 Общая организация транслитератора 48
7.1.2 Программная реализация транслитератора 49
7.2 Непрямой лексический анализатор DPL 51
7.2.1 Диаграммы Вирта для отдельных автоматов непрямого лексического анализатора 54
7.2.1 Программная реализация отдельных автоматов 61
7.2.3 Общая структура непрямого лексического анализатора 61
7.3 Прямой лексический анализатор DPL 67
ЛЕКЦИЯ № 8 ОБЩИЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ СИНТАКСИЧЕСКОГО РАЗБОРА 74
8.1 Назначение синтаксического разбора 74
8.2 Классификация методов синтаксического разбора 75
8.3 Методы разбора 76
8.4 Последовательность разбора 85
8.5 Использование просмотра вперед 86
8.6 Использование возвратов 86
8.7 Выводы 87
ЛЕКЦИЯ № 9 ИСПОЛЬЗОВАНИЕ АВТОМАТОВ С МАГАЗИННОЙ ПАМЯТЬЮ ДЛЯ НИСХОДЯЩЕГО РАЗБОРА СЛЕВА НАПРАВО 88
9.1 Организация автомата с магазинной памятью 89
9.1.1 Операции автомата 90
9.1.2 Распознаватель скобочных выражений 90
9.2 Общая связь между грамматиками 93
и автоматами с магазинной памятью 93
9.3 Связь между S-грамматикой и автоматом с магазинной памятью 94
9.3.1 Обобщенный алгоритм построения нисходящего АМП 95
для S - грамматики 95
9.3.2 S-грамматика и распознавание вложенности скобок 98
9.4 Построение автомата с магазинной памятью по q-грамматике 99
9.4.1 Построение нисходящего автомата 102
9.4.2 Примеры построения АМП по q-грамматике 103
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 107
ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
И МЕТОДЫ ТРАНСЛЯЦИИ
Конспект лекций для студентов очной формы обучения
специальности 220400 – Программное обеспечение
вычислительной техники и автоматизированных систем
Алёшин Александр Владимирович
