Exemplo n.º 1
0
 def __init__(self, regex):
     enfa = Regex(regex).to_epsilon_nfa()
     self.dfa = enfa.to_deterministic().minimize()
     states = self.dfa.states
     vertices = range(len(states))
     self.vert_dict = dict(zip(states, vertices))
     self.num_vert = len(self.vert_dict)  
     self.start_states = [
         self.vert_dict[st] for st in self.dfa.start_states
     ]
     self.final_states = [
         self.vert_dict[st] for st in self.dfa.final_states
     ]
Exemplo n.º 2
0
    def from_str(st, py=True):
        if py:
            e_dfa = Regex.from_python_regex(st).to_epsilon_nfa()
        else:
            e_dfa = Regex(st).to_epsilon_nfa()
        dfa = e_dfa.to_deterministic().minimize()

        dfa, states_map = SimpleGraph.dfa_normalize_states(dfa)
        edges = []
        size = 0
        for vs, labels in dfa.to_dict().items():
            for label, ve in labels.items():
                vs, ve = int(str(vs)), int(str(ve))
                label = str(label)
                size = max(size, vs, ve)
                edges.append((vs, label, ve))
        return Regexp(size + 1, edges, dfa, states_map)