/brainfuck

Brainfuck interpreter

Primary LanguageC++Apache License 2.0Apache-2.0

brainfuck

Brainfuck interpreter

The brainfuck language uses a simple machine model consisting of the program and instruction pointer, as well as an array of at least 30,000 byte cells initialized to zero; a movable data pointer (initialized to point to the leftmost byte of the array); and two streams of bytes for input and output (most often connected to a keyboard and a monitor respectively, and using the ASCII character encoding).

Commands

  • increment the data pointer (to point to the next cell to the right).

  • < decrement the data pointer (to point to the next cell to the left).
    • increment (increase by one) the byte at the data pointer.
    • decrement (decrease by one) the byte at the data pointer.
  • . output the byte at the data pointer.
  • , accept one byte of input, storing its value in the byte at the data pointer.
  • [ if the byte at the data pointer is zero, then instead of moving the instruction pointer forward to the next command, jump it forward to the command after the matching ] command.
  • ] if the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it back to the command after the matching [ command.