Département Génie Année Universitaire : 2016/2017
Logiciel et Systèmes Matière : Compilation
d’Information GLSI Enseignant TD : Mlle.Roua Ben Hamouda
Niveau : LFSI
TD2 : Analyse syntaxique
Partie I : Analyse descendante
L’opération de base d’un analyseur descendant consiste à prendre un symbole non terminal et de le faire
remplacer par la partie droite de la production correspondante.
Soit la grammaire G suivante d'expressions arithmétiques additives, avec un "-" unaire et un "-" binaire,
associant à droite.
E→F+E|F-E|F
F → - F | ( E ) | id
N.B : G est non ambiguë.
1) G est-elle récursive à gauche ?
2) G a-t-elle une chance d’être LL(1) ? Sinon, donner une grammaire G' équivalente qui le soit (peut-être).
3) Définir les fonctions PREMIER et SUIVANT et la table d'analyse pour G'- Simuler l'analyseur
déterministe pour : - id - id et - id - + id
Exercice 1 (correction)
1) Non, G n’est pas récursive à gauche.
2) G n'est pas LL(1) : Premier (F+E) = Premier (F-E) = Premier (F) = { id, -, ( }. Donc on aura les trois
règles pour E dans M(E,x), pour x égal à un de ces 3 terminaux { id, -, ( }.
Solution: Factorisation -> G' :
E → F E'
E' → + E | - E | ε
F → - F | ( E ) | id
(Où l'on fait apparaître un ε production)
3) Calcul des premiers :
Premier (E) = Premier (F) = {-, (, id}
Premier (E') = {+, - , ɛ}
Calcul des suivants :
Suivant (E’) = Suivant (E)
Suivant (E) = {$,)} Ս Suivant (E’) = {$,)} Ս Suivant (E) = {$,)}
Suivant (F) = Premier (E') - ɛ Ս Suivant (E) = {+, -,), $}
Table d’analyse
NT T + - ( ) id $
E E → F E' E → F E' E → F E'
E’ E' → + E E' → - E E' → ε E' → ε
F F→-F F → (E) F → id
Analyse de : - id – id
Pile Entrée Sortie
$E - id – id$
Analyse de : - id - + id
Partie II : Analyse ascendante
L’opération de base d’un analyseur ascendant consiste à remplacer une suite de symboles, identiques à une
partie droite d’une règle, par sa partie gauche. Cette opération porte le nom de réduction