Данный курс посвящен принципам разработки компиляторов. Основные задача данного курса - познакомить студентов с базовыми идеями и методами, используемыми при создании современных компиляторов, а также дать практические навыки написания простых компиляторов. В качестве целевой платформы для компиляторов в данном курсе используется Microsoft .NET.
Подразумевается, что к моменту окончания данного курса большинство студентов смогут самостоятельно создать работающий компилятор с простого С#-подобного языка программирования.
Теория создания компиляторов активно развивалась в течение последних 50-60 лет и к сегодняшнему дню в данной области накоплено огромное количество знаний. Поэтому практически невозможно подробно осветить все вопросы создания компиляторов в рамках университетского курса. В этом курсе авторы пытаются лишь преподать основные принципы создания компиляторов и познакомить студентов с некоторыми типичными распространенными приемами. Для дальнейшего совершенствования полученных навыков студенту необходима практика и самостоятельное изучение последних достижений в этой области.
Author(s): Вояковская Н.Н., Москаль А.Е., Булычев Д.Ю., Терехов А.А.
Publisher: НОУ «Интуит»
Year: 2016
Лекция 1. Введение и обзор платформы .NET ... 4
Лекция 3. Основы компиляторов ... 50
Лекция 5. Лексический анализ ... 93
Лекция 6. Синтаксические анализаторы. Нисходящие анализаторы ... 154
Лекция 7. Восходящие анализаторы ... 171
Лекция 8. Грамматики и YACC ... 194
Лекция 9. Семантический анализ. Внутреннее представление ... 212
Лекция 10. Управление памятью и сборка мусора ... 231
Лекция 11. Оптимизация ... 254
Лекция 12. Анализ потока управления ... 276
Лекция 13. Анализ потоков данных ... 299
Лекция 14. Генерация MSIL ... 321
Лекция 15. Выбор инструкций при генерации кода ... 342
Лекция 16. Приложение. Описание языка С ... 372