__ __ _ ___ _ _ __ _ _ _ ___ __ _ __ _ _ ___ __ _ |_ (_ / \ | / \|_)|_ |_)|_)|_| | |\||_ | |/ |/ / / \|V||_) | | |_ |_) |____)\_/ | \_/| |__ |_)| \| |_|_| || |_|\_|\ \__\_/| || _|_|__|__| \ by Kang Seonghoon <esotope+bfc@mearie.org> This is the Esotope Brainfuck Compiler: the world's most optimizing Brainfuck- to-something compiler. Well, it is not a Something-to-Brainfuck compiler like Jeffry Johnston's BFBASIC, but it translates the Brainfuck code into efficient target language code (and possibly human-readable), so in this sense it is actually a _decompiler_ rather than compiler. There are many Brainfuck-to-C compilers (or Brainfuck-to-ELF compiler, and so on) available, but there are almost no compiler which can translate the following Brainfuck code: >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[ <++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+. ...into something like the following code: /* generated by esotope-bfc */ #include <stdio.h> #include <stdint.h> #define PUTS(s) fwrite(s, 1, sizeof(s)-1, stdout) static uint8_t m[30000], *p = m; int main(void) { PUTS("Hello World!"); return 0; } Surprisingly I had seen no compiler reached this one! So I started to make my own compiler; Esotope Brainfuck Compiler is the result. (Actually, there are now one or two other compilers reached this state, but they are inspired by Esotope Brainfuck Compiler.) ========== HOW TO USE ========== Esotope Brainfuck Compiler requires Python 2.5 or later. Optionally you can use Psyco JIT compiler for better performance; Psyco is certainly required for very large Brainfuck code, including Jon Ripley's The Lost Kingdom. Use "esotope-bfc" Python script to invoke Esotope Brainfuck Compiler. It can read the code from the given file, or standard input ("-"): $ ./esotope-bfc - +[] ^D /* generated by esotope-bfc */ #include <stdio.h> #include <stdint.h> static uint8_t m[30000], *p = m; int main(void) { while (1); /* infinite loop */ } ======= LICENSE ======= Esotope Brainfuck Compiler is written by Kang Seonghoon. It can be freely used and redistributable under the terms of MIT license.