Académique Documents
Professionnel Documents
Culture Documents
Tpe Compilation Theme4 A Remettre1
Tpe Compilation Theme4 A Remettre1
Paix-Travail-Patrie Peace-Work-Fatherland
*********** ***********
*********** ***********
************* ***********
DEPARTEMENT DE DEPARTMENT OF
MATHEMATIQUES ET MATHEMATICS AND
INFORMATIQUE COMPUTERS SCIENCES
UE : COMPILATION
NIVEAU :M1SLED
Membres du groupe :
NO Noms et Prénoms Matricules
1 BOUBA ARAFAT ARAFAT 15B389FS
2 GOMNA GABRIEL 20B139FS
3 KANAM CEDRIC HERMANN 19A388FS
4 NYAPODJING GANO SERGE 19B058FS
5 TAPGA NGASIRKREO
Table des matières
Sous la supervision du :
Dr GUIDANA Gazawa Frederic
1
Groupe 1 de compilation
Table des matières
Introduction
1-analyse ascendante……………………………………………………………..4
1-1-EXEMPLE…………………………………………………………………. 4-5
2-Manche et élagage de manche………………………………………………..5
2-1-Manche …………………………………………………………………………5-6
2-2 Élagage de manche ………………………………………………………………6
3-Principe du shift-reduce parsing……………………………………………………6-7
4-Les grammaires LR et LALR………………………………………………………8
4-1- Les grammaires LR …………………………………………………………….9
4-2-Les grammaires LALR……………………………………………………….9
Conclusion
2
Groupe 1 de compilation
INTRODUCTION
L’analyse ascendante (bottom-up parser) est un autre modèle général d’analyse syntaxique. Il
est aussi connu sous le nom d’analyse par décalage-réduction (shift-reduce parser). L’analyse
par décalage-réduction qui a pour but de construire un arbre abstrait syntaxique pour un mot de
l’entrée en commençant par les feuilles (le bas) et en remontant vers la racine (haut). Ce
processus peut être considéré comme la « réduction » d’une chaîne w vers l’axiome de la
grammaire. Son principe est simple, à chaque étape de réduction une sous-chaîne particulière
correspondant à la partie droite d’une production est remplacée par le symbole de la partie
gauche de cette production et, si la sous-chaîne est choisie correctement à chaque étape, une
dérivation droite est ainsi élaborée en sens inverse.
.
3
Groupe 1 de compilation
1 - L’analyse ascendante
4
Groupe 1 de compilation
S
B
A
a b b c d e
Analyse réussie
5
Groupe 1 de compilation
• De façon analogue, aAbcde est une proto-phrase droite dont le manche est A → Abc en
position 2.
Exemple:
Et la dérivation droite :
Soit G:
E ⇒d E+E
(1) E →E+E
⇒d E+E*E
(2) E →E *E (2)
⇒d E+E*id 3
(3) E →(E)
⇒d E+id 2 *id 3
(4) E →id
⇒d id 1 +id 2 *id 3
On a indicé les id pour faciliter la discussion ; nous avons aussi souligné un manche de chaque
proto-phrase droite. Par exemple id1 est un manche de la proto-phrase droite id1+id2*id3 carid
est la partie droite de la production E → id et le remplacement de id1 par E produit la proto-
phrase droite précédente E +id2*id3.
2-2Élagage du manche :
La réduction d'un manche par la partie gauche de la production correspondante est « l'élagage
du manche ». Une dérivation droite inverse peut être obtenue par « élagage du manche ». Plus
précisément, nous commençons avec une chaîne de terminaux ω que nous désirons analyser. Si
ω est une phrase de la grammaire considérée alors ω = γn où γn est la n ième proto-phrase droite
d'une dérivation droite encore inconnue.
S = γ0 ⇒d γ1 ⇒d · · · ⇒d γn = w
6
Groupe 1 de compilation
annonçons la réussite finale de l'analyse. L'inverse de la séquence des productions utilisées dans
les réductions est une dérivation droite de la chaîne d'entrée.
Exemple :
Considérons la grammaire G1 :
E→E+E
E→E∗E
E → (E)
E → id
Et la chaîne d’entrée : id + id ∗ id
id + id ∗ id vers l’axiome E.
Principe : On se donne un mot ω, on le lit caractère par caractère et on tente de reconstituer une
dérivation.
On va utiliser une pile qui va aider à repérer des parties droites de règles. On va donc empiler
jusqu'à ce qu'on trouve une partie droite, puis on va dépiler cette partie droite (à l'envers) et
rempiler la partie gauche à sa place.
- L'opération de décalage (shift) qui consiste empiler le caractère courant, puis à lire le
caractère suivant du mot à analyser.
7
Groupe 1 de compilation
L'opération de réduction (reduce), qui consiste à remplacer la partie droite d'une règle par
sa partie gauche (on dépile la partie droite de règle correspondante et on rempile la partie
gauche).
Exemple : Grammaire G3 :
S → aABe
A →
Abc | b B → d
mot ω =
abbcde
On a défini par l'analyse une suite de règles qui définit la dérivation droite obtenue. Cette
méthode d'analyse s'appelle le 'shift-reduce parsing'.
Lorsque l'on ne sait pas s'il faut choisir un shift ou un reduce, on rencontre un conflit shift-
reduce ; lorsqu'on a les choix entre l'applications de plusieurs règles, on rencontre un conflit
reduce-reduce.
4-1-L’analyseurLR(1)
On se donne :
Initialisation :
On empile 0 et p pointe sur le premier caractère de ω.
Etape d'analyse :
On lit le haut de la pile (1 ou 2 caractères), et avec p, on en déduit une case de la table qui va
contenir des instructions.
8
Groupe 1 de compilation
1er cas :
Le symbole de haut de pile est un non-terminal F, on lit les 2 caractères de haut de pile [i,F]
qui donne un état j, que l'on empile.
2e cas :
Le symbole de haut de pile est un état i, on lit la case [i,p] de l'analyseur.
cas 2.1 : T[i,p]=rj (une règle de la forme A → α), on dépile jusqu'à obtenir (à l'envers) tous les
caractères consécutifs de α, puis on empile A.
cas 2.4 : T[i,ps] = ACCEPT, le mot est accepté, et on obtient une dérivation droite de ce mot
en reprenant (à l'inverse) la suite des règles utilisées.
Table d'analyse :
Etat nb + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 ACC
2 r2 s7 r2 r2
3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
7 s5 s4 10
8 s6 s11
9 r1 s7 r1 r1
9
Groupe 1 de compilation
10 r3 r3 r3 r3
11 r5 r5 r5 r5
mot à analyser : 3+4*2$
0 3 0,nb s5
0,3,5 + 5,+ r6 : F → nb
0,F + 0,F 3
0,F,3 + 3,+ r4 : T → F
0,T + O,T 2
0,T,2 + 2,+ r2 : E → T
0,E + 0,E 1
0,E,1 + 1,+ s6
0,E,1,+,6 4 6,nb s5
0,E,1,+,6,4,5 * 5,* r6 : F → nb
0,E,1,+,6,F * 6,F 3
0,E,1,+,6,F,3 * 3,* r4 : T → F
0,E,1,+,6,T * 6,T 9
0,E,1,+,6,T,9 * 9,* s7
0,E,1,+,6,T,9,*,7 2 7,nb s5
0,E,1,+,6,T,9,*,7,2,5 $ 5,$ r6 : F → nb
0,E,1,+,6,T,9,*,7,F $ 7,F 10
0,E,1,+,6,T,9,*,7,F,10 $ 10,$ r3 :T → T * F
0,E,1,+,6,T $ 6,T 9
0,E,1,+,6,T,9 $ 9,$ r1 : E → E + T
0,E $ 0,E 1
10
Groupe 1 de compilation
Suite de règles utilisées :
r6,r4,r2,r6,r4,r6,r3,r1 Dérivation droite
correspondante : (1,3,6,4,6,2,4,6)
Le shift-reduce parsing peut se faire sans conflit pour les grammaires LR(k).
LR(k)=Left-to-Right scan of the input producing a Right Most derivation using k symbols of
look A Head.
Définition :
On appelle langage LR(k) un langage algébrique tel qu'il existe une grammaire LR(k) qui
l'engendre.
Théorème :
Tout langage LR(k) est aussi LR(1).
Pour décider si un mot ω appartient au langage défini par une grammaire LR, on utilise un
automate à pile déterministe particulier (analyseur LR) présenté sous forme d'une table
d'analyse.
La classe des langages LL est strictement incluse dans la classe des langages LR :
11
Groupe 1 de compilation
Avantages :
- La table obtenue est nettement plus petite : on gagne du temps.
Inconvénients :
-Les langages LALR sont une classe restreinte de langages LR.
-On peut introduire des conflits alors que la grammaire de départ était bien LR(1).
12
Groupe 1 de compilation
Conclusion
Les méthodes ascendantes construisent l’arbre syntaxique de bas en haut, en partant de la
chaîne analysée (feuilles de l’arbre), puis, en assemblant, par des réductions, les sous-arbres
sous les nouveaux nœuds non terminaux jusqu’à l’axiome (racine de l’arbre).
Le modèle général utilisé en analyse ascendante est le modèle par décalage-réduction (shift-
reduce) qui autorise deux opérations :
Décaler (shift) : décaler, d’un symbole, le pointeur sur la chaîne d’entrée.
Réduire (reduce) : réduire une chaîne par un non terminal en utilisant une des règles de
production, sachant que la chaîne réduite est une suite de terminaux et non terminaux à gauche
du pointeur sur l’entrée et finissant sur ce pointeur
13
Groupe 1 de compilation