Vous êtes sur la page 1sur 9

Plan du travail

I. ANALYSE DESCENDANTE
I.1 DEFINITION
II. RAPPELS SUR LES GRAMMAIRES
II.1 DEFINITION
II.2 LES TYPES DE GRAMMAIRES
II.3 EXEMPLE D’UNE GRAMMAIRE AVEC APPLICATION DE
L’ANALYSE DESCENDANTE
III. AMBIGUÏTE ET SUPRESSION D’UNE AMBIGUÏTE
III.1 EXEMPLE D’UNE GRAMMAIRE AMBIGUIË
III.2 SUPPRESION DE L’AMBIGUÏTE
IV. PROBLEME DE REBROUSSEMENT

1
I. ANALYSE DESCENDANTE
I.1 DEFINITION
L’analyse descendante peut être considérer comme une tentative pour déterminer une
dérivation gauche associer à une chaine d’entrée. Le problème de l’analyse est celui de
prendre une grammaire G, et de construire un algorithme capable, pour toute chaîne w de
terminaux, de décider si elle appartient ou non à L(G). Son principe est de construire l’arbre
de dérivation du haut (la racine, c’est à dire l’axiome de départ) vers le bas (les feuilles, c’est-
à-dire les unités lexicales).
II. RAPPELS SUR LESGRAMMAIRES
II.1 DEFINITION
Une grammaire un est formalisme permettant de définir une syntaxe et donc un langage
formel, c’est-à-dire un ensemble de mots admissible sur un alphabet donné.
Formellement, une grammaire est un quadruplet G = (T, N, S, P), où:
- T est un alphabet finis de “terminaux”,
- N est un ensemble fini de symboles “non-terminaux”, avec T∩N = ∅. On écrit V pour
T ∪ N.
- S est un non terminal distingué nommé le “symbole de départ” (“Start symbol”)
- P est un sous ensemble, un système de réécriture appeler règle de la production de la
grammaire
P ⊆ (T ∪ N) + x (T ∪ N)*
Si (A, m) ∈ P alors A ∈ (T ∪ N) + et m ∈ (T ∪ N)*, On peut noter : A → m.

II.2 LES TYPES DE GRAMMAIRES


On classifie les grammaires selon la règle de P :
 Grammaire libre ou de type (0) : les règles de productions sont de la formes α → β,
avec α ∈ (T ∪ N) + et β ∈ (T ∪ N)* ;
 Grammaire sensible au contexte ou de Type (1) : les règles de productions sont de la
formes α A β → αwβ avec α, β ∈ (T ∪ N)*, A ∈ T et w ∈ (T ∪ N) + ;
 La grammaire hors contexte ou algébrique (type 2) : les règles de productions sont de la
formes :
A → β avec ⦃A ∈ N, β ∈ (T ∪ N)* ⦄
 Grammaire régulière (type 3) : les règles de productions sont des formes :
o A droite
A → aB ou A → a
o A gauche
A → Ba ou A → a avec A, B ∈ A et a ∈ T.
A chaque type de grammaire est associé un type de langage et un machine reconnaissance d’où
nous utiliserons la grammaire hors contexte ou algébrique tout au long de notre travail.

2
II.3 EXEMPLE D’UNE GRAMMAIRE AVEC APPLICATION DE L’ANALYSE
DESCENDANTE
Considérons la grammaire suivante et construisons un arbre de dérivation à partir d’analyse
descendante :
S → aSbT|cT|d
T → aT|bS|c avec le mot w = accbbadbc
Première méthode : arbre de dérivation
La lecture de première lettre du mot donne

a S b T w=a
Puis la deuxième lettre nous mène à :

a S b T
c T w = ac
Ainsi de suite

a S b T
c T b S

c a S b T

d c w = accbadbc
On a trouvé un arbre de dérivation, donc ce mot appartient au langage.
Deuxième méthode : règle de réécriture
En utilisant la grammaire ci-dessous, appliquons la méthode de réécriture pour montrer
l’analyse descendante en lisant le mot w = accbadbc
r1 r2 r3 r4 r5 r6 r7
S aSbT acTbT accbT accbbS accbbaSbT accbbadbT
accbbadbc

3
III. AMBIGUITE ET SUPRESSION D’UNE AMBIGUITE
Une grammaire G dite ambigüe s’il existe un mot m de L(G) ayant au moins deux arbres de
dérivation différents selon G.
Exemple : G=(S, N, T, P) avec T = {0,1,…, 9, +,-,*, /}, N={E}, S=E, P = {E->E+E, E->E-
E, E->E*E, E->E/E} ∪ {E->x : x ∈ {0,1,…,9}}

Exemple : E => E+E => E+E-E => 1+E-E => 1+E-4 => 1+E/E-4 => 1+E/3-4 => 1+2/3-4
E =>* 1+2/3-4 Le langage d'une grammaire est l'ensemble des mots sur ses terminaux qu'on
obtient à partir de l'axiome Exemple : le langage de la grammaire G précédente est l'ensemble
des expressions arithmétiques sur les chiffres
Les dérivations successives appliquées sur un non-terminal peuvent être représentées
graphiquement sous la forme d'un arbre, appelé arbre de dérivation
E => E+E => E+E-E => 1+E-E => 1+E-4 => 1+E/E-4 => 1+E/3-4 => 1+2/3-4
Un arbre de dérivation pour 1+2/3-4 à partir de E La suite des feuilles lues de la gauche vers
la droite est 1+2/3-4 L'arbre de dérivation donne la structuration des lexèmes entre eux

E
E + E

1 E - E

E / E 4

2 3

Une grammaire est ambiguë s'il existe plusieurs arbres de dérivation pour un
mot u à partir d'un non-terminal X (donc, plusieurs structurations des lexèmes
entre eux) La grammaire de l'exemple précédent est ambiguë car il existe
plusieurs arbres de dérivation pour 1+2/3-4 à partir de E

4
E E
E + E E / E

1 E - E E + E E - E

E / E 4 1 2 3 4

2 3
Les deux arbres de dérivation pour 1+2/3-4

Notre grammaire pour les expressions arithmétiques est ambiguë car elle ne prend pas en
compte l'associativité des opérateurs (ex : E =>* 1+2+3)
Associative à droite associative à gauche
1+ (2+3) (1+2) +3
E E
E + E E + E
E + E E + E
1 2 3 1 2 3

Elle ne prend pas en compte la priorité des opérateurs (ex : E =>* 1+2*3)
1+ (2*3)=7 (1+2)*3=9
* prioritaire sur + + prioritaire sur *
E E
E + E E * E
E * E E + E
1 2 3 1 2 3

5
III.2 SUPRESSION D’UNE AMBIGUITE
On supprime les ambiguïtés liées à l'associativité de la somme en changeant
E -> E+E par E -> E+x, x∈ {0,1,…,9} :
 on impose l'associativité à gauche par des productions récursives gauches
 1+2+3 est interprété comme (1+2) +3

+ 3

1 2 les arbres penchent à gauche

Ou E -> E+E par E -> x+E, x∈ {0,1,…,9} :


 on impose l'associativité à droite par des productions récursives droites
 1+2+3 est interprété comme 1+ (2+3)

1 +

2 3 les arbres penchent à droite

Transformation de la grammaire pour supprimer les ambiguïtés :


 Pour rendre * prioritaire sur +, il faut imposer que * apparaissent plus bas, dans les
arbres, que +
 ou, de manière équivalente, que la production pour + soit plus proche de l'axiome que

E-> E+F, E->F, F->F*x, F->x, x∈ {0,1,…,9}

1+2*3 1*2+3

E E

E + F E + F

F * 3 F 3

1 2 F 2

1 *

6
IV. PROBLEME DE REBROUSEMENT
Le problème de rebroussement dans l’analyse descendante peut impliquer des retours arrière,
c’est à dire nécessite des passages répétés sur le texte source. Le principe de l’analyse
descendante avec rebroussement est de :
- On débute la construction de l’arbre à la racine ;
- On dérive la variable la plus à gauche en choisissant les productions dans l’ordre où
elles sont notées ;
- Lorsque le fragment dérivé diffère du mot à analyser ou lorsque toutes les alternatives
pour une variable ont été essayées, on retourne en arrière.
Exemple 1 : analyse avec rebroussement.
On a une grammaire suivante :
S → cAd
A → ab | a
Chaîne d'entrée est w1 = cad.
Pour construire de façon descendante un arbre d'analyse pour cette chaîne, nous construisons
initialement un arbre qui contient un seul nœud étiqueté S.
On utilise la première production de S pour développer l’arbre et obtenir :
S

c A d
La feuille la plus à gauche étiqueté c, correspond au premier symbole de w ; en conséquence,
nous avançons maintenant le pointeur d'entrée sur a, second symbole de w, et nous
considérons la feuille suivante étiquetée A. Nous pouvons alors développer A en utilisant la
première alternative pour A et nous obtenons l'arbre suivant :
S

c A d

a b
Nous avons alors une concordance avec le second symbole d'entrée ; nous avançons donc le
pointeur d'entrée sur d, troisième symbole en entrée, et comparons d avec la feuille suivante
étiquetée b. Comme b et d sont différents, nous signalons un échec et retournons à A pour voir
s'il n'existe pas une autre alternative de A, non encore essayée et qui serait susceptible de
produire une concordance. En retournant à A, nous devons remettre le pointeur d'entrée en
position 2, la position qu'il avait quand nous sommes arrivés sur A la première fois. Nous
essayons donc maintenant la seconde alternative de A et obtenons l'arbre suivant :

7
S

c A d

a
La feuille a correspond au second symbole de w et la feuille d au troisième symbole.

Example 2:
S → aX |aaY
X → aX |bY
Y → cbY |a
Analysons la chaine w2 = aacba
S

S S
a X a a Y

S S S
a X a X a a Y
a X b Y c b Y

S S S S
a X a X a a Y a a Y
a X a X c b Y c b Y
a X b X c b Y a

8
L’analyse descendante avec rebroussement est inefficace dans le cas générale : sa complexité
est exponentielle en la taille du mot car l’analyse des mots de taille n nécessitent l’exploration
d’un arbre de hauteur n. Cependant, les analyseurs avec rebroussement ne sont pas très
fréquents. Une des raisons est que le rebroussement est rarement nécessaire pour analyser les
constructions des langages de programmation. Pour des situations comme analyse des langues
naturelles, le rebroussement n'est pas très efficace et on lui préfère d'autres méthodes.

Vous aimerez peut-être aussi