def NavigateState(self, graph_root: AnyNode, node: AnyNode): """ This function sets the state of a node depending on its (position in the) corresponding tree (-> DAG review as Tree) :param graph_root:AnyNode: tree root :param node:AnyNode: node from tree you want to update """ try: if isNotNone(node.label) and isNone(node.content): label = node.label regex = str('\\b' + label + '\\b') desired = [] tmp_desired = findall(graph_root, lambda node: node.label in label) for i in tmp_desired: match = re.findall(regex, i.label) if len(match) > 0: desired.append(i) if (len(desired) < 1): print(node.state) elif (len(desired) == 1): self.NormalState(node) else: node.followerNodes = desired[0].followerNodes node.hasFollowerNodes = desired[0].hasFollowerNodes node.hasInputNode = desired[0].hasInputNode node.state = 'navigator' node.name = 'navigator_' + str(node.id) else: self.NormalState(node) except Exception as ex: template = "An exception of type {0} occurred in [TParser.NavigateState]. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(message)
def SetSubnodes(self, node: AnyNode): """ This function places sub nodes to the current node if some exist. :param node:AnyNode: given node """ try: followers = [node.label for node in node.children] if (len(followers) > 0): node.hasFollowerNodes = True node.followerNodes = followers except Exception as ex: template = "An exception of type {0} occurred in [TParser.SetSubnodes]. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(message)