brainless
v0.1.0
Published
Interpreter for the Brainfuck esoteric language
Downloads
2
Readme
brainless
Interpreter for the Brainfuck esoteric language
The following features are supported:
- Almost unlimited number of cells. The ECMA specification for the maximum array length is an unsigned 32-bit
integer,
2^32-1 = 4,294,967,295 cells
.
Negative pointer values are also valid, but they are stored in a separate tape. This means that the total tape length is2*(2^32-1) = 8,589,934,590 cells
.
The state of the program when the pointer is outside these valid ranges is undefined. - Each cell stores an IEEE 754 double-precision integer (64 bits), so negative numbers and UTF8 multibyte characters are allowed.
- It recognizes the usual tokens, but adds the de-facto
#
for debugging purposes. Prints a json object to the stdout, something similar to this:{"pointer":-1,"tape":{"p":[97,98,99,0],"n":[null,0]}}
. - It doesn't recognize the token
!
. There's a cli option to enter an input string.
Tokens:
Usage
If the program needs to read an input value but no string is provided, it prompts a cli message asking for a character:
$ brainfuck examples/rot13
> a
n
> b
o
> c
p
Send a SIGINT signal (ctrl+c) to kill the process.
CLI
$ brainfuck -h
Usage: brainfuck [options] <input_file>
Interpreter for the Brainfuck esoteric language
-i, --input=STRING STRING to read during the program execution
-h, --help Display this help message and exit
-v, --version Output version information and exit
Report bugs to <[email protected]>.
For example:
$ brainfuck examples/reverse -i abc
cba
Note: If the file doesn't exist and doesn't have an extension, it tries to read the same file with the extension .bf
.
Programmatically
module(code[, input]) : undefined
Executes the given code.
var bf = require('brainless');
bf(',[>,]<[.<]', 'abc');
// cba