""" Tests: """ fsm = Automata(states, alphabet, transitions, start, accept) fsm1 = copy.deepcopy(fsm) print("Original states:") print_tst(states, alphabet, transitions, start, accept) # simple_tst(states, alphabet, transitions, start, accept) print("Automata to next tests: ") # fsm1.addtransition({'q0' : ['b', 'q3']}) print_fsm(fsm1) letter = "b" walk_tst(fsm1, letter) word = "aababcc" fsm1.actual_state = fsm1.states[0] detect_tst(fsm1, word) print("Now we know that automata is not deterministic, we need detereminize it!") fsm_original = copy.deepcopy(fsm) fsm2 = fsm.determinize() print("Non-deterministic automata:") print_fsm(fsm_original) print("Deterministic one equivalent:") print_fsm(fsm2) # test for RegEx print("If we want a Regular Expression of the automata, here it is:") regular_expression = fsm2.toRegEx() print("RegEx:", regular_expression)
def print_fsm(fsm): print_tst(fsm.states,fsm.alphabet,fsm.transitions,fsm.start,fsm.accept) """ Tests: """ fsm = Automata(states, alphabet, transitions, start, accept) print("Original states:") print_fsm(fsm) print("Is deterministic?",fsm.isdeterministic()) print("Now we know that automata is not deterministic, we need detereminize it!") fsmD = fsm.determinize() print("Here is the determinized automata:") print_fsm(fsmD) print("If we want a Regular Expression of the automata, here it is:") regular_expression = fsmD.toRegEx() print("RegEx:", regular_expression) # test to RegGra print("Regular Grammar test:") regular_grammar = fsmD.toRegGra() print("toRegGra:", regular_grammar) print("And to a FSM again!") new_automata = fsmD.fromRegGraToAutomata(regular_grammar, states[0]) print("Automata:")