Projet Informatique Théorique 2016
Instructions et Documentation
automate.h
Aller à la documentation de ce fichier.
1 /*
2  * Ce fichier fait partie d'un projet de programmation donné en Licence 3
3  * à l'Université de Bordeaux
4  *
5  * Copyright (C) 2014, 2015 Adrien Boussicault
6  *
7  * This Library is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This Library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this Library. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
23 #ifndef __AUTOMATE_H__
24 #define __AUTOMATE_H__
25 
26 #include "ensemble.h"
27 
39 struct Automate {
40  Ensemble * vide;
41  Ensemble * etats;
42  Ensemble * alphabet;
43  Table* transitions;
44  Ensemble * initiaux;
45  Ensemble * finaux;
46 };
47 
48 typedef struct Automate Automate;
49 
50 typedef struct Cle {
51  int origine;
52  int lettre;
53 } Cle;
54 
61 
67 void liberer_automate( Automate * automate);
68 
75 void ajouter_etat( Automate * automate, int etat );
76 
83 void ajouter_lettre( Automate * automate, char lettre );
84 
97  Automate * automate, int origine, char lettre, int fin
98 );
99 
109 void ajouter_etat_final(
110  Automate * automate, int etat_final
111 );
112 
123  Automate * automate, int etat_initial
124 );
125 
135 const Ensemble * get_etats( const Automate* automate );
136 
146 const Ensemble * get_initiaux( const Automate* automate );
147 
157 const Ensemble * get_finaux( const Automate* automate );
158 
167 const Ensemble * get_alphabet( const Automate* automate );
168 
180  const Automate* automate,
181  int origine, char lettre, int fin
182 );
183 
191 int est_un_etat_de_l_automate( const Automate* automate, int etat );
192 
200 int est_un_etat_initial_de_l_automate( const Automate* automate, int etat );
201 
209 int est_un_etat_final_de_l_automate( const Automate* automate, int etat );
210 
218 int est_une_lettre_de_l_automate( const Automate* automate, char lettre );
219 
233 Ensemble * delta1(
234  const Automate* automate, int origine, char lettre
235 );
236 
251 Ensemble * delta(
252  const Automate* automate, const Ensemble * etats_courants, char lettre
253 );
254 
270  const Automate* automate, const Ensemble * etats_courants, const char* mot
271 );
272 
281 int le_mot_est_reconnu( const Automate* automate, const char* mot );
282 
301  const Automate* automate,
302  void (* action )( int origine, char lettre, int fin, void* data ),
303  void* data
304 );
305 
315  const Automate * automate, const Automate * automate_a_eviter
316 );
317 
325 Automate * translater_automate_entier( const Automate* automate, int translation );
326 
336 int get_max_etat( const Automate* automate );
337 
348 int get_min_etat( const Automate* automate );
349 
359 Automate* copier_automate( const Automate* automate );
360 
367 Automate * mot_to_automate( const char * mot );
368 
377 Ensemble* etats_accessibles( const Automate * automate, int etat );
378 
386 Ensemble* accessibles( const Automate * automate );
387 
395 Automate *automate_accessible( const Automate * automate );
396 
415 Automate * creer_automate_du_melange( const Automate* automate1, const Automate* automate2 );
416 
422 void print_automate( const Automate * automate );
423 
424 
437  const Automate * automate_1, const Automate * automate_2
438 );
439 
449 Automate *miroir( const Automate * automate);
450 
451 #endif
Ensemble * etats_accessibles(const Automate *automate, int etat)
Definition: automate.c:480
Le type d'un automate.
Definition: automate.h:39
void liberer_automate(Automate *automate)
Détruit un automate.
Definition: automate.c:168
Automate * miroir(const Automate *automate)
Definition: automate.c:492
int est_une_transition_de_l_automate(const Automate *automate, int origine, char lettre, int fin)
Renvoie 1 si ('origine', 'lettre', 'fin') est une transition de l'automate et 0 sinon.
Definition: automate.c:392
Ensemble * delta_star(const Automate *automate, const Ensemble *etats_courants, const char *mot)
Renvoie l'ensemble des états accessibles à partir d'un ensemble d'états donné en paramètre et en lisa...
Definition: automate.c:279
Automate * creer_automate_du_melange(const Automate *automate1, const Automate *automate2)
Definition: automate.c:496
Ensemble * delta(const Automate *automate, const Ensemble *etats_courants, char lettre)
Renvoie l'ensemble des états accéssibles à partir d'un ensemble d'états donné en paramètre et en lisa...
Definition: automate.c:259
int est_un_etat_initial_de_l_automate(const Automate *automate, int etat)
Renvoie 1 si ('etat') est un état initial de l'automate et 0 sinon.
Definition: automate.c:403
Automate * mot_to_automate(const char *mot)
Renvoie un automate qui reconnaît un unique mot passé en paramètre.
Definition: automate.c:462
int est_une_lettre_de_l_automate(const Automate *automate, char lettre)
Renvoie 1 si ('etat') est une lettre de l'automate et 0 sinon.
Definition: automate.c:411
int est_un_etat_de_l_automate(const Automate *automate, int etat)
Renvoie 1 si ('etat') est un état de l'automate et 0 sinon.
Definition: automate.c:399
Ensemble * delta1(const Automate *automate, int origine, char lettre)
Renvoie l'ensemble des états accessibles à partir d'un état donné en paramètre et en lisant une lettr...
Definition: automate.c:251
int le_mot_est_reconnu(const Automate *automate, const char *mot)
Renvoie vrai si le mot passé en paramètre est reconu par l'automate passé en paramètre, et renvoie 0 sinon.
Definition: automate.c:442
void ajouter_etat(Automate *automate, int etat)
Ajoute un état à un automate passé en paramètre.
Definition: automate.c:198
Automate * translater_automate_entier(const Automate *automate, int translation)
Crée une copie de l'automate passé en paramètre dont les numéros de tous les états ont été translatés...
Definition: automate.c:106
void ajouter_transition(Automate *automate, int origine, char lettre, int fin)
Ajoute une transition à l'automate passé en paramètre.
Definition: automate.c:206
int est_un_etat_final_de_l_automate(const Automate *automate, int etat)
Renvoie 1 si ('etat') est un état final initial de l'automate et 0 sinon.
Definition: automate.c:407
Automate * creer_automate()
Crée un automate vide, sans états, sans lettres et sans transitions.
Definition: automate.c:91
int get_max_etat(const Automate *automate)
Definition: automate.c:38
Ensemble * accessibles(const Automate *automate)
Definition: automate.c:484
const Ensemble * get_finaux(const Automate *automate)
Renvoie l'ensemble des états finaux d'un automate.
Definition: automate.c:190
void pour_toute_transition(const Automate *automate, void(*action)(int origine, char lettre, int fin, void *data), void *data)
La fonction passe en revue toutes les transitions de l'automate et appelle la fonction passée en para...
Definition: automate.c:294
const Ensemble * get_initiaux(const Automate *automate)
Renvoie l'ensemble des états intiaux d'un automate.
Definition: automate.c:186
void print_automate(const Automate *automate)
Affiche sur l'entrée standard (stdout) l'automate passé en paramètre.
Definition: automate.c:423
void ajouter_lettre(Automate *automate, char lettre)
Ajoute une lettre à l'alphabet d'un automate passé en paramètre.
Definition: automate.c:202
const Ensemble * get_etats(const Automate *automate)
Renvoie l'ensemble des états d'un automate.
Definition: automate.c:182
Automate * automate_accessible(const Automate *automate)
Definition: automate.c:488
Automate * creer_union_des_automates(const Automate *automate_1, const Automate *automate_2)
Definition: automate.c:474
Definition: table.c:39
void ajouter_etat_final(Automate *automate, int etat_final)
Ajoute un état final à un automate passé en paramètre.
Definition: automate.c:226
void ajouter_etat_initial(Automate *automate, int etat_initial)
Ajoute un état initial à un automate passé en paramètre.
Definition: automate.c:233
const Ensemble * get_alphabet(const Automate *automate)
Renvoie l'alphabet d'un automate.
Definition: automate.c:194
int get_min_etat(const Automate *automate)
Renvoie l'état ayant le numéro le plus petit de l'automate passé en paramètre.
Definition: automate.c:47
Automate * copier_automate(const Automate *automate)
Copie un automate.
Definition: automate.c:319
Automate * translater_automate(const Automate *automate, const Automate *automate_a_eviter)
Crée une copie de l'automate passé en paramètre. Les entiers des états du nouvel automate évitent ceu...
Definition: automate.c:375
Definition: automate.h:50