Grammaire régulière

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Une grammaire régulière, rationnelle ou à états finie permet de décrire un langage régulier. Bien que les expressions rationnelles soient le modèle de définition le plus courant d'un langage régulier, en particulier dans le domaine des langages de programmation, il ne s'en trouve pas moins que, techniquement, la reconnaissance d'un mot d'un langage régulier s'effectue par la traduction d'expressions rationnelles en grammaire régulière.

Notation[modifier | modifier le code]

Une grammaire régulière se note de la même manière qu'une grammaire hors-contexte:

est le vocabulaire non terminal, est le vocabulaire terminal, est l'ensemble des règles de production et est le non terminal initial.

Définition[modifier | modifier le code]

L'ensemble des grammaires régulières est inclus dans l'ensemble des grammaires hors-contexte. Aussi les règles de production ne doivent comporter aucun symbole terminal dans leur partie gauche.

De plus, les règles de production doivent être de l'une des 2 formes suivantes:

  • grammaire régulière à gauche
  • grammaire régulière à droite
, et est le mot vide.

À la vue des règles de production, on peut en déduire que le principe d'une grammaire régulière est de reconnaitre un mot en partant d'une de ses extrémités et de progresser vers l'autre bout du mot en reconnaissant un seul caractère à la fois.

Mise en œuvre[modifier | modifier le code]

Puisqu'une grammaire dite régulière est également hors-contexte, il est possible de mettre en œuvre une grammaire régulière par le biais d'un automate à pile. Il est cependant plus à propos d'utiliser un automate fini déterministe. La traduction d'une grammaire régulière en un automate est aisée, voire mécanique.

Soit une grammaire régulière à gauche , alors l'automate équivalent à G est défini tel que:

  • avec l'ensemble des états et un état puits terminal,
  • avec l'ensemble des symboles terminaux
  • avec l'état initial
  • est la fonction de transition telle que, à la lecture d'un terminal à partir d'un état vers un autre état .

La lecture de permet de construire . Pour chaque :

  • Si alors on a
  • Si alors on a
  • Si alors on a , L'ensemble des états terminaux.

On applique enfin les algorithmes de déterminisation et de minimisation afin d'obtenir un automate déterministe et minimal.

Le même type de jeu de règles peut être établi pour une grammaire régulière à droite.

Exemple de conversion[modifier | modifier le code]

Soit la grammaire dont les règles de production sont:

On a donc :

En appliquant les règles énumérées ci-dessus, on obtient l'automate suivant:

Automate.png

L'automate obtenu est non minimal (bien que déterministe), un algorithme de minimalisation enlèvera ainsi l'état inutile.

Articles connexes[modifier | modifier le code]

Liens utiles[modifier | modifier le code]