A compiler is a computer program which translates source code written in a high-level programming language into executable machine code. The act of doing this is called compilation.
Most compilers perform the following actions, sometimes in a single pass over the source code, and sometimes in several passes. Program optimisation may take place before and during the 'code generation' stage.
- Lexical analysis: convert source code into sequence of tokens.
- Syntactic analysis: structure tokens into parse tree.
- Semantic analysis: annotate parse tree with semantic actions.
- Code generation: produce the final machine code.