Dans la méthode d’analyse syntaxique ascendante, ils existent trois
techniques pour la construction de la table d’analyse LR pour une grammaire.
(L : Left to right scanning, R : Rightmost derivation)
SLR (Simple LR) : La plus facile à implémenter, mais la moins puissante
des trois. (la table précédemment construite est une table d’analyse SLR)
LR canonique : La plus puissante, mais la plus couteuse.
LALR (Look-Ahead LR) : a une puissance et un cout intermédiaire ( c’est la
table utilisée par la majorité des compilateurs)
L’Algorithme d’analyse LR :
Un modèle d’analyseur LR est présenté dans la figure suivante, le
programma d’analyse LR est le même pour tous les analyseurs syntaxiques
ascendants (LR). Seules les tables d’analyses changent d’un analyseur à l’autre.
Tampon d’entrée
a1 ……….. ai …………. an $
Pile
em Programme d’analyse LR
Flot de sortie
Xm
…..
X1
e0
Action Successeur
Données : Une chaine en entrée et la table d’analyse LR
Résultats : Chaine Acceptée (Acc) ou Erreur syntaxique (case vide) .
Méthode : Initialiser la pile avec l’état e0 et le Tampon avec la chaine suivi par $
Répéter
Soit ei l’état en sommet de pile et a le symbole pointé par ps
Si Action [ei , a] = dej Alors empiler a suivi par ej et avancer ps
Sinon
Si Action [ei , a] = r par A∝ Alors Emettre en sortie A∝
dépiler 2* |∝| symboles
Empiler A suivi par Succ [ek , A]
(tel que ek en sommet de pile)
Sinon
Si Action [ei , a] = Acc Alors sortir (Chaine Accéptée)
Sinon erreur ()
Finsi
Finsi
Finsi
Finrépéter