// EnsembleDeMots.java import java.util.Enumeration; import java.util.Vector; public class EnsembleDeMots { private Vector ensembleDeMots; EnsembleDeMots() { this.ensembleDeMots = new Vector(); } public void ajouter(Mot x) { this.ensembleDeMots.addElement(x); } public Enumeration elements() { return this.ensembleDeMots.elements(); } public PetitAutomate petitAutomate(Alphabet alphabet) { int init = 0, term = 0, p = 1; int[] masq = new int[alphabet.getCard()]; Enumeration e = this.elements(); Mot x; while (e.hasMoreElements()) { init |= p; x = (Mot)e.nextElement(); for (int i = 0; i < x.getLongueur(); ++i) { masq[alphabet.rang(x.lettreA(i))] |= p; p <<= 1; } term |= (p >> 1); } return new PetitAutomate(init, masq, term); } Automate arbre() { Automate automate = new Automate(); Enumeration e = this.elements(); Etat p, t; Mot x; while (e.hasMoreElements()) { t = automate.getInitial(); x = (Mot)e.nextElement(); for (int i = 0; i < x.getLongueur(); ++i) { p = t.getCible(x.lettreA(i)); if (p == null) { p = new Etat(); t.setCible(x.lettreA(i), p); } t = p; } t.setTerminal(true); } return(automate); } }