- Типы данных: целочисленный, символьный. Дополнительно: логический, строковый
- Операции сравненения: >, <, ==, !=, >=, <=. Дополнительно: +, -
- Литералы: логические, строковые, символьные. Дополнительно: целые (10-ричное)
- Функции стандартной библиотеки: лексикографическое сравнение строк; возведение числа в степень
- Инструкции: ветвление, цикла
- Дополнительно: константы , комментарии, система тестирования, свой синтаксис для notepad++
- Качаем репозиторий
- В настройках проекта меняем выходной каталог на путь до папки result
- В проекте BPA-testing меняет значение двух констант на пути до .exe файла, и до папки с тестовыми данными (result/TEST_CASES)
Либо через консоль, обращаемся к .exe файлу с передачей параметров; обязательный -in:
Либо через запуск проекта BPA-testing (прогонит сразу все тесты)
Либо можно указать в настройках основного проекта в пункте Отладка аргументы для запуска, делаем аналогично запуску через консоль
На выходе вы получите .log и .asm в папке с входным файлом, код ассемблера просто копируете в проект BPA-asm.
- Осторожнее со вложеностью конструкций, например if внутри if скорее всего будет приводить к ошибке в ассемблере, это исправляется изменением флагов в CodeGeneration.cpp из логических в целочисленные.
- Вызов функции в другой функции иногда вызывает ошибку, а иногда нет, как показано в test_2.txt
- Местами вставленны костыли, например в лексическом анализе при логических литералах. При внесеннии изменений будьте бдительны!
- У курсача была гнилая основа, а потому и возникали многие трудности, вам осталось переписать не так много, и будет счастье не только вам, но и будующим поколениям.