A Brainfuck interpreter written in Julia. Because <-->.
Execute a string containing a Brainfuck program using the brainfuck function:
using Brainfuck
brainfuck("<-->")
To work with a program stored in a file, use readall to generate a string
to pass to brainfuck:
using Brainfuck
path = Pkg.dir("Brainfuck", "test", "programs", "hello2.bfk")
brainfuck(readall(path))
If you want to observe the program state evolve operation-by-operation, you
can set the debug keyword argument to false when running brainfuck:
using Brainfuck
path = Pkg.dir("Brainfuck", "test", "programs", "hello2.bfk")
brainfuck(readall(path), debug = true)
Be warned that the state evolution of the Brainfuck interpreter will produce a lot of output for even the simplest programs.
OP1: >
Move the Memory Pointer to the next array cell.
OP2: <
Move the Memory Pointer to the previous array cell.
OP3: +
Increment the array cell pointed at by the Memory Pointer.
OP4: -
Decrement the array cell pointed at by the Memory Pointer.
OP5: ,
Read a character from STDIN and put its ASCII value into the cell pointed at by the Memory Pointer.
OP6: .
Print the character with ASCII value equal to the value in the cell pointed at by the Memory Pointer.
OP7: [
Move to the command following the matching ] if the value in
the cell pointed at by the Memory Pointer is zero. Note that
[ and ] commands nest like pairs of parentheses, and
matching pairs are defined in the same way as for parentheses.
OP8: ]
Move to the command following the matching [ if the value in
the cell pointed at by the Memory Pointer is non-zero. Note that this
implies that the interpreter will work its way backwards through the
source code, rather than forwards.