def parse_datatypes(f):
    dt = set()
    re_entry = re.compile('\s*<entry><type>([^<]+)</type></entry>')
    for line in f:
        if '<sect1' in line:
            break
        if '<entry><type>' not in line:
            continue

        # Parse a string such as
        # time [ (<replaceable>p</replaceable>) ] [ without time zone ]
        # into types "time" and "without time zone"

        # remove all the tags
        line = re.sub("<replaceable>[^<]+</replaceable>", "", line)
        line = re.sub("<[^>]+>", "", line)

        # Drop the parts containing braces
        for tmp in [ t for tmp in line.split('[') for t in tmp.split(']') if t not in "(" ]:
            for t in tmp.split(','):
                t = t.strip()
                if not t: continue
                dt.add(" ".join(t.split()))

    dt = list(dt)
    dt.sort()
    return dt
dataset/ETHPy150Open darcyliu/storyboard/pygments/lexers/_postgres_builtins.py/parse_datatypes/swapped operands of `not in`