В книге подробно рассматривается разработка компилятора языка программирования высокого уровня. Обсуждаются все этапы реализации от спецификации языка до формирования машинного кода. Приводится исходный код компилятора на нескольких языках программирования. Даются необходимые для создания компилятора сведения по теории формальных языков и грамматик. Изложение сопровождается многочисленными примерами. Учебное пособие адресуется студентам вузов, специализирующимся по компьютерным технологиям и всем, кто интересуется программированием.
Языки программирования и их реализация Язык и его реализация Компилятор, интерпретатор, конвертор Метаязыки Теоретические основы трансляции Формальные языки и грамматики Основные термины и определения Примеры языков Порождающие грамматики (грамматики Н. Хомского) Еще несколько определений Дерево вывода Задача разбора Для чего надо решать задачу разбора Домино Де Ремера Разновидности алгоритмов разбора Эквивалентность и однозначность грамматик Иерархия грамматик Н. Хомского Автоматные грамматики и языки Граф автоматной грамматики Конечные автоматы Преобразование недетерминированного конечного автомата (НКА) в детерминированный конечный автомат (ДКА) Таблица переходов детерминированного конечного автомата Программная реализация автоматного распознавателя Дерево разбора в автоматной грамматике Пример автоматного языка Синтаксические диаграммы автоматного языка Регулярные выражения и регулярные множества Эквивалентность регулярных выражений и автоматных грамматик Для чего нужны регулярные выражения Регулярные выражения как языки Расширенная нотация для регулярных выражений КОНТЕКСТНО-СВОБОДНЫЕ (КС) ГРАММАТИКИ И ЯЗЫКИ Однозначность КС-грамматики Алгоритмы распознавания КС-языков Распознающий автомат для КС-языков Самовложение в КС-грамматиках Синтаксические диаграммы КС-языков Определение языка с помощью синтаксических диаграмм Синтаксический анализ КС-языков методом рекурсивного спуска Требование детерминированного распознавания LL-грамматики Левая и правая рекурсия Синтаксический анализ арифметических выражений Включение действий в синтаксис Обработка ошибок при трансляции Табличный LL(1)-анализатор Рекурсивный спуск и табличный анализатор Трансляция выражений Польская запись Алгоритм вычисления выражений в обратной польской записи Перевод выражений в обратную польскую запись Интерпретация выражений Семантическое дерево выражения Упражнения для самостоятельной работы Трансляция языков программирования Описание языков программирования Метаязыки БНФ Синтаксические диаграммы Расширенная форма Бэкуса-Наура (РБНФ) Описания синтаксиса языков семейства Си Описания синтаксиса языка Ада Язык программирования «о» Краткая характеристика языка «О» Синтаксис «О» Пример программы на «О» Структура компилятора Многопроходные и однопроходные трансляторы Компилятор языка «о» Вспомогательные модули компилятора Лексический анализатор (сканер) Виды и значения лексем Лексический анализатор языка «О» Синтаксический анализатор Контекстный анализ Таблица имен Контекстный анализ модуля Трансляция списка импорта Трансляция описаний Контекстный анализ выражений Контекстный анализ операторов Генерация кода Виртуальная машина Архитектура виртуальной машины Программирование в коде виртуальной машины Реализация виртуальной машины Генератор кода Распределение памяти Генерация кода для выражений Генерация кода для операторов Завершение генерации Назначение адресов переменным Трансляция процедур Расширенный набор команд виртуальной машины Процедуры без параметров и локальных переменных Процедуры с параметрами-значениями без локальных переменных Процедуры с параметрами-значениями и локальными переменными Простейшая оптимизация кода Процедуры-функции с параметрами-значениями и локальными переменными Трансляция оператора RETURN Особенность трансляции параметров-переменных Пример программы на языке «О с процедурами» Конструкция простого ассемблера Язык ассемблера виртуальной машины Реализация ассемблера Автоматизация построения и мобильность трансляторов Автоматический анализ и преобразование грамматик Автоматическое построение компилятора и его частей Использование языков высокого уровня Самокомпилятор. Раскрутка Примеры раскрутки Унификация промежуточного представления Приложения Язык программирования Оберон-2 Определение терминов Целые типы Вещественные типы Числовые типы Одинаковые типы Равные типы Поглощение типов Расширение типов (базовый тип) Совместимость по присваиванию Совместимость массивов Совместимость выражений Совпадение списков формальных параметров Синтаксис Оберона-2 Модуль SYSTEM Среда Оберон Текст компилятора языка «о» на паскале Текст компилятора языка «о» на обероне Отличия версий для компиляторов job и xds Изменение обозначений Изменения в структуре компилятора Текст компилятора языка «о» на си/си++ Текст компилятора «о» на языке программирования ява Текст компилятора «о» на языке программирования си# Литература
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.