A brainfuck REPL.
Project description
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=<programs>]
brainfoose [--tape_size=<tape_size>]
brainfoose [--verify_program=<tape_size>]
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=<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 8
The result of this is:
Cell No : 0 1 2 3 4s
Further reading
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file brainfoose-2.0.3-py2.py3-none-any.whl.
File metadata
- Download URL: brainfoose-2.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0114322ce03dd97a4aab38e97208dc612ffa06d960320f0898a0590506411283
|
|
| MD5 |
53bb9fae8f6c632d53b7452fa1a13bc0
|
|
| BLAKE2b-256 |
00792d786a973c1cb3d9473c7310148bb9f73d07ec3ce6b624b257efa2431df0
|