dubiousconst282/DistIL

Finish implementing IR parser

Closed this issue · 1 comments

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]
    • 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())

Closing since the parser is quite complete and implementing missing instructions shouldn't be too complicated.