Overview
Comment: | [core][build] selected groups rework (allow selection from the pattern end) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core | build | rg |
Files: | files | file ages | folders |
SHA3-256: |
9cb05aa1445b0d87e53f8f88a1f382ac |
User & Date: | olr on 2018-07-31 18:49:34 |
Other Links: | branch diff | manifest | tags |
Context
2018-07-31
| ||
19:19 | [build][core][fr] fix selection from the pattern end check-in: 3e1100a2fd user: olr tags: fr, core, build, rg | |
18:49 | [core][build] selected groups rework (allow selection from the pattern end) check-in: 9cb05aa144 user: olr tags: core, build, rg | |
13:46 | [fr] text formatter: remove useless “u” before strings check-in: 51e891ea07 user: olr tags: fr, rg | |
Changes
Modified compile_rules_graph.py from [e2133c86ff] to [a2cfd69492].
︙ | ︙ | |||
100 101 102 103 104 105 106 | def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef): "generator: create rule as list" # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority) for lToken in genTokenLines(sTokenLine, dDef): # Calculate positions dPos = {} # key: iGroup, value: iToken iGroup = 0 | | | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef): "generator: create rule as list" # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority) for lToken in genTokenLines(sTokenLine, dDef): # Calculate positions dPos = {} # key: iGroup, value: iToken iGroup = 0 #if iLine == 3971: # debug # print(lToken) for i, sToken in enumerate(lToken): if sToken.startswith("(") and sToken.endswith(")"): lToken[i] = sToken[1:-1] iGroup += 1 dPos[iGroup] = i + 1 # we add 1, for we count tokens from 1 to n (not from 0) |
︙ | ︙ | |||
173 174 175 176 177 178 179 180 181 182 183 184 185 186 | sCondition = "_g_c_"+sActionId else: sCondition = "" # Action cAction = m.group("action") sAction = sAction[m.end():].strip() sAction = changeReferenceToken(sAction, dPos) if not m.group("start"): iStartAction = 1 iEndAction = 0 else: if cAction != "-" and (m.group("start").endswith(".") or m.group("end").startswith(":.")): print(" # Error. Wrong selection on tokens.", sActionId) return None | > > > > > | > > | | | > > > > | 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | sCondition = "_g_c_"+sActionId else: sCondition = "" # Action cAction = m.group("action") sAction = sAction[m.end():].strip() sAction = changeReferenceToken(sAction, dPos) # target cStartLimit = "<" cEndLimit = ">" if not m.group("start"): iStartAction = 1 iEndAction = 0 else: if cAction != "-" and (m.group("start").endswith(".") or m.group("end").startswith(":.")): print(" # Error. Wrong selection on tokens.", sActionId) return None if m.group("start").endswith("."): cStartLimit = ">" iStartAction = int(m.group("start").rstrip(".")) if not m.group("end"): iEndAction = iStartAction else: if m.group("end").startswith(":."): cEndLimit = "<" iEndAction = int(m.group("end").lstrip(":.")) if dPos and m.group("start"): try: iStartAction = dPos.get(iStartAction, iStartAction) if iEndAction: iEndAction = dPos.get(iEndAction, iEndAction) except: print("# Error. Wrong groups in: " + sActionId) print(" iStartAction:", iStartAction, "iEndAction:", iEndAction) print(" ", dPos) if iStartAction < 0: iStartAction += 1 if iEndAction < 0: iEndAction += 1 if cAction == "-": ## error iMsg = sAction.find(" # ") if iMsg == -1: sMsg = "# Error. Error message not found." sURL = "" |
︙ | ︙ | |||
241 242 243 244 245 246 247 | sAction = prepareFunction(sAction) dFUNCTIONS["_g_s_"+sActionId] = sAction[1:] sAction = "=_g_s_"+sActionId elif sAction.startswith('"') and sAction.endswith('"'): sAction = sAction[1:-1] if not sMsg: print("# Error in action at line " + sActionId + ": The message is empty.") | | | 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 | sAction = prepareFunction(sAction) dFUNCTIONS["_g_s_"+sActionId] = sAction[1:] sAction = "=_g_s_"+sActionId elif sAction.startswith('"') and sAction.endswith('"'): sAction = sAction[1:-1] if not sMsg: print("# Error in action at line " + sActionId + ": The message is empty.") return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction, cStartLimit, cEndLimit, nPriority, sMsg, sURL] elif cAction == "~": ## text processor if sAction[0:1] == "=": sAction = prepareFunction(sAction) dFUNCTIONS["_g_p_"+sActionId] = sAction[1:] sAction = "=_g_p_"+sActionId elif sAction.startswith('"') and sAction.endswith('"'): |
︙ | ︙ |
Modified gc_core/py/lang_core/gc_engine.py from [d7a26cb2a4] to [58acfdcc67].
︙ | ︙ | |||
770 771 772 773 774 775 776 | for sLineId, nextNodeKey in dNode.items(): bCondMemo = None for sRuleId in dGraph[nextNodeKey]: try: if bDebug: print(" TRY:", sRuleId) sOption, sFuncCond, cActionType, sWhat, *eAct = dRule[sRuleId] | | > | | | | | | | | 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 | for sLineId, nextNodeKey in dNode.items(): bCondMemo = None for sRuleId in dGraph[nextNodeKey]: try: if bDebug: print(" TRY:", sRuleId) sOption, sFuncCond, cActionType, sWhat, *eAct = dRule[sRuleId] # Suggestion [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, nPriority, sMessage, sURL ] # TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd ] # Disambiguator [ option, condition, "=", replacement/suggestion/action ] # Sentence Tag [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ] # Test [ option, condition, ">", "" ] if not sOption or dOptions.get(sOption, False): bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0) if bCondMemo: if cActionType == "-": # grammar error iTokenStart, iTokenEnd, cStartLimit, cEndLimit, nPriority, sMessage, sURL = eAct nTokenErrorStart = nTokenOffset + iTokenStart if iTokenStart > 0 else nLastToken + iTokenStart if "bImmune" not in self.lToken[nTokenErrorStart]: nTokenErrorEnd = nTokenOffset + iTokenEnd if iTokenEnd > 0 else nLastToken + iTokenEnd nErrorStart = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorStart]["nStart"] if cStartLimit == "<" else self.lToken[nTokenErrorStart]["nEnd"]) nErrorEnd = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorEnd]["nEnd"] if cEndLimit == ">" else self.lToken[nTokenErrorEnd]["nStart"]) if nErrorStart not in self.dError or nPriority > dPriority.get(nErrorStart, -1): self.dError[nErrorStart] = self._createError(sWhat, nTokenOffset, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, True, sMessage, sURL, bShowRuleId, "notype", bContext) dPriority[nErrorStart] = nPriority if bDebug: print(" NEW_ERROR:", self.dError[nErrorStart], "\n ", dRule[sRuleId]) elif cActionType == "~": # text processor if bDebug: print(" TAG_PREPARE:\n ", dRule[sRuleId]) nEndToken = (nTokenOffset + eAct[1]) if eAct[1] else nLastToken |
︙ | ︙ |