// Etat.java
import java.util.Enumeration;
import java.util.Hashtable;
public class Etat {
private static int compteur = 0;
private Hashtable succ;
private Etat suppleant;
private boolean terminal;
private int nom, sortie;
private static boolean[] visite;
Etat() {
this.succ = new Hashtable();
this.nom = Etat.compteur++;
this.terminal = false;
}
public int getSortie() {
return this.sortie;
}
public void setSortie(int sortie) {
this.sortie = sortie;
}
public Etat getLs() {
return this.suppleant;
}
public void setLs(Etat p) {
this.suppleant = p;
}
public Etat getSuppleant() {
return this.suppleant;
}
public void setSuppleant(Etat p) {
this.suppleant = p;
}
/*
public void setCible(Lettre a, Etat q) {
this.succ.put(a, q);
}
*/
public void setCible(Lettre a, Etat q) {
Lettre b;
Enumeration e = this.succ.keys();
while (e.hasMoreElements()) {
b = (Lettre)e.nextElement();
if (a.equals(b))
this.succ.remove(b);
}
this.succ.put(a, q);
}
/*
public Etat getCible(Lettre a) {
return (Etat)this.succ.get(a);
}
*/
public Etat getCible(Lettre a) {
Lettre b;
Enumeration e = this.succ.keys();
while (e.hasMoreElements()) {
b = (Lettre)e.nextElement();
if (a.equals(b))
return (Etat)this.succ.get(b);
}
return null;
}
public int getNom() {
return this.nom;
}
public void copieCibles(Etat q) {
this.succ = (Hashtable)q.getSucc().clone();
}
public Hashtable getSucc() {
return this.succ;
}
public void setTerminal(boolean b) {
this.terminal = b;
}
public void ecrireAutomate() {
this.visite = new boolean[this.compteur];
}
public void ecrire() {
Etat q;
Lettre a;
if (!this.visite[this.nom]) {
this.visite[this.nom] = true;
System.out.println("Etat : "+this.nom);
Enumeration e = this.succ.keys();
while (e.hasMoreElements()) {
a = (Lettre)e.nextElement();
q = (Etat)this.succ.get(a);
System.out.println(" delta("+this.nom+","+a+") = "+q.getNom());
q.ecrire();
}
}
}
}