Aller au contenu principal

Automates & regex (L2)

Progression du module

#Automates & regex

Vous utilisez des regex pour chercher/valider. Que peuvent‑elles vraiment exprimer ? Les automates donnent la réponse et un cadre pour concevoir et raisonner. Ce cours fait le pont entre “outil pratique” et “fondement théorique” sans formalisme gratuit.

#De la regex à la machine, et retour

Une regex construit un langage à coups d’union (|), de concaténation et d’étoile de Kleene (*). L’idée clé: tout langage régulier reconnu par une regex peut l’être par un automate fini (AFN ou AFD). L’algorithme de Thompson traduit la regex en AFN; la construction par sous‑ensembles transforme l’AFN en AFD; Hopcroft minimise l’AFD pour accélérer l’exécution.

Exemple: des identifiants “simples” (lettre puis lettres/chiffres/underscore)

bg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 roundedbg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 rounded
1[A-Za-z][A-Za-z0-9_]*

Savoir que c’est régulier explique pourquoi un simple automate suffit à un lexer; la parenthèse équilibrée générale, en revanche, ne l’est pas (on sort du régulier), d’où les parseurs à pile.

#Limites utiles à connaître

Les regex ne gèrent pas les structures imbriquées arbitraires. Si vous vous battez pour “valider du HTML” en une seule regex, le modèle vous dit pourquoi ça casse, et vous oriente vers un parseur.

#Mini‑atelier

Prenez une regex métier (email simplifié, identifiant, numéro de version). Dessinez l’automate correspondant à la main, puis appliquez mentalement l’algorithme de minimisation (regrouper des états indiscernables). Cette gymnastique clarifie les cas limites.

Sections