これはpythonで書いたbfからCへのトランスレータ。wikipediaの解説、そのまま。
import sys
fname = sys.argv[1]
f = open(fname)
source = f.read()
f.close()
header = """
#include
int main(int argc, char**argv){
char array[30000];
char *ptr=array;
"""
footer = """
return 0;
}
"""
mapping = {
'>': "++ptr;",
'<': "--ptr;",
'+': "++*ptr;",
'-': "--*ptr;",
'.': "putchar(*ptr);",
',': "*ptr=getchar();",
'[': "while (*ptr) {",
']': "}",
}
outname = fname[:-2]+'c'
f = open(outname, 'w')
f.write(header)
for c in source:
o = mapping.get(c, '');
f.write(o +'\n')
f.write(footer)
f.close()
0 件のコメント:
コメントを投稿