lexer, parser, and AST rewritten. nothing works for now