Giter Site home page Giter Site logo

brainfuck's Introduction

Python BrainFuckA interpreter

wakatime
Интерпретатор языка BrainFuckA, написанный на языке Python.
BrainFuckA - это brainfuck-подобный язык программирования с дополнениями для удобства (см. список команд).
Код, написанный на оригинальном BrainFuck так же будет корректно работать.

Использование

Для запуска вам не нужны сторонние модули, что бы запустить .bf скрипт просто выполните в консоли следующую команду:

python interpreter.py main.bf

Для запуска уже собранного интерпретатора просто укажите имя файла интерпретатора, а после имя файла со скриптом BrainFuckA:

  • В Windows:
./interpreter.exe main.bf
  • В Linux/Unix:
./interpreter main.bf

Если вы видите ошибку permission denied: ./interpreter при запуске в Linux, то назначьте файл исполняемым командой sudo chmod +x interpreter

После названия скрипта интерпретатора идёт название файла со скриптом brainfuck. Поддерживаемые расширения файлов:

  • .bf
  • .b


После имени файла, в команде запуска скрипта, можно указать параметр format, тогда исходный файл со скриптом будет перезаписан на отформатированный скрипт.

Параметры интерпретатора

После первого запуска скрипта в папке с интерпретатором создастся файл params.json, открыв его Вы сможете найти в нём следующие параметры:

Параметр Значение по умолчанию Возможные значения Описание
memorySize 30.000 Любое числовое значение. Количество ячеек памяти, выделенных под программу
memoryManagement OFF OFF/AUTO/JUMP OFF — строгое выделение памяти, при вводе некорректного индекса ячейки вызывает ошибку.
AUTO — 1 ячейка по умолчанию, при использовании оператора > при несуществующем индексе ячейки памяти добавляется новая со значением, равным 0.
JUMP — При выборе ячейки памяти менее 0 или более выделенного размера происходит перенос выбора ячейки с нулевой на последнюю, с последней на нулевую.
type CLASSIC CLASSIC/ADVANCED CLASSIC — Классический интерпретатор, имеет размер ячеек 8 бит может быть переполнен.
ADVANCED — Стандартный размер переменных Python, не может быть переполнен.

В режиме управления памятью AUTO, параметр memorySize отвечает за ограничение размера выделяемой памяти, ограничение можно отключить, установив параметр в значение -1

Cписок команд

Оператор Описание
+ Прибавление единицы к текущей ячейке на 1
- Уменьшение значения текущей ячейки на 1
> Сдвиг выбранной ячейки вправо
< Сдвиг выбранной ячейки влево
. Вывести значение текущей ячейки в кодировке ASCII(может быть применён декоратор *, см. ниже)
, Ввести числовое значение в текущую ячейку (может быть применён декоратор *, см. ниже)
[ Начать цикл, пока значение текущей ячейки не равно нулю
] Конец цикла (см. выше)
GH Создать портал с именем H (имена по аналогии)
gH Перейти к порталу с именем H и продолжить выполнение после него
c Копировать значение из текущей ячейки
p Вставить ранее скопированное значение в текущую ячейку
' Напечатать символ табуляции
" Напечатать символ переноса строки
# Комментарий, пример: #Это комментарий!#
0 Обнуление текущей ячейки


Декоратор * применяется к операторам . и , для изменения типа ввода, ставиться перед нужным оператором, примеры: *. *,.
При применении декоратора к оператору . он начинает выводить сырые значения из ячейки (то-есть числовое значение), в ином случае выводит символ, соответствующий таблице ASCII.
При применении декоратора к оператору , будет происходить конвертация введённого символа в код ASCII, иначе происходит ввод сырого числового значения, без конвертации.

brainfuck's People

Contributors

andcool-systems avatar wavy-cat avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.