Содержание

Языки и эволюция технологий программирования

Языки программирования высокого уровня.

    Язык и его реализация.

    Компилятор, интерпретатор, конвертор.

    Метаязыки.            

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

Первое поколение языков

    Фортран

    Алгол-60

    Кобол

Две попытки объять необъятное.

    ПЛ/1

    Алгол-68

Интерактивное программирование для всех

Бейсик

Структурное программирование

Основы структурного программирования

Паскаль

Язык Си

Модульность, надежность, абстракция

Ада

Модула-2

Абстрактные типы данных

Объектно-ориентированное программирование

Язык программирования Си++

Язык программирования Оберон

Язык программирования Ява

Язык программирования Си#

Примеры использования объектной технологии

Языки-концепции

Форт

Лисп

Пролог

Смолток

Языки Интернета

HTML

Ява и аплеты

Скриптовые языки

Языки CGI-программирования

Языки активных серверных страниц

Языки Интернета: повторение пройденного

Какой язык лучше. Сравнительная оценка языков программирования

Арифметика синтаксиса

Экспертная оценка языков программирования

Важнейшие языки

Теоретические основы трансляции

Формальные языки и грамматики

Основные термины и определения

Примеры языков

Порождающие грамматики (грамматики Н. Хомского)

Еще несколько определений

Дерево вывода

Задача разбора

Для чего надо решать задачу разбора

Домино Де Ремера

Разновидности алгоритмов разбора

Эквивалентность и однозначность грамматик

Иерархия грамматик Н. Хомского

Автоматные грамматики и языки

Граф автоматной грамматики

Конечные автоматы

Преобразование недетерминированного конечного автомата (НКА) в детерминированный конечный автомат (ДКА)

Таблица переходов детерминированного конечного автомата

Программная реализация автоматного распознавателя

Дерево разбора в автоматной грамматике

Пример автоматного языка

Синтаксические диаграммы автоматного языка

Регулярные выражения и регулярные множества

Эквивалентность регулярных выражений и автоматных грамматик

Для чего нужны регулярные выражения

Регулярные выражения как языки

Расширенная нотация для регулярных выражений

Контекстно-свободные (КС) грамматики и языки

Однозначность КС-грамматики

Алгоритмы распознавания КС-языков

Распознающий автомат для КС-языков

Самовложение в КС-грамматиках

Синтаксические диаграммы КС-языков

Определение языка с помощью синтаксических диаграмм

Синтаксический анализ КС-языков методом рекурсивного спуска

Требование детерминированного распознавания

LL-грамматики

Левая и правая рекурсия

Синтаксический анализ арифметических выражений

Включение действий в синтаксис

Обработка ошибок при трансляции

Табличный LL(1)-анализатор

Рекурсивный спуск и табличный анализатор

Трансляция выражений

Польская запись

Алгоритм вычисления выражений в обратной польской записи

Перевод выражений в обратную польскую запись

Интерпретация выражений

Семантическое дерево выражения

Упражнения для самостоятельной работы

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

Описание языков программирования

Метаязыки

БНФ

Синтаксические диаграммы

Расширенная форма Бэкуса-Наура (РБНФ)

Описания синтаксиса языков семейства Си

Описания синтаксиса языка Ада

Определение синтаксиса Кобола и ПЛ/1

Язык программирования «О»

Краткая характеристика языка «О»

Синтаксис «О»

Пример программы на «О»

Структура компилятора

Многопроходные и однопроходные трансляторы

Компилятор языка «О»

Вспомогательные модули компилятора

Лексический анализатор (сканер)

Виды и значения лексем

Лексический анализатор языка «О»

Синтаксический анализатор

Контекстный анализ

Таблица  имен

Контекстный анализ модуля

Трансляция списка импорта

Трансляция описаний

Контекстный анализ выражений

Контекстный анализ операторов

Генерация кода

Виртуальная машина

Архитектура виртуальной машины

Программирование в коде виртуальной машины

Реализация виртуальной машины

Генератор кода

Распределение памяти

Генерация кода для выражений

Генерация кода для операторов

Завершение генерации

Назначение адресов переменным

Трансляция процедур

Расширенный набор команд виртуальной машины

Процедуры без параметров и локальных переменных

Процедуры с параметрами-значениями без локальных переменных

Процедуры с параметрами-значениями и локальными переменными.

Простейшая оптимизация кода

Процедуры-функции с параметрами-значениями и локальными переменными

Трансляция оператора RETURN

Особенность трансляции параметров-переменных

Пример программы на языке «О с процедурами»

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

Язык ассемблера виртуальной машины

Реализация ассемблера

Автоматизация построения и мобильность трансляторов

Автоматический анализ и преобразование грамматик

Автоматическое построение компилятора и его частей

Использование языков высокого уровня

Самокомпилятор. Раскрутка

Примеры раскрутки

Унификация промежуточного представления

Язык программирования Оберон-2

От переводчика

1. Введение

2. Синтаксис

3. Словарь и представление

4. Объявления и области действия

5. Объявления констант

6. Объявления типов

6.1 Основные типы

6.2 Тип массив

6.3 Тип запись

6.4 Тип указатель

6.5 Процедурные типы

7. Объявления переменных

8. Выражения

8.1 Операнды

8.2 Операции

9. Операторы

9.1 Присваивания

9.2 Вызовы процедур

9.3 Последовательность операторов

9.4 Операторы IF

9.5 Операторы CASE

9.6 Операторы WHILE

9.7 Операторы REPEAT

9.8 Операторы FOR.

9.9 Операторы LOOP

9.10 Операторы возврата и выхода

9.11 Операторы WITH

10. Объявления процедур

10.1 Формальные параметры

10.2 Процедуры, связанные с типом

10.3 Стандартные процедуры

11. Модули

Приложение A: Определение терминов

Целые типы

Вещественные типы

Числовые типы

Одинаковые типы

Равные типы

Поглощение типов

Расширение типов (базовый тип)

Совместимость по присваиванию

Совместимость массивов

Совместимость выражений

Совпадение списков формальных параметров

Приложение B: Синтаксис Оберона-2

Приложение C: Модуль SYSTEM

Приложение D: Среда Оберон

D1. Команды

D2. Динамическая загрузка модулей

D3. Сбор мусора

D4. Смотритель

D5. Структуры данных времени выполнения

Текст компилятора языка «О» на Паскале

Текст компилятора языка «О» на Обероне

Отличия версий для компиляторов JOB и XDS

Изменение обозначений

Изменения в структуре компилятора

Текст компилятора языка «О» на Си/Си++

Текст компилятора «О» на языке программирования Ява

Текст компилятора «О» на языке программирования Си#

Сравнение компиляторов

Компиляторы языка «О»

Компиляторы компилируют компиляторы

Ассемблер виртуальной О-машины

Литература