Académique Documents
Professionnel Documents
Culture Documents
5
Grammaires régulières
Introduction
• Dans cette section, nous verrons un nouvel
outil servant à la génération de langages: les
grammaires.
• Changement de point de vue: au lieu de
considérer des machines qui reconnaissent un
langage donné, on construit un ensemble de
règles qui servent à construire les mots d’un
langage.
Définition
• Une grammaire (ou grammaire de phrases ou
grammaire à structure de phrases) est un
quadruplet ( V, T, S, R ) où
– V est un ensemble fini de symboles non terminaux
(alphabet non terminal).
– T est un ensemble fini de symboles terminaux
(alphabet terminal).
– S ∈ V est le symbole de départ qu’on nomme
aussi axiome ou symbole initial.
– R est un ensemble fini de règles de réécriture
(ou productions ou règles de substitution). Ces
règles sont formées d’un terme de gauche,
d’une flèche (→) et d’un terme de droite. Les
termes gauche et droit peuvent être n’importe
quelle combinaison de symboles de V ou de T,
pourvu qu’il y ait au moins un symbole de V à
gauche. Le côté droit peut être vide, ce qui est
indiqué par un λ. On parle alors de règle-λ.
Exemple
• Voici une grammaire (V,T,S,R) où
– V = {S, A, B, C};
– T = {a, b, c};
– S est le symbole de départ;
– R = { S → ASC
S→B
B → bB
B→λ
A→a La règle B → λ est une
C→c} règle-λ.
Convention
• Les majuscules sont des symboles non
terminaux.
• Les minuscules sont des symboles terminaux.
• S est le symbole initial.
• Cette convention permet de simplifier la
description d’une grammaire en donnant
seulement la description de R.
Dérivation
• Une grammaire génère une séquence de symboles
terminaux par dérivation.
• Une dérivation est une suite d’étapes où chaque étape
consiste à remplacer (tant que c’est possible) un
patron apparaissant du côté gauche d’une règle de R
par le côté droit correspondant.
• La chaîne initiale est le symbole de départ de la
grammaire.
Exemple
• À partir de l’exemple de grammaire précédent, on obtient la
dérivation suivante:
• Rappel :
{S → ASC B → bB
S→B B→λ
A→a C→c}
• S
⇒ 〈 Production S → ASC. 〉
ASC
⇒ 〈 Production A → a. 〉
aSC
Rappel :
aSC (Rappel) {S → ASC B → bB
S→B B→λ
⇒ 〈 Production S → B. 〉 A→a C→c}
aBC
⇒ 〈 Production B → bB. 〉
abBC
⇒ 〈 Production B → λ. 〉
abC
⇒ 〈 Production C → c. 〉
abc
– On peut écrire les dérivations sous une forme plus
compacte en n’écrivant pas explicitement les règles
utilisées. Par exemple, la dérivation précédente devient:
Rappel :
{S → ASC B → bB
S→B B→λ
A→a C→c}
Règles:
S → abNSc bNa → abN
S→λ bNb → bbN
bNc → bc
Exercice
• Soit G = (V, T, S, R) la grammaire dont les
règles de réécriture sont:
S → AB A → aA B → Bb
A→λ B→b
- λ
R: Non. Il n’y a pas de production B → λ.
- ba
R: Non. La grammaire permet seulement de
générer une suite de a suivie d’une suite de b.
Définition
• Soit G = (V, T, S, R). Si T ⊆ Σ où Σ est un
alphabet, on dit que G est une grammaire sur
Σ. Soit
• En utilisant B → λ: AnbmCn.
1) S → AB A → aA B → Bb
A→λ B→b
R: L = {anbm : m ∈N+ ∧ n ∈N }.
2) S → aSb S → ab
R: L = {anbn: n ∈N+ }
Définition
• Une grammaire régulière est une grammaire
avec les restrictions suivantes:
– Le côté gauche des règles consiste en un seul
symbole non terminal.
– Le côté droit des règles est
• soit un symbole terminal suivi d’un symbole non
terminal,
• soit un seul symbole terminal,
• soit λ.
Remarque
• À cause de ces restrictions, une grammaire
régulière permet de générer les symboles de
gauche à droite.
• Après k applications de règles de production
qui ne sont pas des λ-règles le mot généré est
de la forme
– a1a2 ... akV où V est non-terminal et a1, ..., ak sont
terminaux.
– ou a1a2 ... ak où a1, ..., ak sont terminaux.
Exemple
• La grammaire
C → bB C → a D → λ
bD → A A → aCb BA → DeC
Exercice
• Dire si les grammaires suivantes sont
régulières.
1) S → AB A → aA B → Bb
A→λ B→b
R: Non, à cause de S → AB et de B → Bb.
2) S → aSb S → ab
R: Non, les deux règles violent les restrictions des
grammaires régulières.
Exercice