Talk:WTFZOMFG

WTFZOMFG to C compiler
/*   *************************    * Compiler For WTF to C * * Made By Jay Songdahl * ************************* */ int main (int argc, const char * argv[]) { char INSTR; char NAME[200]; printf("#include \nint main { int tape[30000]; int ptr = 0; "); //set up the C code while(INSTR != -1) { INSTR=getchar; //below are the translations for each WTFZOMFG keyword to C. 		 if(INSTR==':') { scanf("%s", &NAME); printf("goto %s; ", NAME);} else if(INSTR==';') { scanf("%s", &NAME); printf("\n%s:\n", NAME);} else if(INSTR=='+') { printf("++tape[ptr]; ");} else if(INSTR=='-') { printf("--tape[ptr]; ");} else if(INSTR=='^') { printf("tape[ptr]=getchar; ");} else if(INSTR=='v') { printf("putchar(tape[ptr]); ");} else if(INSTR=='?') { scanf("%s", &NAME); printf("if(tape[ptr]) goto %s; ", NAME);} else if(INSTR=='!') { scanf("%s", &NAME); printf("if(! tape[ptr]) goto %s; ", NAME);} else if(INSTR=='>') { printf("++ptr; ");} else if(INSTR=='<') { printf("--ptr; ");} else if(INSTR=='=') { scanf("%s", &NAME); printf("tape[ptr] = %s; ", NAME);} else if(INSTR=='/') { printf("scanf(\"%%i\", &tape[ptr]); ");} else if(INSTR=='\\') { printf("printf(\"\%%i\", tape[ptr]); ");} else if(INSTR=='.') { NAME[0]=getchar; printf("putchar(%i); ", NAME[0]);} else if(INSTR=='~') { scanf("%s", &NAME); printf("tape[ptr] += %s; ", NAME);} else if(INSTR=='_') { scanf("%s", &NAME); printf("ptr = %s; ", NAME);} else if(INSTR=='(') { printf("while(tape[ptr]){ ");} 	else if(INSTR==')') { printf("} ");} else if(INSTR=='{') { printf("if(tape[ptr]){ ");} else if(INSTR=='}') { printf("}");} else if(INSTR=='|') { printf("tape[ptr] = ! tape[ptr]; ");} else if(INSTR=='[') { while(getchar != ']'); } else if(INSTR=='#') while(getchar != '\n'); else if(INSTR=='a') printf("tape[ptr]+=tape[ptr+1]; "); else if(INSTR=='s') printf("tape[ptr]-=tape[ptr+1]; "); else if(INSTR=='m') printf("tape[ptr]*=tape[ptr+1]; "); else if(INSTR=='d') printf("tape[ptr]/=tape[ptr+1]; "); else if(INSTR=='@') {NAME[0]=getchar; printf("tape[ptr]-=%i; ", NAME[0]); } else if(INSTR=='&') { printf("tape[ptr+1]=tape[ptr]; ");} else if(INSTR=='%') { scanf("%s", &NAME); printf("tape[%s]=tape[ptr]; ", NAME);} else if(INSTR== '\'' ){ printf("printf(\""); NAME[0]=0; while(NAME[0] != '"') {NAME[0]=getchar; if(NAME[0]!='"') putchar(NAME[0]);} printf("\"); ");} else if(INSTR!=' ' && INSTR!= '\n' && INSTR!='\t' && INSTR!=EOF) fprintf( stderr, "Error: Unknown Keyword: %c\n", INSTR); //if the command isn't whitespace, flag an error }																					 	printf(" return 0; }"); return 0; }
 * 1) include 

This code had a bug (it wasn't initializing ptr to 0, causing compiled programs to crash). I fixed it. --Marinus 15:57, 13 September 2010 (UTC)