Проєкт, розроблений під час технологічної практики в компанії KeepSolid. Являє собою інтерпретатор езотеричної мови програмування BrainFuck, вигаданої Урбаном Мюллером у 1993 році.
Інтерпретатор виконує код програми, використовуючи вектор комірок пам'яті, покажчик на поточну комірку та стек. У BrainFuck набір команд мінімальний: вони дозволяють лише змінювати значення в комірках пам'яті, переміщувати покажчик та здійснювати введення/виведення даних.
Основні етапи виконання:
- Зчитування джерельного коду з файлу;
- Початкова перевірка коду на критичні помилки та токенізація;
- Ініціалізація вектора даних;
- Послідовна інтерпретація команд до кінця коду програми.
Нижче наведено таблицю всіх команд, наявних у даній мові:
| Команда | Опис |
|---|---|
> |
перейти до наступної комірки |
< |
перейти до попередньої комірки |
+ |
збільшити значення в поточній комірці на 1 |
- |
зменшити значення в поточній комірці на 1 |
. |
надрукувати значення поточної комірки |
, |
ввести ззовні значення і зберегти в поточну комірку |
[ |
якщо значення поточної комірки — нуль, перейти вперед по тексту програми до ] з урахуванням вкладеності |
] |
якщо значення поточної комірки не нуль, перейти назад по тексту програми до [ з урахуванням вкладеності |
Після клонування джерельного коду відкрийте його теку в терміналі/консолі та зберіть виконуваний файл використовуючи CMake:
mkdir build
cd build
cmake ..
cmake --build .Для компіляції програми достатньо лише запустити її з командного рядка, передавши шлях файлу з кодом Brainfuck у якості аргументу:
./brainfuck [шлях до файлу]При виникненні помилок програма автоматично закривається та виводить повідомлення про помилку.