import sys ##### Vhod univerzalnega avtomata ##### # avtomat ... opis simuliranega avtomata # avtomat je (stanja, abeceda, delta, zacetno stanje, koncna stanja) # vhod ... vhodni niz simuliranega avtomata # Stikalo avtomat = ([0,1], ['p'], {(0,'p'):1, (1,'p'):0}, 0, [1]) vhod = "ppp" # argument programa #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] stanje = avtomat[3] for znak in vhod: novo_stanje = delta[(stanje, znak)] if (stanje, znak) in delta else -1 if stanje == -1: break print stanje, znak, '->', novo_stanje stanje = novo_stanje ###### Odgovor avtomata ##### print "Niz '%s' pripada jeziku avtomata:" % vhod, if stanje in avtomat[4]: print "da" else: print "ne"