Компиляторы осень 2019 — различия между версиями

Материал из CSC Wiki
Перейти к:навигация, поиск
Строка 7: Строка 7:
 
* [https://compscicenter.ru/courses/compilers/2018-spring/ Страница курса с видео]
 
* [https://compscicenter.ru/courses/compilers/2018-spring/ Страница курса с видео]
  
* [https://github.com/danyaberezun/compiler-workout-HSE-autumn-2019/tree/hw1/doc Лекции] — краткий конспект лекций
+
* [https://github.com/danyaberezun/compiler-workout-HSE-autumn-2019/tree/hw2/doc Лекции] — краткий конспект лекций
  
 
== Практика ==
 
== Практика ==
Строка 14: Строка 14:
  
 
* [https://github.com/danyaberezun/compiler-workout-HSE-autumn-2019/tree/hw1 Задание 1]: написать интерпретатор языка выражений, заполнив соответствующие дыры в файле <code>src/Exrp.ml</code>. Напомню, что мы используем глубокое встраивание языка выражений в OCaml. Пример записи выражения можно найти в конце файла <code>src/Embedding.ml</code>.
 
* [https://github.com/danyaberezun/compiler-workout-HSE-autumn-2019/tree/hw1 Задание 1]: написать интерпретатор языка выражений, заполнив соответствующие дыры в файле <code>src/Exrp.ml</code>. Напомню, что мы используем глубокое встраивание языка выражений в OCaml. Пример записи выражения можно найти в конце файла <code>src/Embedding.ml</code>.
 +
* [https://github.com/danyaberezun/compiler-workout-HSE-autumn-2019/tree/hw2 Задание 2]: в файл <code>src/Syntax.ml</code> (в соответствующие дыры) встроить интерпретатор языка выражений из задания 1, а также реализовать интерпретатор языка (с операторами); в файле <code>src/SM.ml</code> реализовать интерпретатор стековой машины и компилятор нашего языка в стековую машину.
  
 
==== Как сдавать домашние задания ====
 
==== Как сдавать домашние задания ====
Строка 21: Строка 22:
 
# pull request в ту же ветку в оригинальный репозиторий, озаглавленный <code>[hw<номер_задания>] <ваши_фамилия_и_имя></code>
 
# pull request в ту же ветку в оригинальный репозиторий, озаглавленный <code>[hw<номер_задания>] <ваши_фамилия_и_имя></code>
 
# если прошли тесты, буду проверять вручную
 
# если прошли тесты, буду проверять вручную
 +
# Deadline: по пятницам в 08:00
  
 
Рекомендуемая версия OCaml: 4.07.1
 
Рекомендуемая версия OCaml: 4.07.1

Версия 13:31, 13 сентября 2019

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

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

Лекции

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

Практика

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

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

  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 — считается первой статьей по данному вопросу