Exemple #1
0
def build_singleton_nfa(transition):
    """The simplest NFA for a single character
        
        Returns NFA
            V: {start, end}
            E: {(start, end, transition)}
    """
    start = NFAState(start=True)
    acc = NFAState(accept=True)
    start.add_transition(acc, transition)
    return NFA(start)
Exemple #2
0
    def test_DFA(self):
        s1 = NFAState()
        s2 = NFAState()
        s3 = NFAState()
        s4 = NFAState()
        s1.add_transition(s2)
        s1.add_transition(s3, "a")

        t = DFAState(substates={s1,s2,s3})
        self.assertEquals(t.get_substates(), {s1,s2,s3})

        dfa = DFA(t)
        self.assertFalse(dfa.get_state_by_substate({s1,s2}))
        self.assertTrue(dfa.get_state_by_substate({s1,s2,s3}), t)
Exemple #3
0
    def test_NFAState(self):
        s1 = NFAState()
        s2 = NFAState()
        s3 = NFAState()
        s1.add_transition(s2)
        s1.add_transition(s3, "a")

        self.assertTrue(s1.get_null_transitions()[0] == s2)
        self.assertTrue(s1.get_transition("a") == s3)
        self.assertEquals(set(s1.adj()), {("a",s3),(None,s2)})
Exemple #4
0
    def build_nfa(self):
        # ( a+ | b(a|b) )
        s1 = NFAState(start=True, accept=False)
        s2 = NFAState(start=False, accept=True)
        s3 = NFAState(start=False, accept=False)
        s4 = NFAState(start=False, accept=False)
        s5 = NFAState(start=False, accept=True)
        s6 = NFAState(start=False, accept=False)
        s7 = NFAState(start=False, accept=True)

        s1.add_transition(s2,"a")
        s1.add_transition(s3)
        s2.add_transition(s2,"a")
        s3.add_transition(s4,"b")
        s4.add_transition(s5,"a")
        s4.add_transition(s6)
        s6.add_transition(s7,"b")

        nfa = NFA(s1)
        return nfa