import sys ##### Opis avtomata ##### # avtomat je (stanja, abeceda, delta, zacetno stanje, koncna stanja) # Stikalo avtomat = ([0,1], ['0','1'], {(0,'0'):set([0]), (0,'1'):set([0,1])}, 0, set([1])) ##### Vhodni niz ##### vhod = sys.argv[1] ##### Najprej preverimo vhodni niz ##### print "Vhod:", vhod for znak in vhod: if znak not in avtomat[1]: print "Napaka: napacen znak '%c' v vhodnem nizu." % znak exit(1) ###### Izvajalnik oz. simulator avtomata ##### # Stanje z oznako -1 predstavlja slepo stanje. delta = avtomat[2] trenutna_stanja = set([avtomat[3]]) for znak in vhod: nova_stanja = set() for s in trenutna_stanja: if (s,znak) in delta: nova_stanja = nova_stanja | delta[(s,znak)] trenutna_stanja = nova_stanja print(nova_stanja) ###### Odgovor avtomata ##### print "Niz '%s' pripada jeziku avtomata:" % vhod, if trenutna_stanja & avtomat[4]: print "da" else: print "ne"