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.