lexer output mostly working, with some TODOs