avoid allocating new token in lexer