VM осень 2017 — различия между версиями
Eakimov (обсуждение | вклад) |
Eakimov (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом. | Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом. | ||
− | Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать | + | Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать на почту geka666 at gmail.com. |
== Задание 1 == | == Задание 1 == | ||
Строка 32: | Строка 32: | ||
== Задание 4 == | == Задание 4 == | ||
JIT | JIT | ||
+ | |||
+ | == Проверка практики == | ||
+ | |||
+ | Настоятельно рекомендуется прочесть README.txt, там есть полезная информация по заданию. | ||
+ | |||
+ | Ожидается что после выполнения make в директории с решением будет создан бинарник, который с помощью скрипта тестирования tests/run.py будет проходить хотя бы базовые тесты из директории tests. | ||
+ | <div class="mw-collapsible mw-collapsed" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}" style="width:45em;"> | ||
+ | Пример запуска решения задания #1 и его результат: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <source> | ||
+ | cd students/2017/%username% | ||
+ | make | ||
+ | python ../../../tests/run.py -e ./build/debug/mvm -t ../../../tests --doublerun | ||
+ | </source> | ||
+ | <source> | ||
+ | Test "for" has PASSED | ||
+ | Test "while" has PASSED | ||
+ | Test "mul" has PASSED | ||
+ | Test "add" has PASSED | ||
+ | Test "assign" has PASSED | ||
+ | Test "sub" has PASSED | ||
+ | Test "expr" has PASSED | ||
+ | Test "div" has PASSED | ||
+ | Test "if" has PASSED | ||
+ | Test "literal" has PASSED | ||
+ | Test "bitwise" has PASSED | ||
+ | Test "function" has PASSED | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
== Экзамен == | == Экзамен == |
Текущая версия на 12:44, 29 сентября 2017
Содержание
Лекции
Преподаватель: Николай Иготти (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
Проверка практики
Настоятельно рекомендуется прочесть README.txt, там есть полезная информация по заданию.
Ожидается что после выполнения make в директории с решением будет создан бинарник, который с помощью скрипта тестирования tests/run.py будет проходить хотя бы базовые тесты из директории tests.
Пример запуска решения задания #1 и его результат:
cd students/2017/%username%
make
python ../../../tests/run.py -e ./build/debug/mvm -t ../../../tests --doublerun
Test "for" has PASSED
Test "while" has PASSED
Test "mul" has PASSED
Test "add" has PASSED
Test "assign" has PASSED
Test "sub" has PASSED
Test "expr" has PASSED
Test "div" has PASSED
Test "if" has PASSED
Test "literal" has PASSED
Test "bitwise" has PASSED
Test "function" has PASSED