_ _ ____ ____
| | __ _ _ __ | | __ / ___/ ___|
_ | |/ _` | '_ \| |/ / | | | |
| |_| | (_| | | | | < | |__| |___
\___/ \__,_|_| |_|_|\_\ \____\____|
- Preproccessor? (Put on Halt for now) ❌
- #include ❌
- #ifndef ❌
- #if ❌
- ... ❌
- Lexer ✔️
- Allow Hex Numbers & Co. ⭕
- Sensible Error Generation ⭕
- Fix Column Number Generation ⭕
- Parser ✔️
- Expresions ✔️
- Type Names ✔️
- Declarations ✔️
- Statements ✔️
- Typedef Check -> Context dependent Part ✔️
- Full Parse for subset? of C11 Standard
⚠️ - Error Continuation ⭕
- Enviroment Builder
⚠️ - Symbol Table extraction
⚠️ - Type Checking on AST ☢️ <- Needed to Continue on Translating Expressions ;)
- Constant Expression Runner ⭕
- MIR generation
⚠️
- Symbol Table extraction
- MIR to cranelift backend
⚠️ - Custom MIR codegen backend ⭕
- Conversion to SSA ⭕
- SSA optimisier ⭕
- Register Allocator ⭕
- Code Generation from SSA ⭕
- Only Integer/Float Numbers ([0-9+(.0-9*)?])
- Handwritten Recursive Descent Parser (Predictive: No Backtracking)
- Only minimally tested, check src/parser/tests/ for tests
- Early Work started, extremely unstable API and many features missing
- no Tag completion for structs
- no Type Checking, Number inherintly int, and no casting
- limited Instruction Pool
- Block System still heavily WIP and needs to be reworked
- minimal example works :)
- to see more working examples look at the integration test C-Files :)
- only 1 kind of signature to a function like printf that has varargs is supported :/
- more will come as MIR is developed further ;)
-
- only if statement and recursion semi-working
- no Arrays, Structs, Unions, Enums