<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _evolve_reader(in_file):
 """Generate a list of region IDs and trees from a top_k_trees evolve.py file. """

    cur_id_list = None
    cur_tree = None
    with open(in_file) as in_handle:
        for line in in_handle:
            if line.startswith("id,"):
                if cur_id_list:
                    yield cur_id_list, cur_tree
                cur_id_list = []
                cur_tree = None
            elif cur_tree is not None:
                if line.strip() and not line.startswith("Number of non-empty"):
                    cur_tree.append(line.rstrip())
            elif not line.strip() and cur_id_list and len(cur_id_list) > 0:
                cur_tree = []
            elif line.strip():
                parts = []
                for part in line.strip().split("\t"):
                    if part.endswith(","):
                        part = part[:-1]
                    parts.append(part)
                if len(parts) > 4:
                    nid, freq, _, _, support = parts
                    cur_id_list.append((nid, freq, support.split("; ")))
    if cur_id_list:
        yield cur_id_list, cur_tree