TODO - Add recursion depth limit - Cleanup lexer, reduce LoCs. - Tokenizer should not malloc() for each token, use arena alloc and reserve instead. - Build a debug backend for the compiler to print the entirety of the state of the AST.