lexer done and tested