VM осень 2017

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

Лекции

Преподаватель: Николай Иготти (igotti (at) gmail.com)

Освещаемые вопросы: здесь

Практика

Репозиторий на гитхабе. Присылайте запросы на почту для добавления в коллабораторы.

Код ваших решений для заданий 1,2,3 будет собираться и запускаться в docker контейнере wtf42/mathvm (ubuntu 16.04 с пакетами python make g++) на архитектуре x86-64. Задание 4 будет проверяться в ubuntu 16.04 с пакетами python make g++ libsdl-dev.

Для того, чтобы сдать задание нужно закоммитить ваш код в репозиторий до дедлайна, пул-реквесты и прочие сообщения писать не нужно. Результаты будут появляться в табличке.

Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом.

Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать по почте geka666 at gmail.com.

Задание 1

Реализовать код для трансформации AST назад в исходный код, автоформаттер. Ваша программа должна получив на вход программу на языке MathVM (см. гитхаб) вывести эквивалентный исходный код. Основная цель задания - освоится с окружением и кодовой базой.

Задание 2

Реализовать код для трансформации AST в байткод, который описан в заголовке mathvm.h. Ваша программа должна получив на вход программу на языке MathVM и напечатать получившийся байткод. Для целей отладки, можно параллельно делать Задание 3, интерпретатор.

Задание 3

Реализовать интерпретатор байткода полученного транслятором в Задании 2, позволяющий исполнять программы на MathVM. Для тестирования в каталоге tests есть expect файлы, описывающие ожидаемый вывод.

Задание 4

JIT

Экзамен

Вопросы

Конспект