コード例 #1
0
    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)
コード例 #2
0
 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)