 |
TOptional< TSRef< IAssemblerPass > > |
Assembler |
Assembler -------------------------- The assembler is responsible both for code-gen and linking (resolving any symbols between language objects). |
 |
TOptional< TSRef< IIrGeneratorPass > > |
IrGenerator |
IR (Intermediate Representation) ---- The IrGenerator creates an intermediate representation intended for lenient analysis and code generation. |
 |
SToolchainInjections |
LayerInjections |
API Layer Injections ------------ |
 |
TOptional< TSRef< IParserPass > > |
Parser |
Parser ----------------------------- The parser is responsible for ingesting a source file, parsing and tokenizing it, and generating an abstract syntax tree (Vst) for the rest of the compiler to consume. |
 |
TSRefArray< IPostIrFilter > |
PostIrFilters |
Post IR generation Filters ------------ This stage takes the generated IR, and performs operations on the result before passing along to the assembler. |
 |
TSRefArray< IPostSemanticAnalysisFilter > |
PostSemanticAnalysisFilters |
Post Semantic Analysis Filters ------------ This stage takes the semantically analyzed AST, and performs operations on the result before passing along to the IR generator. |
 |
TSRefArray< IPostVstFilter > |
PostVstFilters |
Post Vst Filters ------------------- The post Vst filters take an Vst, and transform it in any way it deems fit. |
 |
TOptional< TSRef< ISemanticAnalyzerPass > > |
SemanticAnalyzer |
Semantic Analyzer --------------- The semantic analyzer consumes the generated and optimized VST, transforms it to an AST, and semantically analyzes the AST, annotating the AST with inferred types and other analysis products. |