trafi

Transducteurs finis
git clone git://git.asteride.xyz/trafi.git
Journaux | Fichiers | Références

commit ec036f403645a3a1821e5a8b84482b74f03083a7
parent 3621f658e066863f66219ae74970faee9f8fda43
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Thu,  9 Apr 2026 12:15:06 -0400

Indiquer si les transitions sont triées

Diffstat:
Mtfm.c | 4++++
Mtfm.h | 2++
2 fichiers modifiés, 6 insertions(+), 0 suppressions(-)

diff --git a/tfm.c b/tfm.c @@ -43,6 +43,8 @@ tfm_init(void) sizeof(char))) == NULL) goto erreur3; + tfm->trie = 1; + TFM_COHERENT(tfm); return tfm; @@ -91,6 +93,8 @@ tfm_ajt(struct tfm *tfm, size_t es, size_t ed, ssize_t se, ssize_t ss) /* Mettre à jour l’état. */ tfm->etats[es].trans = itrans; tfm->etats[es].ntrans++; + tfm->etats[es].trie = 0; + tfm->trie = 0; TFM_COHERENT(tfm); diff --git a/tfm.h b/tfm.h @@ -24,6 +24,7 @@ struct tfm { struct etat *etats; /* Liste des états. */ struct trans *trans; /* Liste des transitions. */ char *symbs; /* Liste des symboles. */ + bool trie; /* Si les transitions de tous les états sont triées. */ }; /* Un état contient l’identifiant de sa première transition sortante, qui est @@ -35,6 +36,7 @@ struct etat { size_t trans; /* Liste chaînée de transitions. */ size_t ntrans; /* Nombre de transitions. */ bool final; /* État final? */ + bool trie; /* Si les transitions sont triées. */ }; /* Les transitions qui partagent un même état source forment une liste chaînée