Компиляторы осень 2019

Материал из CSC Wiki
Перейти к:навигация, поиск

Березун Даниил danya.berezun@gmail.com

Булычев Дмитрий Юрьевич dboulytchev@gmail.com

Лекции

  • Лекции — краткий конспект лекций

Практика

  • Задание 1: написать интерпретатор языка выражений, заполнив соответствующие дыры в файле src/Exrp.ml. Напомню, что мы используем глубокое встраивание языка выражений в OCaml. Пример записи выражения можно найти в конце файла src/Embedding.ml.
  • Задание 2: в файл src/Syntax.ml (в соответствующие дыры) встроить интерпретатор языка выражений из задания 1, а также реализовать интерпретатор языка (с операторами); в файле src/SM.ml реализовать интерпретатор стековой машины и компилятор нашего языка в стековую машину.
  • Задание 3. Файл src/Language.ml --- бывший src/Syntax.ml, куда надо вставить уже реализованные вами функции, а также реализовать парсеры выражений и операторов. Нужные вам примеры написания парсеров на Ostap можно найти в конце файла туториал по Ostap. Не забудьте также поправить файл src/SM.ml, согласно предыдущему заданию. Обратите внимание, что тестов стало больше (см. папки regression/expressions и regression/deep-expressions). Пожалуйста, перед тем как открывать pull-request, убедитесь, что все тесты проходят.


Как сдавать домашние задания

  1. fork compiler-workout репозитория
  2. checkout ветки hw<номер_задания>
  3. pull request в ту же ветку в оригинальный репозиторий, озаглавленный [hw<номер_задания>] <ваши_фамилия_и_имя>
  4. если прошли тесты, буду проверять вручную
  5. Deadline: по пятницам в 08:00

Рекомендуемая версия OCaml: 4.07.1

Полезные ссылки

Литература

  1. «Compiler Construction», N.Wirth — одна из немногих книг, пользуясь которой можно действительно написать компилятор, не умея этого делать предварительно. Идеологически близка курсу, но использует другие технические подходы
  2. «Semantics with Applications. A formal introduction», F.Nielson, H-R.Nielson — аккуратное введение в семантику языков программирования
  3. «Semantics of context-free languages», D.Knuth — статья Кнута, в которой вводятся атрибутные грамматики
  4. «Monadic parser combinators», G.Hutton, E.Meijer — считается первой статьей по данному вопросу