Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

5elenay
5elenay

Posted on

     

Python Brainf*ck Compiler (Alpha)

I was bored so i made a python compiler for brainf*ck programming language.

Links

Source Code (Github)
What is Brainf*ck?

Example Brainf*ck Program

[ This program prints "Hello World!" and a newline to the screen, its  length is 106 active command characters. [It is not the shortest.]  This loop is an "initial comment loop", a simple way of adding a comment  to a BF program such that you don't have to worry about any command  characters. Any ".", ",", "+", "-", "<" and ">" characters are simply  ignored, the "[" and "]" characters just have to be balanced. This  loop and the commands it contains are ignored because the current cell  defaults to a value of 0; the 0 value causes this loop to be skipped.]++++++++               Set Cell #0 to 8[>++++               Add 4 to Cell #1; this will always set Cell #1 to 4[                   as the cell will be cleared by the loop>++             Add 2 to Cell #2>+++            Add 3 to Cell #3>+++            Add 3 to Cell #4>+              Add 1 to Cell #5<<<<-           Decrement the loop counter in Cell #1]                   Loop till Cell #1 is zero; number of iterations is 4>+                  Add 1 to Cell #2>+                  Add 1 to Cell #3>-                  Subtract 1 from Cell #4>>+                 Add 1 to Cell #6[<]                 Move back to the first zero cell you find; this will                        be Cell #1 which was cleared by the previous loop<-                  Decrement the loop Counter in Cell #0]                       Loop till Cell #0 is zero; number of iterations is 8The result of this is:Cell No :   0   1   2   3   4   5   6Contents:   0   0  72 104  88  32   8Pointer :   ^>>.                     Cell #2 has value 72 which is 'H'>---.                   Subtract 3 from Cell #3 to get 101 which is 'e'+++++++..+++.           Likewise for 'llo' from Cell #3>>.                     Cell #5 is 32 for the space<-.                     Subtract 1 from Cell #4 for 87 to give a 'W'<.                      Cell #3 was set to 'o' from the end of 'Hello'+++.------.--------.    Cell #3 for 'rl' and 'd'>>+.                    Add 1 to Cell #5 gives us an exclamation point>++.                    And finally a newline from Cell #6
Enter fullscreen modeExit fullscreen mode

Config

Check config.json first, quick information about config.json;

{"MEM":20,// MEM is the total cells for our brainfuck program."DUMP_FILE":"./result/dump.py",// The dump file that will write when program finished and got some informations about the code."COMPILE_FILE":"./result/compiled.py",// The file that will write when brainfuck code turned into python code."LOG_FILE":"./result/logs.txt",// Log file for our program actions."DEBUG":true// Allow debug mode for compiler, will log everything to console.}
Enter fullscreen modeExit fullscreen mode

Usage

Simple Usage;
python compiler.py ./example/fibonacci.bf

Output:... 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ...

And also you can check./result/dump.py for some informations about program;

# DUMP RESULT | 13/05/2021 16:59:13# =======================================================# TOTAL CELL GIVEN: 20# TOTAL CELL USED: 4# TOTAL BYTE USED: 309# MEMORY DUMP: [# CELL_0 -> 0 BYTE# CELL_1 -> 144 BYTE# CELL_2 -> 89 BYTE# CELL_3 -> 0 BYTE# CELL_4 -> 0 BYTE# CELL_5 -> 44 BYTE# CELL_6 -> 32 BYTE# CELL_7 -> 0 BYTE# CELL_8 -> 0 BYTE# CELL_9 -> 0 BYTE# CELL_10 -> 0 BYTE# CELL_11 -> 0 BYTE# CELL_12 -> 0 BYTE# CELL_13 -> 0 BYTE# CELL_14 -> 0 BYTE# CELL_15 -> 0 BYTE# CELL_16 -> 0 BYTE# CELL_17 -> 0 BYTE# CELL_18 -> 0 BYTE# CELL_19 -> 0 BYTE# ]# MINIFIED VERSION: [# LINE_1 -> +++++++++++>+>>>>++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++# LINE_2 -> ++++++++++++++<<<<<<[>[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[# LINE_3 -> -<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<-]>>[-]]<<]>>>[>>+>+<<<-]>>>[# LINE_4 -> <<<+>>>-]+<[>[-]<[-]]>[<<+>>[-]]<<<<<<<]>>>>>[++++++++++++++++++++++++++++++++++# LINE_5 -> ++++++++++++++.[-]]++++++++++<[->-<]>+++++++++++++++++++++++++++++++++++++++++++# LINE_6 -> +++++.[-]<<<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<[-]]<<[>>+>+<<<-]>># LINE_7 -> >[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]# ]# =======================================================# Code Starts Here ...
Enter fullscreen modeExit fullscreen mode

Notes

This program may have some bugs. If you found a bug, please contribute!

Top comments(4)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
raksix profile image
Raksix
Ğ
  • Location
    Turkey
  • Joined

nice

CollapseExpand
 
5elenay profile image
5elenay
I'm 15 years old programmer from Turkey. I always wanted to learn new technologies!
  • Location
    Turkey
  • Work
    Programmer at Self-Business
  • Joined

thanks!

CollapseExpand
 
olus2000 profile image
Alex Esoposting
A student eager to learn anything except from things taught at school, huge brainfuck fan, author of 2.5 esolangs and lover of everything niche, useless and fun.
  • Location
    Warsaw, Poland
  • Education
    Warsaw University of Technology (studying)
  • Work
    Junior Software Developer at COMP s. a.
  • Joined

Wait, so you compile brainfuck into valid python code? That's so beautifully useless, a gorgeous overkill. I love it!

CollapseExpand
 
5elenay profile image
5elenay
I'm 15 years old programmer from Turkey. I always wanted to learn new technologies!
  • Location
    Turkey
  • Work
    Programmer at Self-Business
  • Joined

Yeah it compile brainf*ck code to python code, thanks!

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

I'm 15 years old programmer from Turkey. I always wanted to learn new technologies!
  • Location
    Turkey
  • Work
    Programmer at Self-Business
  • Joined

More from5elenay

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp