Brainfuck:Compiler
Der hier eingesetzte Compiler übersetzt erstmal in C, welches dann mittels gcc in Maschinencode compiliert werden kann. Hier der Compiler:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define FELD_SIZE 512
void printHead()
{
printf("#include <stdio.h>\n");
printf("#include <stdlib.h>\n");
printf("\nunsigned char feldA[%d];", FELD_SIZE);
printf("\nunsigned char *feld;");
printf("\nint main()\n");
printf("{\n");
printf("feld = &feldA[0];\n");
printf("feld += %d;\n", FELD_SIZE / 2);
return;
}
void printFoot()
{
printf("}\n");
return;
}
void nextline()
{
int c;
while((c = getchar()) != EOF)
if(c == '\n')
return;
return;
}
int main()
{
int c;
printHead();
while((c = getchar()) != EOF)
{
switch(c)
{
case '>': printf("feld++;\n"); break;
case '<': printf("feld--;\n"); break;
case '+': printf("(*feld)++;\n"); break;
case '-': printf("(*feld)--;\n"); break;
case '.': printf("putchar(*feld);\n"); break;
case ',': printf("*feld = getchar();\n"); break;
case '[': printf("while(*feld)\n{\n"); break;
case ']': printf("}\n"); break;
}
}
printFoot();
return 0;
}
FELD_SIZE muss eventuell erhöht werden.