Теория и реализация языков программирования
Теория и реализация языков программирования
Предисловие
Место компилятора в программном обеспечении
Структура компилятора
Алфавиты, цепочки и языки
Представление языков
Формальное определение грамматики
Типы грамматик и их свойства
Машины Тьюринга
Неразрешимость проблемы останова
Класс рекурсивных множеств
Связь машин Тьюринга и грамматик типа 0
Линейно-ограниченные автоматы и их связь с контекстно-зависимыми грамматиками
Теория и реализация языков программирования
Лексический анализ
Регулярные множества и выражения
Конечные автоматы
Построение недетерминированного конечного автомата по регулярному выражению
Построение детерминированного конечного автомата по недетерминированному
Связь регулярных множеств, конечных автоматов и регулярных грамматик
Программирование лексического анализа
Конструктор лексических анализаторов LEX
Контекстно-свободные грамматики и автоматы с магазинной памятью
LR(1)-грамматики
Восстановление процесса анализа после синтаксических ошибок
Варианты LR-анализаторов
Преобразования КС-грамматик
Алгоритм Кока-Янгера-Касами
Алгоритм разбора сверху-вниз
Функции FIRST и FOLLOW
Конструирование таблицы предсказывающего анализатора
LL(1)-грамматики
LL(k)-грамматики
Следствия определения LL(k)- грамматики
Удаление левой рекурсии
Левая факторизация
Рекурсивный спуск
Восстановление процесса анализа после синтаксических ошибок
Основа
LR(1)-анализаторы
Конструирование LR(1)-таблицы
Элементы теории перевода
Преобразователи с магазинной памятью
Синтаксически управляемый перевод
Схемы синтаксически управляемого перевода
Обобщенные схемы синтаксически управляемого перевода
Атрибутные грамматики
Определение атрибутных грамматик
Классы атрибутных грамматик и их реализация
Язык описания атрибутных грамматик
Теория и реализация языков программирования
Описание областей видимости и блочной структуры
Занесение в среду и поиск объектов
Организация таблиц символов
Таблицы идентификаторов
Таблицы расстановки
Таблицы расстановки со списками
Функции расстановки
Таблицы на деревьях
Реализация блочной структуры
Сравнение методов реализации таблиц
Теория и реализация языков программирования
Промежуточное представление программы
Представление в виде ориентированного графа
Трехадресный код
Линеаризованные представления
Виртуальная машина Java
Организация памяти
Набор команд виртуальной машины
Организация информации в генераторе кода
Уровень промежуточного представления
Теория и реализация языков программирования
Генерация кода
Модель машины
Выбор дерева вывода наименьшей стоимости
Атрибутная схема для алгоритма сопоставления образцов
Динамическая организация памяти
Организация магазина со статической цепочкой
Организация магазина с дисплеем
Назначение адресов
Трансляция переменных
Трансляция целых выражений
Трансляция арифметических выражений
Трансляция логических выражений
Выделение общих подвыражений
Трансляция объектно-ориен- тированных свойств языков программирования
Виртуальные базовые классы
Множественное наследование
Единичное наследование и виртуальные функции
Множественное наследование и виртуальные функции
Виртуальные базовые классы с виртуальными функциями
Сопоставление образцов
Синтаксический анализ для T-грам- матик
Системы автоматизации построения трансляторов
Система СУПЕР
Система YACC
Теория и реализация языков программирования
Введение
Формальные свойства
Проверка на зацикленность
Простой язык программирования
Обсуждение
Введение
Атрибутированное дерево разбора
Незацикленные атрибутные грамматики
Вычислительные последовательности и корректность. Определение визита
Чистые многовизитные грамматики
Абсолютно незацикленные атрибутные грамматики
Простые многовизитные атрибутные грамматики
Одновизитные атрибутные грамматики
Многопроходные грамматики
Содержание раздела