Grammaire régulière

De testwiki
Aller à la navigation Aller à la recherche

En informatique théorique, en théorie des langages, une grammaire régulière, rationnelle ou à états finis est une grammaire hors-contexte particulière qui décrit un langage régulier. Les grammaires régulières donnent donc une autre possibilité que les expressions rationnelles et les automates finis pour décrire un langage régulier.

Définition

Une grammaire régulière peut être « à gauche » ou « à droite ».

  • Une grammaire régulière à gauche est un ensemble de règles de la forme :
XYa
Xa
Xϵ

X, Y sont des symboles non-terminaux et a un symbole terminal.

  • Une grammaire régulière à droite est un ensemble de règles de la forme :
XaY
Xa
Xϵ

X, Y sont des symboles non-terminaux et a un symbole terminal. De plus, comme pour toutes grammaires, on considère un non-terminal particulier appelé axiome et noté S.

Exemple

La grammaire suivante est une grammaire régulière à droite :

SdArBmCϵ
AoS
BeS
CiS

Avec la grammaire précédente, on peut engendrer le mot dodomi. En effet : SdAdoSdodAdodoSdodomCdodomiSdodomi.

Équivalence entre automates finis et grammaires régulières

On peut transformer de manière effective une grammaire régulière à droite en automate fini déterministe et vice versa. Les non-terminaux correspondent aux états de l'automate.

Exemple

Considérons la grammaire ci-dessus. L'automate correspondant est le suivant :

La suite de dérivations SdAdoSdodAdodoSdodomCdodomiSdodomi correspond à la lecture du mot dodomi dans l'automate où on passe successivement dans les états : S, A, S, B, S, C, S.

Définition formelle

Soit une grammaire régulière à droite G={N,Σ,P,S}, alors l'automate A={Q,Σ,δ,Q0,QT} équivalent à G est défini tel que:

  • Q=N{qt} avec Q l'ensemble des états et qt un état puits terminal,
  • Σ=Σ avec Σ l'ensemble des symboles terminaux
  • Q0=S avec Q0 l'état initial
  • δQ×ΣQ est la fonction de transition telle que, à la lecture d'un terminal x à partir d'un état qi vers un autre état qf=δ(qi,x).

La lecture de P permet de construire δ. Pour chaque PiP:

  • Si Pi=XaY alors on a δ(X,a)=Y
  • Si Pi=Xa alors on a δ(X,a)=qt
  • Si Pi=Xϵ alors on a XQT, QT L'ensemble des états terminaux.

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

Liens externes

Modèle:Palette Modèle:Portail