Часть 3. Элементы машинной трансляции

9. Структурные различия языков высокого и низкого уровней. Задача синтаксического разбора. Понятие языка и грамматики. Контекстно-свободные (КС) и контекстно-зависимые грамматики. Общий алгоритм разбора КС-языка.

10. Операторные грамматики. Метод простого предшествования. Реализация метода простого предшествования. Метод приоритетов. Трансляция арифметических выражений.

11. Метод рекурсивного спуска. Схема алгоритма. Трансляция арифметических выражений методом рекурсивного спуска. Обработка ошибок в ходе трансляции. Реализация алгоритма рекурсивного спуска.

12. Средства автоматической генерации синтаксических анализаторов. Программы LEXX и YACC (Bison). Синтаксис входных файлов и порождаемый исходный текст. Объектно-ориентированная оболочка для исходного текста, порождаемого генераторами анализаторов.

13. Принципы построения и эмуляции вычислительных систем. Проектирование и реализация одноадресного интерпретатора. Обработка ошибок различных видов.

14. Простейший одноадресный компилятор. Понятие байт-кода. Эмуляция одноадресного процессора. Отладчик для эмулятора. Транслятор с языка ассемблера для одноадресной машины.

15. Проектирование и реализация транслятора с языка высокого уровня для одноадресной машины.

16. Обсуждение систем с двух- и трехадресным кодом. Регистровые вычислительные системы. Проблема распределения регистров. Обсуждение проблем реализации и оптимизации программ.

17. Принципы дизассемблирования программ. Простейший дизассемблер для процессоров рассмотренных типов.

18. Обсуждение проблем эмуляции систем функционального и логического программирования (Лиспа и Пролога). Обсуждение возможности реализациии подмножеств интерпретаторов функционального и логического языков.