def load_process_rules(process_rules_file_name):
    """
    Load process rules file to rule list.
    :param process_rules_file_name:
    :return: a list containing rules like:
        [
        (grapheme:string, phones:list, modified_phone:string),
        (grapheme:string, phones:list, modified_phone:string),
        ...,
        (grapheme:string, phones:list, modified_phone:string),
        ]
    """
    rule_list = []
    with open(process_rules_file_name) as process_rules_file:
        while 1:
            lines = process_rules_file.readlines(10000)
            if not lines:
                break
            for line in lines:
                if line.startswith("##"):
                    continue
                grapheme, phones, modified_phone, adm_len_diff, adm_silent_error = line.strip().split("\t")
                phones = phones.split(" ")
                rule_list.append((grapheme, phones, modified_phone, adm_len_diff, adm_silent_error))
                pass
            pass
        pass
    return rule_list