Overview
Comment: | [build] graph builder: check rule name duplicates |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | build | rg |
Files: | files | file ages | folders |
SHA3-256: |
9050daae5cf0a117c85e9ff080f4966f |
User & Date: | olr on 2018-08-12 05:57:33 |
Other Links: | branch diff | manifest | tags |
Context
2018-08-12
| ||
13:05 | [fr] conversion: regex rules -> graph rules check-in: 2aac4a327c user: olr tags: fr, rg | |
05:57 | [build] graph builder: check rule name duplicates check-in: 9050daae5c user: olr tags: build, rg | |
2018-08-11
| ||
20:53 | [build][core] nLastToken for all functions check-in: ea518aa42c user: olr tags: core, build, rg | |
Changes
Modified compile_rules_graph.py from [c17a046226] to [98519668b7].
︙ | ︙ | |||
122 123 124 125 126 127 128 | "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 | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | "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(" ".join(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) # Parse actions |
︙ | ︙ | |||
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 | print(" parsing rules...") lTokenLine = [] sActions = "" nPriority = -1 dAllGraph = {} sGraphName = "" iActionBlock = 0 for i, sLine in lRule: sLine = sLine.rstrip() if "\t" in sLine: # tabulation not allowed print("Error. Tabulation at line: ", i) exit() elif sLine.startswith("@@@@GRAPH: "): # rules graph call m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip()) if m: sGraphName = m.group(1) if sGraphName in dAllGraph: | > | > > > | 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 | print(" parsing rules...") lTokenLine = [] sActions = "" nPriority = -1 dAllGraph = {} sGraphName = "" iActionBlock = 0 aRuleName = set() for i, sLine in lRule: sLine = sLine.rstrip() if "\t" in sLine: # tabulation not allowed print("Error. Tabulation at line: ", i) exit() elif sLine.startswith("@@@@GRAPH: "): # rules graph call m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip()) if m: sGraphName = m.group(1) if sGraphName in dAllGraph: print("Error at line " + i + ". Graph name <" + sGraphName + "> already exists.") exit() dAllGraph[sGraphName] = [] else: print("Error. Graph name not found at line", i) exit() elif sLine.startswith("__") and sLine.endswith("__"): # new rule group m = re.match("__(\\w+)(!\\d|)__", sLine) if m: sRuleName = m.group(1) if sRuleName in aRuleName: print("Error at line " + i + ". Rule name <" + sRuleName + "> already exists.") exit() iActionBlock = 1 nPriority = int(m.group(2)[1:]) if m.group(2) else -1 else: print("Syntax error in rule group: ", sLine, " -- line:", i) exit() elif re.search("^ +<<- ", sLine) or (sLine.startswith(" ") and not sLine.startswith(" ||")) \ or re.search("^ +#", sLine) or re.search(r"[-~=>/%](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) : |
︙ | ︙ |