| ▼ include | |
| ▼ ast | |
| Ast.h | Defined the AST Node classes (ProgramAST, RecordDefAST, FuncDefAST) and a visitor interface for traversing the AST |
| AstBase.h | Defines the AST Abstract class for printing out AST Nodes |
| AstDecl.h | Holds declaration for all the AST Nodes |
| ▼ codegen | |
| CodegenUtils.h | |
| CodegenVisitor.h | Defined CgVisitor, which lowers ASTs to LLVM IR |
| Garbage.h | Houses ShadowGarbageCollector scheme as well as the ref counter |
| LLVMRes.h | Defined LLVMRes, which encapsulates the state of LLVM (Context, Modules, IRBuilder, PassManagers, JIT) context base information. This resource will be shared across multiple instances within the Compiler |
| SammineJIT.h | JIT Compiler based on Kaleidoscope |
| TypeConverter.h | Defines the TypeConverter, which holds the characistics of converting our AST types into LLVM IR types |
| ▼ compiler | |
| Compiler.h | Define the Compiler staging |
| ▼ lex | |
| Lexer.h | Houses the lexer and the declaration of its method |
| Token.h | Defines the token structure (TokenType, TokStream, TokenMap) |
| ▼ parser | |
| Parser.h | Defines Parser, which consumes tokens and constructs the AST |
| ▼ semantics | |
| GeneralSemanticsVisitor.h | Defines GeneralSemanticsVisitor, an ASTVisitor that enforces general semantic rules for scoped definitions, detecting duplicates, and ensuring correct return usage in blocks |
| ScopeGeneratorVisitor.h | Declares ScopeGeneratorVisitor, an ASTVisitor that builds and manages lexical scope by registration and reporting if there's been redefinitions |
| ▼ typecheck | |
| BiTypeChecker.h | Defines the BiTypeCheckerVisitor, consist of the flow for Bi-Directional Type checking, which allows for synthesizing types, validating consistency, and register types |
| Types.h | Defines the core Type system for Sammine |
| ▼ util | |
| FileRAII.h | A RAII-wrapper around C++ file type to use in the project for lexer and parser |
| LexicalContext.h | A simple scoping class, doesn't differentiate between different names, like variable name, func name and all that |
| Utilities.h | Holds classes and functionalities for dealing with Error handling, source locations caching & indexing |
| ▼ src | |
| ▼ ast | |
| Ast.cpp | Implemention of AST Visitor, used for traversing the AST |
| AstPrinterVisitor.cpp | Implementation for Ast Printer, using a Visitor pattern in order to traverse the AST for better debugging |
| ▼ codegen | |
| CodegenVisitor.cpp | Implementation for CodegenVisitor, it converts the AST Representation into LLVM IR and it also uses a visitor pattern in order to traverse through the parsed AST to emit LLVM IR |
| SammineJIT.cpp | The Implementation for SammineJIT |
| TypeConverter.cpp | Implementation for TypeConverter, converting AST Node types into LLVM IR Types |
| ▼ lex | |
| Lexer.cpp | Implementation for scanning and streaming Tokens |
| ▼ semantics | |
| GeneralSemanticsVisitor.cpp | Implementation for GeneralSemanticsVisitor |
| ScopeGeneratorVisitor.cpp | Implements ScopeGeneratorVisitor, an ASTVisitor that traverses the AST to populate a lexical symbol table |
| ▼ typecheck | |
| BiTypeChecker.cpp | Implementation of BiTypeCheckerVisitor, an ASTVisitor that traverses the AST to synthesize node types, perform bidirectional consistency checks, and register functions and variables |
| Types.cpp | Implements the core Type system for Sammine |
| Parser.cpp | Implementation for Parser class, it takes in the token stream and converts it into Parsing things suchs as programs, top-level (record, functions, global variables) |
| sammine.cpp | The main file to produce an executable that is the sammine compiler |
| ▼ unit-tests | |
| test_lexer.cpp | The unit-test file for all things related to a lexer |
| test_parser.cpp | The unit-test file for all things related to a parser |