Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -711,11 +711,11 @@ def parse (self, dGraph, dPriority, sCountry="${country_default}", dOptions=None, bShowRuleId=False, bDebug=False, bContext=False): "parse tokens from the text and execute actions encountered" dOpt = _dOptions if not dOptions else dOptions lPointer = [] bTagAndRewrite = False - for dToken in self.lToken: + for i, dToken in enumerate(self.lToken): if bDebug: print("TOKEN:", dToken["sValue"]) # check arcs for each existing pointer lNextPointer = [] for dPointer in lPointer: @@ -722,17 +722,17 @@ for dNode in self._getNextMatchingNodes(dToken, dGraph, dPointer["dNode"], bDebug): lNextPointer.append({"iToken": dPointer["iToken"], "dNode": dNode}) lPointer = lNextPointer # check arcs of first nodes for dNode in self._getNextMatchingNodes(dToken, dGraph, dGraph[0], bDebug): - lPointer.append({"iToken": dToken["i"], "dNode": dNode}) + lPointer.append({"iToken": i, "dNode": dNode}) # check if there is rules to check for each pointer for dPointer in lPointer: #if bDebug: # print("+", dPointer) if "" in dPointer["dNode"]: - bChange = self._executeActions(dGraph, dPointer["dNode"][""], dPointer["iToken"]-1, dToken["i"], dPriority, dOpt, sCountry, bShowRuleId, bDebug, bContext) + bChange = self._executeActions(dGraph, dPointer["dNode"][""], dPointer["iToken"]-1, i, dPriority, dOpt, sCountry, bShowRuleId, bDebug, bContext) if bChange: bTagAndRewrite = True if bTagAndRewrite: self.rewrite(bDebug) if bDebug: @@ -932,27 +932,27 @@ if bDebug: print("REWRITE") lNewToken = [] nMergeUntil = 0 dTokenMerger = None - for dToken in self.lToken: + for iToken, dToken in enumerate(self.lToken): bKeepToken = True if dToken["sType"] != "INFO": if "bImmune" in dToken: nErrorStart = self.nOffsetWithinParagraph + dToken["nStart"] if nErrorStart in self.dError: if bDebug: print("immunity -> error removed:", self.dError[nErrorStart]) del self.dError[nErrorStart] - if nMergeUntil and dToken["i"] <= nMergeUntil: + if nMergeUntil and iToken <= nMergeUntil: dTokenMerger["sValue"] += " " * (dToken["nStart"] - dTokenMerger["nEnd"]) + dToken["sValue"] dTokenMerger["nEnd"] = dToken["nEnd"] if bDebug: print(" MERGED TOKEN:", dTokenMerger["sValue"]) bKeepToken = False if "nMergeUntil" in dToken: - if dToken["i"] > nMergeUntil: # this token is not already merged with a previous token + if iToken > nMergeUntil: # this token is not already merged with a previous token dTokenMerger = dToken if dToken["nMergeUntil"] > nMergeUntil: nMergeUntil = dToken["nMergeUntil"] del dToken["nMergeUntil"] elif "bToRemove" in dToken: @@ -979,11 +979,11 @@ except: print(self) print(dToken) exit() if bDebug: - print(" REWRITED:", self.sSentence) + print(" TEXT REWRITED:", self.sSentence) self.lToken.clear() self.lToken = lNewToken