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
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