Vous êtes sur la page 1sur 17

Théorie des langages et Compilation

Chapitre 5

Langages algébriques
Grammaires algébriques
(à contexte libre, free context)

Pr. Saïd Ouatik El Alaoui


s_ouatik@yahoo.com
ouatikelalaoui.said@uit.ac.ma
1

VI. Grammaires algébriques


VI.1. Définitions et notations
Définition :
Une grammaire algébrique (ou à contexte libre) est la structure G=(V,T,P,S) où
V  T=  et =V  T avec :
V: ensemble de symboles appelés variables.
T: ensemble de symboles appelés terminaux.
P  V  *: ensemble de règles appelées règles de production.
S : un symbole particulier appelé axiome (symbole initial).

Notation :
Chaque règle de production (A,) est notée A → .

2

VI. Grammaires algébriques


VI.1. Définitions et notations
Exemple 1 :
G=(V,T,P,S) avec V={S},T={a, b}
P: S→aSb
S→ε

Exemple 2 :
G=({S}, {+, *, (, ), a}, P, S) où P est défini par:
S → S+S
S → S*S
S → (S)
S→a

3

VI. Grammaires algébriques


VI.1. Définitions et notations
Convention :
Les lettres capitales A, B, C, D,… désignent les variables.
Les lettres minuscules a, b, c, d… désignent les terminaux.
 ,, … désignent des chaines (mots) de variables et/ou de terminaux.

Simplification de la notation d’une grammaire :


Les règles de production ayant le même coté gauche A → 1, A → 2,… A → k
sont regroupées comme suit: A → 1|2|…|k

Exemples :
1) S→aSb| ε
2) S → S+S| S*S| (S)| id

4

VI. Grammaires algébriques


VI.2. Dérivation et langages
Dérivation et langages :
Soit G=(V, T, P, S) une grammaire algébrique (CFG).
On définit la relation  sur * (" dérive directement de"):
Soient ,   *
   s.s.s =uAv, u  *, A  , v *
 =u v
Et (A→ ) P

Exemple :
Soit la grammaire: S→aSb| ε

- S  aSb  ab
- Sε

- S  aSb  aaSbb  aaaSbbb  a3b3 5


VI. Grammaires algébriques


VI.2. Dérivation et langages
Remarque :
La relation  n’est pas en général réflexive, ni transitive.
D’où on définit la relation 
*
comme étant la fermeture réflexive et transitive de 
La relation * est lue: " dérive de ".

Notation :
Soient ,   *
Si i dérive de  par l’application d’exactement i productions, alors on note:

Définition:
i
 *
 s.s.s  i  0 tel que   
* i
 =  i0 

6

VI. Grammaires algébriques


VI.2. Dérivation et langages
Dérivation et langages :
Soit G=(V, T, P, S) une grammaire algébrique (CFG).
0
   s.s.s =
1
  s.s.s   
2
  s.s.s  1 tel que   1  
*
  s.s.s  i  0 tel que   

Soient ,   *
* i
  s.s.s  i  0 tel que   
C.à.d  0, 1, … i tel que = 0  1  2…  i= 

7

VI. Grammaires algébriques


VI.3. Langages algébriques
Langage engendré par G :
Soit G=(V, T, P, S) une grammaire algébrique (CFG).
• Le langage engendré par G est:
L(G)={w  T*/ S *w}
• Le langage engendré par G à partir de u (avec u   *) est:
L(G, u)={w  T*/ u w}
*

Remarque: Si u T* alors L(G, u)={u}

Corollaire :
Soit G=(V, T, P, S) une grammaire algébrique et soit   *=(V  T)*
L(G) s.s.s
-  ne contient que des terminaux.
-  dérive de S.
8

VI. Grammaires algébriques


VI.3. Langages algébriques
Définitions :
Un langage est dit algébrique (à contexte libre) s.s.s il existe une grammaire
algébrique G tel que: L=L(G).
Deux grammaires G1 et G2 sont équivalentes s.s.s on a: L(G1)=L(G2).

Exemple 1 :
Soit G=(V, T, P, S) où V={S}, T={a, b}
S→aSb| ab

- S  ab
- S  aSb  aaSbb  … aa…aSbb…b  anbn

On déduit : L(G)={anbn/n  1}

9

VI. Grammaires algébriques


VI.3. Langages algébriques
Exemple 2 :
Soit G=(V, T, P, S) une grammaire algébrique (CFG) avec :
S → S+S| S*S| (S)| id

L(G)=??

- S  id
- S  (S)  (S+S) (S*S+S) … (id*id+id)

L(G) =l’ensemble des expressions arithmétiques

10

VI. Grammaires algébriques


VI.3. Langages algébriques

Définition :
Une ε -règle est une règle de production de la forme: A → ε

Exemple:
S→aSb| ε

Exercice:
Donner une grammaire engendrant les langages suivants:
1) L’ensemble des mots palindromes sur {a,b}
2) L’ensemble des mots de la forme anbm tel que n 0 et m 0.

11

VI. Grammaires algébriques


VI.3. Langages algébriques
Exercice:

Donner une grammaire engendrant les langages suivants:

1) L’ensemble des mots palindromes sur {a,b}

S→ aSa | bSb |a | b| ε

2) L’ensemble des mots de la forme anbm tel que n 0 et m 0.

S→ aS | Sb | ε

12

VI. Grammaires algébriques


VI.4. Arbre de dérivation
Arbre de dérivation :
Soit G=(V, T, P, S) une grammaire algébrique (CFG).
On appelle arbre de dérivation sur G, un arbre de racine S dont les nœuds sont
étiquetés par les éléments de Z=V  T {ε} tel que: les nœuds fils sont étiquetés par
les éléments des parties droites des règles de production.

Exemple :  ={a, b} S
S→aSb| ε
a S b
S  aSb  aaSbb  aabb=a2b2
a S b

13

VI. Grammaires algébriques


VI.4. Arbre de dérivation
Proposition :
Soit G=(V, T, P, S) une grammaire algébrique.
Pour tout mot w  L(G), il existe un arbre de dérivation.

Exercice :
Soit la grammaire G définie par les productions suivantes:
S → aB| bA
A → a| aS| bAA
B → b| bS| aBB

Soit w=a3b2ab3a
1) Montrer que w L(G).
2) Donner un arbre de dérivation pour w.

14

VI. Grammaires algébriques


VI.4. Arbre de dérivation
Exercice : (suite)
S  aB  a2BB  a3BBB  a3bBB  a3b2B  a3b2aBB  a3b2abB  a3b2ab2S
 a3b2ab3A  a3b2ab3a.

Dérivation gauche :
On choisit à chaque étape de dériver la variable la plus à gauche.

15

VI. Grammaires algébriques


VI.5. Grammaires ambigües
Définition : Grammaires ambigües
Soit G=(V, T, P, S) une grammaire algébrique
• G est ambigüe sil existe un mot w  L(G) admettant au moins deux
arbres de dérivation.
• Un langage est ambigu si toute grammaire l’engendrant est ambigüe.

Exemple :
E → E+E | E*E| (E) | a
Soit w=a+a*a

16

VI. Grammaires algébriques


VI.5. Grammaires ambigües
Deux arbres de dérivation différents pour le mot w=id+id*id.
Donc G est ambigüe.
E E

E + E E * E

a E * E E + E
a

a a a a

17

Vous aimerez peut-être aussi