示例#1
0
 def __init__(
     self,
     nfa: NFA = None,
     *,
     states: set = None,
     input_symbols: set = None,
     transitions: dict = None,
     initial_state: str = None,
     final_states: set = None,
 ):
     if nfa:
         self.nfa = nfa.copy()
     else:
         if not states:
             states = {*transitions.keys()}
         if not input_symbols:
             input_symbols = set()
             for v in transitions.values():
                 symbols = [*v.keys()]
                 for symbol in symbols:
                     if symbol != "":
                         input_symbols.add(symbol)
         self.nfa = NFA(
             states=states.copy(),
             input_symbols=input_symbols.copy(),
             transitions=transitions.deepcopy(),
             initial_state=initial_state,
             final_states=final_states.copy(),
         )
     self.nfa.validate()
示例#2
0
 def test_init_validation(self, validate):
     """Should validate NFA when initialized."""
     NFA.copy(self.nfa)
     validate.assert_called_once_with()
示例#3
0
 def test_init_nfa(self):
     """Should copy NFA if passed into NFA constructor."""
     new_nfa = NFA.copy(self.nfa)
     self.assert_is_copy(new_nfa, self.nfa)