Académique Documents
Professionnel Documents
Culture Documents
Khaled Bsaïes
Khaled.Bsaies@gmail.com
2012-13
fournit
programme analyseur l’U.L. analyseur construit Reste de représentation
un arbre la partie intermédiaire
source lexicale demande syntaxique d’analyse frontale
U.L suivante.
table des
symboles
gestion de erreurs
Fournir des :
• techniques d'analyse syntaxique qui
conviennent à une implantation manuelle
(descendante)
• algorithmes utilisés par des outils de
génération automatique d'analyseurs
syntaxiques ascendants
c A d c A d
a a b
Cas de conflit
ambiguïté:
• si E1 alors ( si E2 alors I1 sinon I2 )
• si E1 alors ( si E2 alors I1 ) sinon I2
S → Aa | Bb | c
A → BbA' | aA'| BbdA' | cdA'
A' → aA' | adA' | ε
B → b | Bbe | ce | Aae
T E’
E: 0 1 2
+ T E’
3 4 5 6
E’ : ε
F T’
T: 7 8 9
* F T’
10 11 12 13
T’ : ε
( E )
F: 14 15 16 17
id
03/02/2013 Khaled Bsaïes 19
khaled.bsaies@fst.rnu.tn
Diagrammes de transitions simplifiés :
+
E:
T ε
0 3 6
*
F ε
T: 7 8 13
( E )
F: 14 15 16 17
id
Pile
Programme d’analyse
X Flot de sortie
prédictive
Y
Table d’analyse M
Symbole d'entrée
Non term ( ) + * id $
E E → TE' erreur erreur erreur E → TE' erreur
E' erreur E' → ε E' → +TE' erreur erreur E' → ε
T T → FT' erreur erreur erreur T → FT' erreur
T' erreur T' → ε T' → ε T' → * FT' erreur T' → ε
F F→(E) erreur erreur erreur F → id erreur
PREMIER(X) SUIVANT(X)
id
PREMIER(E)=PREMIER(T)=PREMIER(F)={(,id} et
PREMIER(E’)={ε , +} PREMIER(T’)={ε , *}
Définition
SUIVANT(X) = {t terminal | S * β X t δ et X
non-terminal S n’est pas forcément l’axiome }
∪ {$} si X est l’axiome
Intuition Si X → A B alors
– (PREMIER(B)−{ε}) ⊆ SUIVANT(A)
– SUIVANT(X) ⊆ SUIVANT(B)
– si B * ε alors SUIVANT(X) ⊆ SUIVANT(A)
– Si S est l’axiome alors le symbole marqueur de fin de
fichier $ ∈ SUIVANT(S)
Algorithme :
1. $ ∈ SUIVANT(S), S l’axiome
2. PREMIER(β) - {ε} ⊆ SUIVANT(X)
– Pour chaque production A → α X β
3. SUIVANT(A) ⊆ SUIVANT(X)
– Pour chaque production A → α X β où
ε ∈ PREMIER(β)
• Rappelons la grammaire
E→TX X→+E|ε
T → ( E ) | int Y Y→*T|ε
• Les ensembles SUIVANT
SUIVANT ( E ) = {), $}
SUIVANT ( X ) = {$, ) }
SUIVANT ( T ) = {+, ) , $}
SUIVANT ( Y ) = {+, ) , $}
S Sa SiEtSS’
S’ S’ ε S’ ε
S’eS
E Eb
03/02/2013 Khaled Bsaïes 36
khaled.bsaies@fst.rnu.tn
Conditions pour qu’une grammaire soit LL(1)
Une grammaire est LL(1) si à chaque fois qu’un non
terminal a plus d’une alternative c’est-à-dire ses règles
de production sont de la forme : A α | β les conditions
suivantes sont vérifiées:
1. Pour tout terminal a, α et β ne se dérivent pas en des
chaînes commençant par a
ou PREMIER(α) ∩PREMIER(β)=ensemble vide
1. Une des chaînes au plus α et β peut se dériver en la
chaîne vide.