def _read_coll(<EOL>ctx: ReaderContext,<EOL>f: Callable[[Collection[Any]], Union[llist.List, lset.Set, vector.Vector]],<EOL>end_token: str,<EOL>coll_name: str,<EOL>):
coll: List = []<EOL>reader = ctx.reader<EOL>while True:<EOL><INDENT>token = reader.peek()<EOL>if token == "<STR_LIT>":<EOL><INDENT>raise SyntaxError(f"<STR_LIT>")<EOL><DEDENT>if whitespace_chars.match(token):<EOL><INDENT>reader.advance()<EOL>continue<EOL><DEDENT>if token == end_token:<EOL><INDENT>reader.next_token()<EOL>return f(coll)<EOL><DEDENT>elem = _read_next(ctx)<EOL>if elem is COMMENT:<EOL><INDENT>continue<EOL><DEDENT>coll.append(elem)<EOL><DEDENT>
Read a collection from the input stream and create the
    collection using f.