Index: compile_rules_graph.py ================================================================== --- compile_rules_graph.py +++ compile_rules_graph.py @@ -17,11 +17,11 @@ def prepareFunction (s, bTokenValue=False): "convert simple rule syntax to a string of Python code" s = s.replace("__also__", "bCondMemo") s = s.replace("__else__", "not bCondMemo") s = re.sub(r"(morph|analyse|displayInfo)[(]\\(\d+)", 'g_\\1(lToken[\\2+nTokenOffset]', s) - s = re.sub(r"(select|exclude|define)[(][\\](\d+)", 'g_\\1(lToken[\\2+nTokenOffset], dTags', s) + s = re.sub(r"(select|exclude|define)[(][\\](\d+)", 'g_\\1(lToken[\\2+nTokenOffset]', s) s = re.sub(r"(tag_before|tag_after)[(][\\](\d+)", 'g_\\1(lToken[\\2+nTokenOffset], dTags', s) s = re.sub(r"(switchGender|has(?:Mas|Fem)Form)[(]\\(\d+)", '\\1(lToken[\\2+nTokenOffset]["sValue"]', s) s = re.sub(r"(morph|analyse)\(>1", 'g_\\1(lToken[nLastToken+1]', s) # next token s = re.sub(r"(morph|analyse)\(<1", 'g_\\1(lToken[nTokenOffset]', s) # previous token s = re.sub(r"[\\](\d+)\.is(upper|lower|title)\(\)", 'lToken[\\1+nTokenOffset]["sValue"].is\\2()', s) @@ -178,16 +178,19 @@ iStartAction = 1 iEndAction = 0 else: iStartAction = int(m.group("start")) iEndAction = int(m.group("end")[1:]) if m.group("end") else iStartAction - if dPos: + if dPos and m.group("start"): try: iStartAction = dPos[iStartAction] - iEndAction = dPos[iEndAction] + if iEndAction: + iEndAction = dPos[iEndAction] except: print("# Error. Wrong groups in: " + sActionId) + print(" iStartAction:", iStartAction, "iEndAction:", iEndAction) + print(" ", dPos) if cAction == "-": ## error iMsg = sAction.find(" # ") if iMsg == -1: