Exemplo n.º 1
0
 def test_from_nfa_simple(self):
     """should properly convert a simple NFA to a DFA"""
     nfa = NFA(**{
         'states': {'q0', 'q1', 'q2'},
         'symbols': {'0', '1'},
         'transitions': {
             'q0': {'0': {'q0', 'q1'}},
             'q1': {'1': {'q2'}},
             'q2': {}
         },
         'initial_state': 'q0',
         'final_states': {'q2'}
     })
     dfa = DFA.from_nfa(nfa)
     nose.assert_equal(dfa.states, {'{}', '{q0}', '{q0q1}', '{q2}'})
     nose.assert_equal(dfa.symbols, {'0', '1'})
     nose.assert_equal(dfa.transitions, {
         '{}': {'0': '{}', '1': '{}'},
         '{q0}': {'0': '{q0q1}', '1': '{}'},
         '{q0q1}': {'0': '{q0q1}', '1': '{q2}'},
         '{q2}': {'0': '{}', '1': '{}'}
     })
     nose.assert_equal(dfa.initial_state, '{q0}')
     nose.assert_equal(dfa.final_states, {'{q2}'})