1. 程式人生 > >C實現Brainfuck編譯器

C實現Brainfuck編譯器

#include <stdio.h>
main(int a,char *v[])
{
	char c;
	FILE *p=fopen(v[1],"r");
	freopen("a.c","w",stdout);
	printf("#include <stdio.h>\n"
		"char a[9999];\n"
		"int c;\n"
		"main()\n"
		"{\n");
	while((c=fgetc(p))!=EOF)
	{
		if(c==62)
		{
			printf("++c;\n");
		}
		else if(c==60)
		{
			printf
("--c;\n"); } else if(c==43) { printf("++a[c];\n"); } else if(c==45) { printf("--a[c];"); } else if(c==46) { printf("putchar(a[c]);\n"); } else if(c==44) { printf("a[c]=getchar();\n"); } else if(c==91) { printf("while(a[c])\n" "{\n"); } else if(c==
93) { printf("}\n"); } } printf("}\n"); }

這樣使用:

compile.exe src.bf

然後,a.c就是編譯後的結果。