Les expressions régulières, les grammaires régulières et les automates finis ne sont que trois formalismes différents pour la même chose. Il existe des algorithmes pour convertir l'un d'entre eux en un autre.
La raison fondamentale pour laquelle nous avons tous les trois est qu'ils ont été créés indépendamment, avec le premier ensemble d'équivalences (il existe également plusieurs autres formalismes) prouvé par Kleene (ce résultat, ou une partie de celui-ci est appelé le théorème de Kleene).
Donc, dans ce contexte, selon la direction dans laquelle vous souhaitez exécuter les modèles, ils reconnaissent ou génèrent tous des chaînes d'un langage normal, et mathématiquement, il n'y a, en ce sens, aucune différence.
Bien sûr, parfois un modèle est plus facile à utiliser qu'un autre pour une tâche particulière, en raison des détails du formalisme. De plus, la façon dont ils fonctionnent dans la tête d'un humain est souvent un peu différente, les automates finis "se sentent" comme des ordinateurs, les expressions régulières "se sentent" comme si vous construisiez une chaîne à partir de sous-chaînes plus petites et les grammaires régulières "se sentent" comme une grammaire plus traditionnelle dérivation ou classification d'une phrase dans une langue (sans surprise quand on regarde l'histoire).
Donc, pour comparer les deux, définissons-les:
Expressions régulières
Les expressions régulières sont donc définies de manière récursive comme suit:
- ∅
- ε
- uneun ∈ Σ
- UNEB
Parallèlement à certaines sémantiques (c'est-à-dire comment nous interprétons les opérateurs pour obtenir une chaîne), nous obtenons un moyen de générer des chaînes à partir d'un langage normal.
Grammaires régulières
( N, Σ , P, S∈ N)NΣSPΣ∗P
Grammaires linéaires droites
BCaε
- B→a
- B→aC
- B→ε
Grammaires linéaires gauches
B→Ca
Choses à méditer
Donc, en regardant ces définitions et en jouant avec elles, nous pouvons voir que les expressions régulières ressemblent à des règles de correspondance, ou à des façons de traiter les chaînes petit à petit.
S
Cependant, ceux-ci font vraiment la même chose fondamentale, et la façon dont vous voyez la métaphore de leur fonction dépend vraiment de vous.