import sys
from sh import gcc
from sh import rm
import fileinput

translate = {'>': 'ptr++;',
             '<': 'ptr--;',
             '+': '(*ptr)++;',
             '-': '(*ptr)--;',
             '.': 'putchar(*ptr);(*ptr & 1) ? fflush(stdout) : (void)0;',
             ',': '*ptr = (unsigned char)getchar();',
             '[': 'while(*ptr){',
             ']': '}'}

boilerplate = """#include <stdio.h>

int main(int argc, char** argv) {
    unsigned char data[4096] = {0};
    unsigned char* ptr = data;"""

bf = ''.join(*[fileinput.input()])

program = boilerplate

for ch in bf:
    program += translate.get(ch,'')

program += '}'

f = open('.bfc.tmp.c','w')
f.write(program)
f.close()

gcc('-o','b.out','-Os','-ggdb','-g3','.bfc.tmp.c')
