documented lexer