Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется написать программу, генерирующую код на основе аннотированного абстрактного синтаксического дерева полученного из подмножества выбранного вами языка программирования.
Сгенерированный код должен быть написан на языке программирования машинного уровня, например языке Ассемблера, WebAssembly, JVM, CLR.
Дальнейший перевод сгенерированного кода в машинный код (либо запуск в случае кода для VM) должен осуществляться стандартными инструментами, например nasm, gcc, java. Инструкции по установке необходимых инструментов должны быть включены в файл README.
Компилятор должен иметь отдельные ключи для режимов "сгенерировать код и остановиться", "сгенерировать код и транслировать его в исполняемый файл / исполнить".
Тесты НЕ должны проверять текстовое содержимое сгенерированного кода. Вместо этого они должны запускать полученные исполняемые модули и сравнивать полученный от них вывод с эталонным.
Дополнительно рекомендуется вместо ручного составления эталонного вывода получать его запуском стаднартного компилятора (например fpc, gcc) на том же самом исходном коде.
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text.
Выходные данные должны быть файлом на языке низкого уровня или исполняемым файлом в зависимости от выбранного режима.