A compiler from a C-like language to Brainfuck
Always heard that Brainfuck is Turing complete but still had doubts about its computational power? Those days are over
BF-it is a Compiler of a C-like language to Brainfuck, written in Python
You give it C-like code, and it gives you Brainfuck code with the same functionality :)
There are several reasons why I chose to create this
- I always heard that Brainfuck is Turing complete, and
therefore as strong as any other language
- I wanted to put that to the test, and find a concrete proof that it is true
- I find it beautiful how a seemingly bunch of nonsense
characters can have a logical meaning / functionality
- I wanted to take it to the extreme
- I wanted to practice my developing skills
- It seemed to be like a real challenge (and it was!)
- But mostly, and most importantly, I did it for teh lulz
Create a Brainfuck code of your choice, send it to your friends, and tell them to run it (on some online interpreter, for example)
When they receive a bunch of nonsense which does something meaningful, they will (maybe) be amazed
- Write a C-like code (example programs included) into a file
- Open your favorite command line interface
- Run
BF-it.py <path_to_code_file>
- This will compile your file and create a .bf file with Brainfuck code
- (optional parameters:
-o
for output file, and-r
for running the compiled file)
- Run
Interpreter.py <path_to_bf_file>
, this will execute the Brainfuck code
Example:
$ cat helloworld.code
int main()
{
print("Hello World!\n");
}
$ ./BF-it.py helloworld.code
Compiling file 'helloworld.code'...
Compiled successfully to 'helloworld.bf'
$ cat helloworld.bf
>[-]>[-]<>++++++++[-<+++++++++>]<.>++++[-<+++++++>]
<+.+++++++..+++.>++++++[-<------------->]<-.>+++++[
-<+++++++++++>]<.>++++[-<++++++>]<.+++.------.-----
---.>++++++[-<----------->]<-.>+++[-<------->]<--.<
$ ./Interpreter.py helloworld.bf
Hello World!
For a more interesting example, check out Tic-Tac-Toe!
- Take a look at tic_tac_toe.code in the 'examples/games' directory
- Run
./BF-it.py examples/games/tic_tac_toe.code -r
- Play around
- If you're brave, take a look at the generated Brainfuck code
- If you're very brave, try to understand it (I can't)
Please refer to the 'examples' directory. It contains examples and explanations for syntax, operations, flow, and more
If you would like to add a feature yourself, perform a pull request and add your changes. I will review them
If you found a bug, or have an idea for a feature, open an issue
- https://esolangs.org/wiki/brainfuck_algorithms for basic Brainfuck algorithms
- https://www.iamcal.com/misc/bf_debug/ for debugging Brainfuck code
- https://fatiherikli.github.io/brainfuck-visualizer/ for debugging Brainfuck code
- https://godbolt.org/ for comparing my C-like compiler to other C compilers' implementations
- https://www.lysator.liu.se/c/ANSI-C-grammar-y.html for creating a grammar
- https://introcs.cs.princeton.edu/java/11precedence/ for operator precedence
- https://logomakr.com/ for creating a logo
- https://www.youtube.com/ for setting the mood