Beispiel #1
0
    def star(self, nfa):  # kleene star function
        start_node = Node()  # new start state
        start_node.q = self.q_node
        self.q_node += 1
        start_node.start = True

        final_node = Node()  # new final state
        final_node.q = self.q_node
        self.q_node += 1
        final_node.final = True

        temp = self.traverse_final(nfa)  # old final state of nfa

        temp.final = False
        temp.E_star = nfa  # loop back to old start state
        temp.E2 = final_node

        start_node.E = nfa
        start_node.E2 = final_node
        nfa.start = False

        return start_node
Beispiel #2
0
    def union(self, nfa1, nfa2):  # union function
        start_node = Node()  # new start state
        start_node.q = self.q_node
        self.q_node += 1
        start_node.start = True
        final_node = Node()  # new final state
        final_node.q = self.q_node
        self.q_node += 1
        final_node.final = True

        temp1 = self.traverse_final(nfa1)  # old final state of nfa1
        temp2 = self.traverse_final(nfa2)  # old final state of nfa2

        temp1.final = False
        temp1.E2 = final_node
        temp2.final = False
        temp2.E2 = final_node

        start_node.E = nfa1
        start_node.E2 = nfa2
        nfa1.start = False
        nfa2.start = False

        return start_node