Версия 1.1.0a
Автор: Стрелец Илья (skyres21@gmail.com)
Данное приложение является интерпретатором для языка Befunge
- Python версии не ниже 3.7
- Модули:
befunge/
- Тесты:
tests/
Пример запуска: ./python3 runner.py
--log-level
- указать уровень логгирования: INFO(по умолчанию), DEBUG, ERROR, CRITICAL, FATAl (Прим: python3 runner.py --log-level DEBUG)-p
- ввод через цепочку вызовов (Прим: cat program.txt | python3 runner.py -p)-f
- чтение из файла (Прим: python3 runner.py -f program.txt)--debug
- debug-режим (доступен только для файла и программы, введённой вручную)-h
,--help
- вывод укороченной версии данного файла
>1 v > v 2 ^ .:*<
- Вывод степеней двойки начиная с 2
Ниже перечислены команды языка Befunge. Каждая команда кодируется одним ASCII-символом. Для стековых операций в скобках дан их эквивалент в языке Forth. Команды, берущие параметры из стека, удаляют их со стека.
Инструкция | Описание |
---|---|
> | Двигаться вправо |
< | Двигаться влево |
^ | Двигаться вверх |
v | Двигаться вниз |
_ | Двигаться вправо, если на вершине стека 0, иначе — влево. |
| | Двигаться вниз, если на вершине стека 0, иначе — вверх. |
? | Двигаться в случайном направлении |
# | Пропустить следующую ячейку ("трамплин") |
@ | Конец программы |
Инструкция | Описание |
---|---|
: | Поместить в стек копию вершины (forth:DUP) |
\ | Обменять местами вершину и подвершину (forth:SWAP) |
$ | Удалить вершину (forth:DROP) |
Инструкция | Описание |
---|---|
p | "PUT": со стека извлекаются координаты ячейки и ASCII-код символа, который помещается по этим координатам |
g | "GET": со стека извлекаются координаты ячейки; ASCII-код символа по этим координатам помещается в стек |
Инструкция | Описание |
---|---|
0-9 | Поместить число в стек |
" | Начало/конец символьного режима, в котором ASCII-коды всех текущих символов программы помещаются в стек |
Инструкция | Описание |
---|---|
+ | Сложение вершины и подвершины (forth:+) |
- | Вычитание вершины и подвершины (forth:-) |
* | Умножение вершины и подвершины (forth:*) |
/ | Целочисленное деление (forth:/) |
% | Остаток от деления (forth:MOD) |
Инструкция | Описание |
---|---|
! | Отрицание: нуль на вершине заменяется на 1, ненулевое значение — на 0 (forth:0=) |
` | Сравнение "больше, чем": если подвершина больше вершины, в стек помещается 1, иначе 0 (forth:>) |
Инструкция | Описание |
---|---|
& | Запросить у пользователя число и поместить его в стек |
~ | Запросить у пользователя символ и поместить в стек его ASCII-код |
. | Распечатать вершину стека как целое число (forth:.) |
, | Распечатать символ, соответствующий ASCII-коду на вершине стека (forth:EMIT) |