Finish implementing IR parser
Closed this issue · 1 comments
dubiousconst282 commented
TODOs
- Core
- Lexer
- AST and parser
- Type parser
- Nested types:
Parent+Child
- Compound types: pointer, array, byref:
int*[]&
- Generic type specs:
List`1+Enumerator[int]
- Nested types:
- Type parser
- Materializer (convert ASTs into IR instructions)
- Missing instructions
- StoreArray (syntax: may need annotation for element type)
- Convert
- Switch (parsing)
- Intrinsics (see #5)
- Guard (parsing), Leave/Continue
- Load/Store PtrInst (syntax: may need annotation for element type)
- NewObj
- and others
- Find a way to prevent conflicts with anonymous/sequential names (enforce correctness or don't put them in the SymbolTable?)
- Support for multiple error messages (don't throw exceptions unless necessary)
- Find a way to prevent cascade errors (maybe skip to the next line?)
- Single pass parser (get rid of the AST/materializer and create IR directly)
- Method declarations
- [?] Type declarations
Known Bugs
- Block order is not preserved during materialization (lazy calls to CreateBlock())
dubiousconst282 commented
Closing since the parser is quite complete and implementing missing instructions shouldn't be too complicated.