Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.2.2 Applications generation

Stages of compilation

Compilation is split into several stages:

  • Lexical analysis: The source code is tokenised into a stream of tokens, which are the basic building blocks of the language (e.g. keywords, identifiers, literals, operators, etc.).
  • Syntax analysis: The stream of tokens is parsed into a syntax tree, which represents the structure of the program according to the grammar of the language.
  • Semantic analysis: The syntax tree is checked for semantic errors (e.g. type checking, variable declaration, etc.) and annotated with additional information (e.g. symbol tables, type information, etc.).
  • Intermediate code generation: An intermediate representation of the program is generated, which is often a lower-level representation that is easier to optimize and translate into machine code.
  • Optimization: The intermediate code is optimized to improve performance, reduce memory usage,or achieve other goals (e.g. inlining, loop unrolling, dead code elimination, etc.).
  • Code generation: The optimized intermediate code is translated into machine code or assembly language, which can be executed by the target platform.