Overview
Comment: | [core] gc engine: use pointer as paramater instead of several values from pointer |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core | rg |
Files: | files | file ages | folders |
SHA3-256: |
05df35c3205d2118a82390745ecd4ed3 |
User & Date: | olr on 2018-07-31 12:27:17 |
Other Links: | branch diff | manifest | tags |
Context
2018-07-31
| ||
12:30 | [fr] 1re règle avec un token vide check-in: 99292c2f0f user: olr tags: fr, rg | |
12:27 | [core] gc engine: use pointer as paramater instead of several values from pointer check-in: 05df35c320 user: olr tags: core, rg | |
09:57 | [core] gc engine: jump action to keep pointers until token found check-in: 043d1fdd77 user: olr tags: core, rg | |
Changes
Modified gc_core/py/lang_core/gc_engine.py from [e0f46ccafe] to [d7a26cb2a4].
︙ | ︙ | |||
601 602 603 604 605 606 607 | dToken["lMorph"] = self.dTokenPos[dToken["nStart"]]["lMorph"] self.lToken = lNewToken self.dTokenPos = { dToken["nStart"]: dToken for dToken in self.lToken if dToken["sType"] != "INFO" } if bDebug: print("UPDATE:") print(self) | | > > | 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 | dToken["lMorph"] = self.dTokenPos[dToken["nStart"]]["lMorph"] self.lToken = lNewToken self.dTokenPos = { dToken["nStart"]: dToken for dToken in self.lToken if dToken["sType"] != "INFO" } if bDebug: print("UPDATE:") print(self) def _getNextPointers (self, dToken, dGraph, dPointer, bDebug=False): "generator: return nodes where <dToken> “values” match <dNode> arcs" dNode = dPointer["dNode"] iNode1 = dPointer["iNode1"] bTokenFound = False # token value if dToken["sValue"] in dNode: if bDebug: print(" MATCH:", dToken["sValue"]) yield { "iNode1": iNode1, "dNode": dGraph[dNode[dToken["sValue"]]] } bTokenFound = True |
︙ | ︙ | |||
720 721 722 723 724 725 726 | yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] } bTokenFound = True elif dToken["sType"] in sMeta: if bDebug: print(" MATCH: *" + sMeta) yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] } bTokenFound = True | | | > | | | | 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 | yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] } bTokenFound = True elif dToken["sType"] in sMeta: if bDebug: print(" MATCH: *" + sMeta) yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] } bTokenFound = True if "bKeep" in dPointer and not bTokenFound: yield dPointer # JUMP # Warning! Recurssion! if "<>" in dNode: dPointer2 = { "iNode1": iNode1, "dNode": dGraph[dNode["<>"]], "bKeep": True } yield from self._getNextPointers(dToken, dGraph, dPointer2, bDebug) 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 iToken, dToken in enumerate(self.lToken): if bDebug: print("TOKEN:", dToken["sValue"]) # check arcs for each existing pointer lNextPointer = [] for dPointer in lPointer: lNextPointer.extend(self._getNextPointers(dToken, dGraph, dPointer, bDebug)) lPointer = lNextPointer # check arcs of first nodes lPointer.extend(self._getNextPointers(dToken, dGraph, { "iNode1": iToken, "dNode": dGraph[0] }, bDebug)) # check if there is rules to check for each pointer for dPointer in lPointer: #if bDebug: # print("+", dPointer) if "<rules>" in dPointer["dNode"]: bChange = self._executeActions(dGraph, dPointer["dNode"]["<rules>"], dPointer["iNode1"]-1, iToken, dPriority, dOpt, sCountry, bShowRuleId, bDebug, bContext) if bChange: |
︙ | ︙ |