working lexer