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.
Parses and registers the location of functions and structures
Processes a series of tokens into a function or structure node
Processes and verifies function and structure nodes
Infers the type of expressions in function nodes
Lowers function nodes into a control flow graphs
Interprets and evaluates the values of expressions
Loads source files
Some modules are not directly related to a specific type of query.
Combines compiler error types and handles displaying errors
Contains extension traits for existing data types
Processes a string source into tokens