Теория и реализация языков программирования

       

Теория и реализация языков программирования

Предисловие
Место компилятора в программном обеспечении
Структура компилятора
Алфавиты, цепочки и языки
Представление языков
Формальное определение грамматики

Типы грамматик и их свойства
Машины Тьюринга
Неразрешимость проблемы останова
Класс рекурсивных множеств
Связь машин Тьюринга и грамматик типа 0
Линейно-ограниченные автоматы и их связь с контекстно-зависимыми грамматиками


Теория и реализация языков программирования

Лексический анализ
Регулярные множества и выражения
Конечные автоматы
Построение недетерминированного конечного автомата по регулярному выражению
Построение детерминированного конечного автомата по недетерминированному

Связь регулярных множеств, конечных автоматов и регулярных грамматик
Программирование лексического анализа
Конструктор лексических анализаторов LEX
Контекстно-свободные грамматики и автоматы с магазинной памятью
LR(1)-грамматики
Восстановление процесса анализа после синтаксических ошибок
Варианты LR-анализаторов
Преобразования КС-грамматик

Алгоритм Кока-Янгера-Касами
Алгоритм разбора сверху-вниз
Функции FIRST и FOLLOW
Конструирование таблицы предсказывающего анализатора
LL(1)-грамматики
LL(k)-грамматики
Следствия определения LL(k)- грамматики

Удаление левой рекурсии
Левая факторизация
Рекурсивный спуск
Восстановление процесса анализа после синтаксических ошибок
Основа
LR(1)-анализаторы
Конструирование LR(1)-таблицы

Элементы теории перевода
Преобразователи с магазинной памятью
Синтаксически управляемый перевод
Схемы синтаксически управляемого перевода
Обобщенные схемы синтаксически управляемого перевода
Атрибутные грамматики
Определение атрибутных грамматик

Классы атрибутных грамматик и их реализация
Язык описания атрибутных грамматик

Теория и реализация языков программирования

Описание областей видимости и блочной структуры
Занесение в среду и поиск объектов
Организация таблиц символов
Таблицы идентификаторов
Таблицы расстановки

Таблицы расстановки со списками
Функции расстановки
Таблицы на деревьях
Реализация блочной структуры
Сравнение методов реализации таблиц

Теория и реализация языков программирования

Промежуточное представление программы
Представление в виде ориентированного графа
Трехадресный код

Линеаризованные представления
Виртуальная машина Java
Организация памяти
Набор команд виртуальной машины
Организация информации в генераторе кода
Уровень промежуточного представления

Теория и реализация языков программирования

Генерация кода
Модель машины

Выбор дерева вывода наименьшей стоимости
Атрибутная схема для алгоритма сопоставления образцов
Динамическая организация памяти
Организация магазина со статической цепочкой
Организация магазина с дисплеем
Назначение адресов

Трансляция переменных
Трансляция целых выражений
Трансляция арифметических выражений
Трансляция логических выражений

Выделение общих подвыражений
Трансляция объектно-ориен- тированных свойств языков программирования
Виртуальные базовые классы
Множественное наследование
Единичное наследование и виртуальные функции
Множественное наследование и виртуальные функции
Виртуальные базовые классы с виртуальными функциями
Сопоставление образцов

Синтаксический анализ для T-грам- матик
Системы автоматизации построения трансляторов
Система СУПЕР
Система YACC

Теория и реализация языков программирования

Введение
Формальные свойства
Проверка на зацикленность
Простой язык программирования

Обсуждение
Введение
Атрибутированное дерево разбора
Незацикленные атрибутные грамматики
Вычислительные последовательности и корректность. Определение визита

Чистые многовизитные грамматики
Абсолютно незацикленные атрибутные грамматики
Простые многовизитные атрибутные грамматики
Одновизитные атрибутные грамматики
Многопроходные грамматики

Содержание раздела