informatique
Par N. Chenfour
Soit la grammaire des expressions arithmétique suivante :
1.
E
à T E’
2.
E’ à + T E’
3.
E’ à - T E’
4.
E’ à e
5.
T
à F T’
6.
T’ à * F T’7.
T’ à / F T’
8.
T’ à e
9.
F
à id
10. F
à nb
11. F
à ( E )
On note VT : le Vocabulaire Terminal. Pour la grammaire précédente :
VT = { + , - , * , / , id , nb , ( , ) }
On note VN : leVocabulaire Non Terminal. Pour la grammaire précédente :
VN = { E , E’ , T , T’ , F }
Le vocabulaire du langage noté V est = VT ∪ VN.
1. Calcul de First :
L’algorithme First peut être appliquéà une chaîne χ appartenant au vocabulaire V du
langage.
First ( χ) {
if ( χ ∈ VT ) {
F = { χ } ;
}
else if ( χ ∈ VN ) {
F = {} ;
Pour toute production [ χ à α ] {
F = F ∪ First(α) ;
}
}else if ( χ == X1 X2 X3 ... Xn) {
i = 1;
while ( (i < n) && (e ∈ First(X i)) )
F = F ∪ First(Xi);
i++;
}
F = F ∪ First(Xi);
}
return F;
}
N. Chenfour
1
2. Calcul de Follow :L’algorithme Follow ne peut être appliqué qu’à un élément X du vocabulaire non terminal
VN.
Follow (X) {
F = {} ;
if ( X est = à l’axiome de la grammaire ) {
F = { $ } ;
}
Pour toute production [ A à α Xβ ] {
F = F ∪ First(β) \ {e} ;
if ( (β == e) || (e ∈ First(β)) ) {
F = F ∪ Follow(A) ;
}
}
}
Exemple :
First
Follow
E
id , nb , (
$,)
E’
+,-,e
$,)
T
id , nb , (+,-,$,)
T’
*,/,e
+,-,$,)
F
id , nb , (
*,/,+,-,$,)
N. Chenfour
2
3. Calcul de la table d’analyse LL(1) :
L’algorithme consiste à répartir les différentes productions sur lescellules de la table
d’analyse que nous notons TA.
RemplirTableD’Anlyse (X) {
Pour toute production [ A à α ]) {
Pour tout élément a ∈ (First(α) \ {e}) {
TA[A][a] = [ A à α ];
}
if (α == e ||e ∈ First(α)) {
Pour tout élément b ∈ (Follow(A)) {
TA[A][b] = [ A à α ];
}
}
}
}
Exemple :
TA
+
-
*
/
id
E’
2
1
8
8
6
5
3
10
4
8
5...
Veuillez vous inscrire pour avoir accès au document.