work on lexer