Overview
Comment: | [build] graph builder: remove action duplicates |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | build | rg |
Files: | files | file ages | folders |
SHA3-256: |
89ae59c7fa5cde3a30da138f25e84a9f |
User & Date: | olr on 2018-08-13 10:05:36 |
Other Links: | branch diff | manifest | tags |
Context
2018-08-13
| ||
20:52 | [fr] conversion: regex rules -> graph rules check-in: 0dc636339c user: olr tags: fr, rg | |
10:05 | [build] graph builder: remove action duplicates check-in: 89ae59c7fa user: olr tags: build, rg | |
09:20 | [core] debug mode: label for immunity check-in: 7fe296fd4f user: olr tags: core, rg | |
Changes
Modified compile_rules_graph.py from [98519668b7] to [482c80fae9].
︙ | ︙ | |||
12 13 14 15 16 17 18 | dACTIONS = {} dFUNCTIONS = {} dFUNCNAME = {} def createFunction (sType, sActionId, sCode, bStartWithEqual=False): | | > > > > > > > > > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | dACTIONS = {} dFUNCTIONS = {} dFUNCNAME = {} def createFunction (sType, sActionId, sCode, bStartWithEqual=False): "create a function (stored in <dFUNCTIONS>) and return function name" sCode = prepareFunction(sCode) if sType not in dFUNCNAME: dFUNCNAME[sType] = {} if sCode not in dFUNCNAME[sType]: dFUNCNAME[sType][sCode] = len(dFUNCNAME[sType])+1 sFuncName = "_g_" + sType + "_" + str(dFUNCNAME[sType][sCode]) dFUNCTIONS[sFuncName] = sCode return sFuncName if not bStartWithEqual else "="+sFuncName def storeAction (sActionId, aAction): "store <aAction> in <dACTIONS> avoiding duplicates" nVar = 0 while True: sActionName = sActionId + str(nVar) if sActionName not in dACTIONS: dACTIONS[sActionName] = aAction return sActionName elif aAction == dACTIONS[sActionName]: return sActionName nVar += 1 def prepareFunction (sCode): "convert simple rule syntax to a string of Python code" if sCode[0:1] == "=": sCode = sCode[1:] sCode = sCode.replace("__also__", "bCondMemo") sCode = sCode.replace("__else__", "not bCondMemo") |
︙ | ︙ | |||
133 134 135 136 137 138 139 | iGroup += 1 dPos[iGroup] = i + 1 # we add 1, for we count tokens from 1 to n (not from 0) # Parse actions for iAction, sAction in enumerate(sActions.split(" <<- ")): sAction = sAction.strip() if sAction: | | | | | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | iGroup += 1 dPos[iGroup] = i + 1 # we add 1, for we count tokens from 1 to n (not from 0) # Parse actions for iAction, sAction in enumerate(sActions.split(" <<- ")): sAction = sAction.strip() if sAction: sActionId = sRuleName + "__b" + str(iActionBlock) + "_a" + str(iAction) aAction = createAction(sActionId, sAction, nPriority, dOptPriority, len(lToken), dPos) if aAction: sActionName = storeAction(sActionId, aAction) lResult = list(lToken) lResult.extend(["##"+str(iLine), sActionName]) #if iLine == 13341: # print(" ".join(lToken)) # print(sActionId, aAction) yield lResult else: print(" # Error on action at line:", iLine) print(sTokenLine, "\n", sActions) |
︙ | ︙ |