def test1(): #1a in HW3 in Automata & Computability print('Test 1') s0 = state(0) s1 = state(1) s0.outpaths = {'a': s1, 'b': s0} s1.outpaths = {'a': s0, 'b': s1} d = DFA([s0, s1]) d.start_state = s0 d.accept_states = [s0] d.alphabet = ['a', 'b'] print(d.all_regex(False) + '\n')
def test5(): #accepts any variant of a(ba)*a print('Test 5') s0 = state(0) s1 = state(1) s2 = state(2) s0.outpaths = {'a': s1} s1.outpaths = {'a': s2, 'b': s0} d = DFA([s0, s1, s2]) d.start_state = s0 d.accept_states = [s2] d.alphabet = ['a', 'b'] print(d.all_regex(False))
def test3(): #1d in HW3 in Automata & Computability print('Test 3') s0 = state(0) s1 = state(1) s2 = state(2) s3 = state(3) s0.outpaths = {'a': s2, 'b': s1} s1.outpaths = {'a': s3, 'b': s0} s2.outpaths = {'a': s0, 'b': s3} s3.outpaths = {'a': s1, 'b': s2} d = DFA([s0, s1, s2, s3]) d.start_state = s0 d.accept_states = [s1] d.alphabet = ['a', 'b'] print(d.all_regex() + '\n')
def enter_menu(self, button, d): self.num_states = int(self.num_states.get_text()) d.states = [state(i) for i in range(self.num_states)] if self.automaton_type == 'dfa': self.ss = int(self.ss.get_text()) for s in d.states: if s.id == self.ss: d.start_state = s break elif self.automaton_type == 'nfa': self.ss = self.ss.get_text().split() self.ss = {int(s) for s in self.ss} for s in d.states: if s.id in self.ss: d.start_states.append(s) self.accs = self.accs.get_text().split() self.accs = {int(acc) for acc in self.accs} for s in d.states: if s.id in self.accs: d.accept_states.append(s) d.alphabet = self.alph.get_text().split() Gtk.main_quit() self.destroy()
def test4(): #pg 17 Example 3.2 from Automata & Computability #accepts strings w/ 3 consecutive a's print('Test 4') s0 = state(0) s1 = state(1) s2 = state(2) s3 = state(3) s0.outpaths = {'a': s1, 'b': s0} s1.outpaths = {'a': s2, 'b': s0} s2.outpaths = {'a': s3, 'b': s0} s3.outpaths = {'a': s3, 'b': s3} d = DFA([s0, s1, s2, s3]) d.start_state = s0 d.accept_states = [s3] d.alphabet = ['a', 'b'] print(d.all_regex() + '\n')
def test6(): #Example 13.2 from Automata & Computability #accepts {a,b} and any strings with 3+ characters print('Test 6') s0 = state(0) s1 = state(1) s2 = state(2) s3 = state(3) s4 = state(4) s5 = state(5) s0.outpaths = {'a': s1, 'b': s2} s1.outpaths = {'a': s3, 'b': s4} s2.outpaths = {'a': s4, 'b': s3} s3.outpaths = {'a': s5, 'b': s5} s4.outpaths = {'a': s5, 'b': s5} s5.outpaths = {'a': s5, 'b': s5} d = DFA([s0, s1, s2, s3, s4, s5]) d.start_state = s0 d.accept_states = [s1, s2, s5] d.alphabet = ['a', 'b'] print(d.all_regex())