Here is a brainfuck interpreter!

Enter Brainfuck code here

Which scheme?

Behaviour on over- (or under-) flow

Speed (0 to 100%, logarithmic increase from 1 char per second to as fast as possible)

Here is where any output will show up (type anywhere for input)

No code entered

The theory

Imagine an infinite tape, on which are cells which can contain a number. they're all 0 when the program starts.

this isn't too dissimilar to RAM; you have an endless tape of ones and zeros (actually, it's not endless, but 500 mb is the bare minimumm for devices nowdays. Can you imagine using up all those 500 million cells with brainfuck? I can't). In fact, all programs manipulate this tape on some level.

You can use the Brainfuck operators to directly modify the tape. See the next section.

Brainfuck core operations

Valid operations are

> increment the pointer (+1),

< decrement the pointer (-1),

+ increment the cell in the memory cell where the pointer is located,

- decrement the cell in the memory cell where the pointer is located,

. send the value of the pointed cell as output (treated as an ASCII value),

, insert an input cell (user input) in the memory cell where the pointer is located (ASCII value),

[ if the pointed cell is not 0, go into the code contained within the brackets

] if the pointed cell is not 0 then jump to the instruction after the corresponding [

As abriged from dCode.fr, retrieved on 2023-06-23

56i-bf operations

All of the above plus:

Syntax Description Example
( ) Defines a function, which acts like a macro in c copy([>+>+<<-]>>[-<<+>>]), called >>+copy (names cannot be subsets!!!)
{ } Names the cell we're in and when called later, moves us to tdat cell. >{counter}, called {counter}
Defines a string, which will then be placed into the cells from current pointer to the end of input. the beggining and end are in {beggining} and {end}  
* * Defines a block of code which does a meaningful tding *[->+<]*
+10 Repeats the value before the number x (in this case, increment and ten) times into the current pointer location +10 to repeat an instruction, *[->+<]>*10 to repeat a block of code