lexer interface