Index: compile_rules_graph.py ================================================================== --- compile_rules_graph.py +++ compile_rules_graph.py @@ -310,12 +310,12 @@ if m: sRuleName = m.group(1) iActionBlock = 1 nPriority = int(m.group(2)[1:]) if m.group(2) else -1 else: - print("Error at rule group: ", sLine, " -- line:", i) - break + print("Syntax error in rule group: ", sLine, " -- line:", i) + exit() elif re.search("^ +<<- ", sLine) or sLine.startswith(" ") \ or re.search("^ +#", sLine) or re.search(r"^ [-~=>/](?:\d\.?(?::\.?\d+|)|)>> ", sLine) : # actions sActions += " " + sLine.strip() elif re.match("[  ]*$", sLine): Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -9431,11 +9431,11 @@ !! !! ## Sans article -__gn_2m_accord__ +__[i]/gn(gn_2m_accord)__ @:[NA]¬* @:[NA]¬* <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3) # Accord de genre erroné avec « \2 ». <<- __also__ and hasFemForm(\2) -2>> =switchGender(\2) # Accord de genre erroné avec « \3 ». <<- /gn/ ((morph(\2, ":s", "*") and morph(\3, ":p", "*")) or (morph(\2, ":p", "*") and morph(\3, ":s", "*"))) and not apposition(\2, \3)