Un automate s'implémente sans une seule condition : une table de transition en dictionnaire de dictionnaires, et une boucle de lecture écrite une fois pour toutes.
La table
| Depuis | Symbole | Vers |
|---|---|---|
s0 | SYN | s1 |
s1 | SYNACK | s2 |
s2 | ACK | s3 |
En Python, cela s'écrit {"s0": {"SYN": "s1"}, "s1": {"SYNACK": "s2"}, "s2": {"ACK": "s3"}}.
Objectif
Compter ce que la structure contient, puis produire le diagnostic d'une lecture qui échoue.
Ce que le réflexe à désapprendre coûte
Écrire l'automate en cascade de conditions mêle la logique de lecture et la description de la machine. Changer un état oblige alors à relire du code, et non à changer une donnée. La table sépare les deux : la boucle ne bouge plus jamais, et modifier le comportement revient à modifier un dictionnaire.