lexer partially complete