Overview
| Comment: | [build] DARG: shorten building result display |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | build | rg |
| Files: | files | file ages | folders |
| SHA3-256: |
ffd3e274fa2decd32b686ee893b08986 |
| User & Date: | olr on 2018-07-28 00:14:46 |
| Other Links: | branch diff | manifest | tags |
Context
|
2018-07-28
| ||
| 09:08 | [fr] options manquantes et nettoyage check-in: c79208cbc2 user: olr tags: fr, rg | |
| 00:14 | [build] DARG: shorten building result display check-in: ffd3e274fa user: olr tags: build, rg | |
|
2018-07-27
| ||
| 18:11 | [fr] conversion: regex rules -> graph rules check-in: ebc7b7f342 user: olr tags: fr, rg | |
Changes
Modified darg.py from [2c6a05cda6] to [11706e17f5].
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!python3 """ RULE GRAPH BUILDER """ # by Olivier R. # License: MPL 2 import re import traceback | < < | < < < < | 1 2 3 4 5 6 7 8 9 10 11 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 |
#!python3
"""
RULE GRAPH BUILDER
"""
# by Olivier R.
# License: MPL 2
import re
import traceback
class DARG:
"""DIRECT ACYCLIC RULE GRAPH"""
# This code is inspired from Steve Hanov’s DAWG, 2011. (http://stevehanov.ca/blog/index.php?id=115)
def __init__ (self, lRule, sLangCode):
print(" > Direct Acyclic Rule Graph (DARG)", end=" ")
# Preparing DARG
self.sLangCode = sLangCode
self.nRule = len(lRule)
self.aPreviousRule = []
Node.resetNextId()
self.oRoot = Node()
self.lUncheckedNodes = [] # list of nodes that have not been checked for duplication.
self.lMinimizedNodes = {} # list of unique nodes that have been checked for duplication.
self.nNode = 0
self.nArc = 0
# build
lRule.sort()
for aRule in lRule:
self.insert(aRule)
self.finish()
self.countNodes()
self.countArcs()
self.displayInfo()
# BUILD DARG
def insert (self, aRule):
|
| ︙ | ︙ | |||
104 105 106 107 108 109 110 |
"count arcs within the whole graph"
self.nArc = 0
for oNode in self.lMinimizedNodes:
self.nArc += len(oNode.dArcs)
def displayInfo (self):
"display informations about the rule graph"
| < < | | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
"count arcs within the whole graph"
self.nArc = 0
for oNode in self.lMinimizedNodes:
self.nArc += len(oNode.dArcs)
def displayInfo (self):
"display informations about the rule graph"
print(": {:>10,} rules, {:>10,} nodes, {:>10,} arcs".format(self.nRule, self.nNode, self.nArc))
def createGraph (self):
"create the graph as a dictionary"
dGraph = { 0: self.oRoot.getNodeAsDict() }
for oNode in self.lMinimizedNodes:
sHashId = oNode.__hash__()
if sHashId not in dGraph:
|
| ︙ | ︙ |