use table driven tests
more tests
refactor lexer tests