README

December 6, 2015 ยท View on GitHub

              ENDLESS TAPE BRAINFUCK INTERPRETER
                        ______________

__________________________ / \ __________________________ / / / / / / / etbi \ \ \ \ \ \
0 / 0 / 0 / 0 / 0 / 0 / 0/\0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 //////| |______ | +-<>.,[] | |________________|

a brainfuck interpreter featuring an endless tape in both directions


etbi can interpret brainfuck source files with an endless tape of cells with the size of a char, initially set to 0. Use it with etbi FILE', or run one of the built-in examples with etbi -e NAME'. You can always get help with `etbi --help'.

etbi also features an interactive REPL-like (Read Eval Print Loop) mode, which you can access using etbi -i'. In the interactive mode you can easily test snippets of brainfuck code, after which the new state of the tape is shown for easy debugging. The interactive mode features a few other modes, which you can see by typing !help'.

etbi implements a few simple optimizations:

  • Movement contraction: multiple movement instructions following each other are added together to one instruction with an argument.
  • Alteration contraction: multiple alteration instructions following each other are added together to one instruction with an argument.
  • Clear loop optimization: loops which can only end with the current cell ending up empty such as '[-]' are converted to a single clear instruction which sets the current cell to 0.
  • Scan loop optimization: loops which are scanning all cells in a direction until they find one set to 0, such as '[>]' are converted to a single instruction which uses memchr or memrchr to find one faster.

To install etbi simply run `./configure && make && sudo make install'.

etbi is licensed under the GPLv3+, see `COPYING' for the full license text.