Skip to content

Instantly share code, notes, and snippets.

@starfys
Created May 16, 2016 04:12
Show Gist options
  • Save starfys/1d96fc03b12b31d4727500558a24ad68 to your computer and use it in GitHub Desktop.
Save starfys/1d96fc03b12b31d4727500558a24ad68 to your computer and use it in GitHub Desktop.
Brainfuck to C compiler, Takes Brainfuck at stdin, prints c to stdout
#!/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