Overview
The compiler architecture is based around units of work called queries. Queries depend only on other queries and may be executed at any time during compilation. This contrasts with traditional pass based architectures that compile the entire source in stages.
The root of the compiler source is found here. The compiler is split into modules with each module generally handling a specific type of query.
Module | Description |
Declaration | Parses and registers the location of functions and structures |
Parser | Processes a series of tokens into a function or structure node |
Node | Processes and verifies function and structure nodes |
Inference | Infers the type of expressions in function nodes |
Basic | Lowers function nodes into a control flow graphs |
Evaluation | Interprets and evaluates the values of expressions |
Source | Loads source files |
Some modules are not directly related to a specific type of query.
Module | Description |
Error | Combines compiler error types and handles displaying errors |
Extension | Contains extension traits for existing data types |
Lexer | Processes a string source into tokens |
Last updated