import re


def parse_pcf(f, pin_map, icecube2_hacks=False):
    pcf_data = {}
    for i, oline in enumerate(f):
        line = oline
        if icecube2_hacks and not re.search(" # ICE_(GB_)?IO", line):
            continue
        line = re.sub(r"#.*", "", line.strip()).split()
        if "--warn-no-port" in line:
            line.remove("--warn-no-port")
        if len(line) and line[0] == "set_io":
            p = line[1]
            if icecube2_hacks:
                p = p.lower()
                p = re.sub(r"_ibuf$", "", p)
                p = re.sub(r"_obuft$", "", p)
                p = re.sub(r"_obuf$", "", p)
                p = re.sub(r"_gb_io$", "", p)
                p = re.sub(r"_pad(_[0-9]+|)$", r"\1", p)
            if not re.match(r"[a-zA-Z_][a-zA-Z0-9_]*(\[[0-9]*\])?$", p):
                p = "\\%s " % p
            if len(line) > 3:
                pinloc = tuple([int(s) for s in line[2:]])
            else:
                pinloc = (line[2], )

            for loc in pinloc:
                if loc not in pin_map:
                    raise SyntaxError(
                        """\
Pin name {} doesn't exist!
Line: {}
{}""".format(loc, i, oline)
                    )
                pcf_data[p] = (pin_map[loc], oline.strip())
    return pcf_data
