https://github.com/awesmubarak/brainfoose
A brainfuck REPL
https://github.com/awesmubarak/brainfoose
brainfuck esoteric
Last synced: about 2 months ago
JSON representation
A brainfuck REPL
- Host: GitHub
- URL: https://github.com/awesmubarak/brainfoose
- Owner: awesmubarak
- License: mit
- Created: 2017-03-27T19:32:34.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2019-09-19T14:19:07.000Z (over 5 years ago)
- Last Synced: 2025-02-24T13:03:29.901Z (2 months ago)
- Topics: brainfuck, esoteric
- Language: Python
- Homepage:
- Size: 22.5 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
==========
Brainfoose
==========A brainfuck REPL.
Installation
------------Pypi (recommended):
``sudo pip3 install brainfoose``
Manual installation using git master:
``git clone https://github.com/abactel/brainfoose``
``cd brainfoose``
``pip install -r requirements.txt``
``sudo setup.py install``
Usage
-----Usage:
``brainfoose [--run_command=]````brainfoose [--tape_size=]``
``brainfoose [--verify_program=]``
``brainfoose (-h | --help)``
``brainfoose --version``
Options:
-h, --help Show this message
--version Show version information
--run Run a command without starting a REPL
--tape_size= Set size of tape [default: 3000]The syntax of the language is as follows:
+--------+----------------------------------------------------------------------+
| Token | Meaning |
+========+======================================================================+
| ``?`` | Print a help screen |
+--------+----------------------------------------------------------------------+
| ``>`` | Increment the data pointer by 1. |
+--------+----------------------------------------------------------------------+
| ``<`` | Decrement the data pointer by 1. |
+--------+----------------------------------------------------------------------+
| ``+`` | Increment the value at the data pointer by 1. |
+--------+----------------------------------------------------------------------+
| ``-`` | Decrement the value at the data pointer by 1. |
+--------+----------------------------------------------------------------------+
| ``.`` | Output the byte at the data pointer. The byte is formatted to the |
| | character it represents. |
+--------+----------------------------------------------------------------------+
| ``,`` | Store a value at the data pointer’s position. The character is |
| | as a decimal byte representing the character. The character is |
| | accepted form a standard input prompt. |
+--------+----------------------------------------------------------------------+
| ``[`` | If the value at the data pointer is 0, move to matching ``]``. |
+--------+----------------------------------------------------------------------+
| ``]`` | If the value at the data pointer is not 0, move to matching ``[``. |
+--------+----------------------------------------------------------------------+
| ``$`` | Display tape up to last non-zero cell. |
+--------+----------------------------------------------------------------------+
| ``&`` | Reset tape. |
+--------+----------------------------------------------------------------------+
| ``%`` | Load program from file, syntax: ``%[filename]``. |
+--------+----------------------------------------------------------------------+The wikipedia page on brainfuck includes the following tutorial:
::[ This program prints "Hello World!" and a newline to the screen, its
length is 106 active command characters. [It is not the shortest.]This loop is an "initial comment loop", a simple way of adding a comment
to a BF program such that you don't have to worry about any command
characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
ignored, the "[" and "]" characters just have to be balanced. This
loop and the commands it contains are ignored because the current cell
defaults to a value of 0; the 0 value causes this loop to be skipped.
]
++++++++ Set Cell #0 to 8
[
>++++ Add 4 to Cell #1; this will always set Cell #1 to 4
[ as the cell will be cleared by the loop
>++ Add 2 to Cell #2
>+++ Add 3 to Cell #3
>+++ Add 3 to Cell #4
>+ Add 1 to Cell #5
<<<<- Decrement the loop counter in Cell #1
] Loop till Cell #1 is zero; number of iterations is 4
>+ Add 1 to Cell #2
>+ Add 1 to Cell #3
>- Subtract 1 from Cell #4
>>+ Add 1 to Cell #6
[<] Move back to the first zero cell you find; this will
be Cell #1 which was cleared by the previous loop
<- Decrement the loop Counter in Cell #0
] Loop till Cell #0 is zero; number of iterations is 8The result of this is:
Cell No : 0 1 2 3 4sFurther reading
---------------- https://learnxinyminutes.com/docs/brainfuck/
- https://en.wikipedia.org/wiki/Brainfuck
- http://blog.klipse.tech/brainfuck/2016/12/17/brainfuck.html