- MatrixScanner - tokenizes the input
- MatrixParser - builds the AST, establish types
- MatrixScoper - builds the symbol table and checks the scope symbols and
break
/continue
statements. Infers the types of the AST nodes - MatrixTypeChecker - type checks the AST
- (Optional) Tree Printer - prints the AST. May be run at any time.