aboutsummaryrefslogtreecommitdiff
./brainfuck: Brainfuck programming language interpreter
See <http://en.wikipedia.org/wiki/Brainfuck> for more details

Usage: ./brainfuck [options] [file]

Size of each data cell is 4 byte(s)
All data cells are zeros initially

Options (defaults are in brackets):
   -s num         stack size (128)
   -d num         data size (1024)
   -t             trace execution for debugging
   -O             optimize code
   -C             translate into C (to stdout)
   -p cow         translate into Cow (to stdout)

Formats for operators '.' and ',' (output and input):
   -c, -i, -u, -o, -x  char, signed int, unsigned int, octal, hexadecimal
                       octal number must be prepended by '0' (zero),
                       and hexadecimal - by '0x'
Default i/o format -u

   -h             this help message

  file            file to execute,
                  if omitted read stdin

Standard operators: <>+-[].,
Extensions:
            ciuox - change i/o format (same as -c & others above)
            ;     - end of code (useful when reading stdin)
            #     - comment to the end of line (useful when reading files)

Examples:
 echo '+++[.-]' | ./brainfuck # count down from 3 to 1
 echo ',+++.;5' | ./brainfuck # shows 8
 echo ',>,<[->+<]>.;4 5' | ./brainfuck # shows 4+5=9
 echo 'c,u.;h' | ./brainfuck # shows 104 (ASCII code for 'h')
 echo ', [-[->+<]>];4' | ./brainfuck -t # move data pointer by 4 
 echo ',>,< [> [->+<] < -[->+<]> ]; 3 7' | ./brainfuck -t # move '7' by 3