| 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
 
 |  
Données deux automates à états finis A1, A2.
Résultat un automate produit A. 
Variable 
A1 : Fichier de texte ; /*  représente les états et les transitions de lautomate A1  */
    A2 : Fichier de texte ; /*  représente les états et les transitions de lautomate A2 */
    A : Fichier de texte ; /*  représente les états et les transitions de lautomate A */
Variable i : entier ;
    Variable E etat-produit : Ensemble : chaîne de caractère ;
/* sauvegarde les états de lautomate produit*/
X alph-produit : Ensemble : chaîne de caractère ;
   /* sauvegarde les alphabets de lautomate produit*/
II trans-produit : Ensemble : chaîne de caractère ; 
/* sauvegarde les transitions de lautomate produit*/
L_ E_trait : Vector      /*sauvegarde des états déjà traités.*/
L_ N_etat: Vector      /*sauvegarde des nouveaux états à traités. */
List_trans_prod : Vector    /* contient les transitions de lautomate produit A. */
Ens_etatf_prod: Vector    /* contient les états finaux de lautomate produit A.*/
Etat :(Si,Sj)     /* couple des états tell que Si  E1 et Sj  E2.*/
Début 
Ajouter ((S01, S02), List_Nouv_etat)  /* S01 état initial de A1, S02 état initial de  A2 */
Tant que   List_Nouv_etat <> null Faire   /*parcourir la liste des nouveaux états  */
Etat ← retirer_premier_element (List_Nouv_etat),    Si  ←  Etat.Si,   Sj  ←Etat.Sj ; 
Vector  List_trans1 ← Suivant (Si, A1) ; 
Vector List_trans2 ← Suivant (Sj, A2) ;  
/* Suivant (e, A) retourne toutes les transitions ayant létat e comme état source dans le fichier  A   .les transition sont de type (source, alphabet, destination).  */         
Pour chaque transition trans1= Si>alph1> dst1 ∈  List_trans1 Faire 
Si   il existe une transition trans2=Sj>alph1>dest2 ∈ List_trans2 alors 
/* une transition de  List_trans2  ou on peut  lire le même alphabet  alph1 
ajouter ((Si,Sj),alph1 ,(dst1,dst2)), liste_tans_prod) ; 
    supp_element(List_trans2,tran2)  
/*  Supprimer la transition trans2 de List_trans2 */
 Si  (dst1, dst2)   nappartient  pas  (Etat_trait   U  Nouv_etat) alors 
Ajouter ((dst1, dst2), Nouv_etat) ;  
FSi 
Si  (dst1∈  ens_etf1 et dst2∈  ens_etf2)  ajouter ((dst1, dst2) ,ens_etf) ; FSi   
/* ens_etf1 représente lensemble des états finaux dans A1, ens_etf2 les états   finaux dans   A2,  et  ens_etf dans A.*/
Sinon 
Ajouter ((Si,Sj),alph1 ,(dst1,Sj)),liste_tans_prod)  
Si (dst1, Sj)   nappartient  pas  (Etat_trait   U  Nouv_etat) alors 
Ajouter ((dst1, Sj), Nouv_etat)     
Fsi       
Si  (dst1∈ ens_etf1 et Sj∈ ens_etf2) ajouter ((dst1, Sj) ,ens_etf); FSi                                      
Fsi                     
Fin Pour |