Created
May 16, 2016 04:12
-
-
Save starfys/1d96fc03b12b31d4727500558a24ad68 to your computer and use it in GitHub Desktop.
Brainfuck to C compiler, Takes Brainfuck at stdin, prints c to stdout
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import sys | |
print("//This converts brainfuck in stdin to c on stdout") | |
brainfuck_program = sys.stdin.read().rstrip() | |
#Print the starting code | |
print("#include <stdio.h>") | |
print("int main(){") | |
print("char data[100000] = {0};") | |
print("char* pointer = data;") | |
conversion = { | |
'>':'++pointer;', | |
'<':'--pointer;', | |
'+':'++*pointer;', | |
'-':'--*pointer;', | |
'.':'putchar(*pointer);', | |
',':'*pointer = getchar();', | |
'[':'while(*pointer) {', | |
']':'}'} | |
print('\n'.join(map(lambda character: conversion.get(character, ''), brainfuck_program))) | |
#Print the ending code | |
print("return 0;") | |
print("}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment