Escolar Documentos
Profissional Documentos
Cultura Documentos
Tony Bourdier
Version 1.2 − 8 juillet 2008
Analyse syntaxique 2
On a :
• Initialisation : Acc ← {X}
• Itération 1 : N ew ← {Y }
• Itération 2 : N ew ← {D}
• Itération 3 : N ew ← {C}
• Itération 4 : N ew ← ∅
• fin
On peut donc supprimer les non-terminaux A et B ainsi que toutes les règles les contenant.
Réduction
Rappel : Une grammaire est dite réduite si tous ses non-terminaux sont productifs
et accessibles.
Algorithme 3 Réduction
Entrée : Grammaire algébrique : G = (N, T, →, X)
Sortie : Réduite de G
Effectuer la réduite inférieure de G
Effectuer la réduite supérieure de la grammaire résultante de l’étape précédente
Récursivité à gauche
Rappel : Une grammaire est dite récursive gauche immédiate si elle contient
des règles de la forme
A → Aα
où A ∈ N et α ∈ (N ∪ T )∗
α1 β1
z}|{ z}|{ E → T E′
• Itération 1 : E → E +T | T est remplacé par
E ′ → +T E ′ | ǫ
α1 β1
z}|{ z}|{ T → FT′
• Itération 2 : T → T ∗F | F est remplacé par
T ′ → ∗F T ′ | ǫ
• fin
Remarque : On ne traitera pas cette année la récursivité indirecte (i.e. les règles de la forme
+
A Aα).
Factorisation à gauche
Algorithme 5 Factorisation à gauche
Entrée : Grammaire algébrique : G = (N, T, →, X)
pour toute règlede la forme A → αβ1 | . . . | αβn | γ1 | . . . | γp faire
A → αA′ | γ1 | . . . | γp
remplacer par
A′ → β1 | . . . | βn
fin pour
Production vide
Rappel : On note V ide l’ensemble composé de tous les non-terminaux pouvant
produire le vide :
∗
V ide = { A ∈ N | A ǫ }
On étend cette définition aux mots de N ∗ :
V ide = {C, D, A}
• P remier(D) = {d}
• P remier(B) = {b}
• P remier(A) = {a, c, d} :
• P remier(S) = {a, b, c, d} :
On a V ide = {E ′ , T ′ }
• Suivant(E) = {$, )}
• Suivant(E ′ ) = Suivant(E) = {$, )}
• Suivant(T ) = P remier(E ′ ) ∪ Suivant(E) ∪ Suivant(E ′ ) = {+, $, )}
• Suivant(T ′ ) = Suivant(T ) = {+, $, )}
• Suivant(F ) = P remier(T ′ ) ∪ Suivant(T ) ∪ Suivant(T ′ ) = {∗, +, $, )}
On a V ide = {E ′ , T ′ }
• SD(E → T E ′ ) = P remier(T E ′ ) = {(, i}
• SD(E ′ → +T E ′ ) = P remier(+T E ′ ) = {+}
• SD(T → F T ′ ) = P remier(F T ′ ) = {(, i}
• SD(T ′ → ∗F T ′ ) = {∗}
• SD(F → i) = P remier(i) = {i}
• SD(F → (E)) = P remier((E)) = {(}
• SD(E ′ → ǫ) = Suivant(E ′ ) = {$, )}
• SD(T ′ → ǫ) = Suivant(T ′ ) = {+, $, )}