There is such a thing as an interpreter. A interpreter can interpret. When an interpreter is to interpret: There is a scribe called Troz. There is a mathematician called Zort. There is a linguist called The_World. There is an inputter called Narf. I have a phrase called Poit. Narf is to readOne Poit. The_World's first operand is Poit. If Narf says it's done then I am to quit. The_World's second operand is "+". The_World is to compare. If The_World says it's equal then Troz is to write "*p++;\n". The_World's second operand is "-". The_World is to compare. If The_World says it's equal then Troz is to write "*p--;\n". The_World's second operand is "[". The_World is to compare. If The_World says it's equal then Troz is to write "while (*p) {\n". The_World's second operand is "]". The_World is to compare. If The_World says it's equal then Troz is to write "}\n". The_World's second operand is ">". The_World is to compare. If The_World says it's equal then Troz is to write "p++;\n". The_World's second operand is "<". The_World is to compare. If The_World says it's equal then Troz is to write "p--;\n". The_World's second operand is ".". The_World is to compare. If The_World says it's equal then Troz is to write "*p=getchar;\n". The_World's second operand is ",". The_World is to compare. If The_World says it's equal then Troz is to write "putchar(*p);\n". If 1 then I am to loop. When this program starts: There is a scribe called We_Shall_Try_to_Take_Over_The_World. There is an interpreter called Brain. We_Shall_Try_to_Take_Over_The_World is to write "#include \n". We_Shall_Try_to_Take_Over_The_World is to write "#include \n". We_Shall_Try_to_Take_Over_The_World is to write "char *p = calloc(30000, 1);\n" We_Shall_Try_to_Take_Over_The_World is to write "main(){\n". Brain is to interpret.