| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 
 | import java.io.*;
import java.util.*;
 
import dk.brics.automaton.Automaton;
import dk.brics.automaton.RegExp;
import dk.brics.automaton.RunAutomaton;
 
 
public class paris{
 
private int maxtransit;
private int maxcomponent = 4;
String AutomatonFileTxtName;
public Vector[][] transrule;
private int nbrTransRules;
 
//données pour remplir une table de transition
static String str="a,a,a p p l e,2"+"p,ap,a p p l e,4"+"p,app,a p p l e,5"+"l,appl,a p p l e,7"+"e,apple,a p p l e,8"+
     "a,a,a p p l e,2"+"p,ap,a p p l e,4"+"p,app,a p p l e,5"+"l,appl,a p p l e,7"+"e,apple,a p p l e,8"+"s,apples,a p p l e s 9"+
     "p,p,p l y,3"+"l,pl,p l y,6"+"y,ply,p l y,9"+"p,p,p a l y,3"+"a,pa,p a l y,5"+"l,pal,p a l y,7"+"y,paly,p a l y,9";
/**@Constructeur */
/* transrule[i][0]: est un vecteur contenat le label 
 * transrule[i][1]:contient l'enchainement du mot
 * transrule[i][2]: est un vecteur contenat l'expression reg
 
 * transrule[i][3]: est un vecteur contenat les etats 
 *                  appartenant a transrule[i][1]     
 */ 
  public paris(int maxtrans, String str1){
     this.maxtransit=maxtrans;
     this.transrule = new Vector[maxtransit][maxcomponent];
     this.AutomatonFileTxtName=str1;
	 this.SetTreeAutomata(str1);
	//this.RegExpToFSA();
  }
 
 
 
/**@intialize(): crée la table de transition @Transrule*/
   public void initialize(){
    System.out.println("initialize");
	   for (int i=0; i<=(maxtransit-1); i++)
      {
        for (int j = 0; j <= (maxcomponent-1); j++)
          transrule[i][j] = new Vector();
      }
   }
 
 
 
 
 
  /**@SetTreeAutomata:
   * A partir d'une chaine de caracteres  "str", cette procédure va remplir
   * la table de transition @transrule  
  */
  public  void SetTreeAutomata(String str2){
	  System.out.println("SetTreeAutomata");
	  initialize();
      int cnt = 0;
       if (str2.length() == 0) {
         System.err.println("   Missing sequence ");
         System.exit(1);
       }
 
         while (str2!= null){
           StringTokenizer st=new StringTokenizer(str2,",");
           int j=0;
            while (st.hasMoreTokens()){
              String x1= st.nextToken();
              String x=x1.toLowerCase();              
              if (x.equals("()")) transrule[cnt][j].add(new String("")); 
                else
                   if (!x.equals(" ")) transrule[cnt][j].add(new String(x)); 
              j++;
            }
           String Rexp=transrule[cnt][2].elementAt(0).toString();
           if(!Rexp.equals(""))
           {
              StringTokenizer state=new StringTokenizer(Rexp,"()?*+| ");
              while (state.hasMoreTokens()){
                String q = state.nextToken();
                transrule[cnt][2].add(new String(q));                
              }
           }
      		String Rexp1=this.NoWhite(Rexp);
      		Automaton A_E=new Automaton();
      		if (Rexp1.length()!=0){
     			RegExp E=new RegExp(Rexp1);  			
      			A_E = E.toAutomaton();	
      		} 
      		RunAutomaton RA=new RunAutomaton(A_E);
      		this.transrule[cnt][4].addElement((RunAutomaton) RA);           
           cnt++;
 
         }
 
 
 
       this.nbrTransRules=cnt;
     }
public int setNumberTransitionRules(){
	return(nbrTransRules);
}
/**@SetToLowerSet: en entrée un ensemble @S_in de chaînes de caracteres qlq 
         * A retourner un ensemble contenat les mêmes chaines 
         * de caractères mais en miniscule "Lowercase"
         */
	public HashSet SetToLowerSet(HashSet S_in){
		HashSet s_out=new HashSet();
		if(!S_in.isEmpty()){
			Iterator it=S_in.iterator();
			while(it.hasNext()){
				String s1=it.next().toString().trim();
				s_out.add(s1.toLowerCase());
			}
		}
		return(s_out);
	}
 
 
 
 
 
	     public String NoWhite(String RegExp){
	    	 System.out.println("NoWhite");
	    	 String s="";
	      	int size=RegExp.length();
	      	int j=0;
	      	while (j<size){
	             char c= RegExp.charAt(j);
	      		if (c!=' ') s=s+c;
	      		j++;		
	      	}
	      	return(s);
	      }
 
 
 
  public static void main(String[] args){
paris P=new paris(19,str);	  
 
 
  }} |