Voici quelques éléments de Python qui peuvent vous servir pour la suite.
Lire un fichier contenant du texte ascii et le transformer en un automate (analogue au script convert.pl). Il utiliser les fonctions str qui convertit un nombre en string et ord qui donne le code ascii d'un caractère.
import pywrapfst as fst file = open('chefdoeuvre.txt','r') strpage = file.read() compiler = fst.Compiler() file.close() voc = dict() stn = 0 for st in strpage: chn = ord(st) voc[chn]=st lig = str(stn) + "\t" + str(stn+1) + "\t"+str(chn)+"\t"+str(chn) print >> compiler, lig stn = stn + 1 print >> compiler,stn textechef = compiler.compile()
Le fichier chefdoeuvre.txt est téléchargeable.
Exécuter une commande unix depuis un script Python:
import pywrapfst as fst from subprocess import call tab = fst.SymbolTable.read_text('titalph.sym') compiler = fst.Compiler(acceptor=True,isymbols=tab) print >> compiler, "0 1 a" print >> compiler, "1 2 b" print >> compiler, "2 3 c" print >> compiler, "3" auto2 = compiler.compile() auto2.draw('auto2.dot',acceptor=True,portrait=True,isymbols=tab) call('dot -Tpng auto2.dot > auto2.png',shell=True) call('display auto2.png &',shell=True)
Créer une fonction qui prend un automate en paramètre.
import pywrapfst as fst from subprocess import call compiler = fst.Compiler(acceptor=True) print >> compiler, "0 1 1" print >> compiler, "1 2 2" print >> compiler, "2 3 3" print >> compiler, "3" auto1 = compiler.compile() def draw_auto(aut,name='auto',isym=None): acc = aut.properties(fst.ACCEPTOR,True)==fst.ACCEPTOR print("acc=",acc) aut.draw(name + ".dot",portrait=True,isymbols=isym,acceptor=acc) call('dot -Tpng '+name +".dot > " + name + ".png",shell=True) call('display ' + name + ".png &",shell=True) draw_auto(auto1,'auto1')