Structure of a Compiler