next up previous contents
Next: Implantation en Prolog Up: Analyseur ascendant dépendant du Previous: Caractéristiques de l'analyseur

Algorithme

L'analyseur doit rester très général. L'algorithme de recherche des règles à appliquer est donc très général lui aussi.

A chaque étape, on mémorise les symbôles déjà reconnus dans une liste. A partir de cette liste, on a le choix entre appliquer une règle de grammaire, c'est-à-dire remplacer une partie de la liste constituant une partie droite de règle par la partie gauche de cette règle ou, si aucune règle n'est applicable, lire l'unité lexicale suivante. Si aucune règle ne s'applique, on lit une unité lexicale en utilisant le prédicat lex d'arité 3. Ce prédicat renvoie dans le premier argument la prochaine unité lexicale, le deuxième argument est le flot d'entrée, le troisième, le flot d'entrée après avoir retiré l'unité lexicale. Il est bien évident que pour des langages simples, cet algorithme d'analyse n'est pas efficace du tout.

Ceci est l'algorithme général. On remarque que l'on peut éviter beaucoup de travail lors de la recherche de règle applicable, en effet, lorsque l'on effectue un décalage, il est inutile de scruter toute la liste de symbôles pour chercher une règle applicable, il suffit de regarder la fin de la liste (le décalage ne fait que rajouter un symbôle à la fin de la liste, donc ne pas prendre ce symbôle en compte conduirait aux mêmes échecs que lors des tentatives précédantes). Les symbôles internes sont considérés après une réduction puisque seule la réduction peut modifier la structure de la liste des symbôles. Ainsi, l'algorithme final devient :

1.
Commencer l'analyse avec une liste de symbôles vide.
2.
Décalage : Lire une unité lexicale et l'ajouter à la liste des symbôles  
3.
Chercher une règle applicable à la fin de la liste des symbôles
4.
S'il n'y en a pas, recommencer à décaler en 2.
5.
Appliquer cette règle
6.
Réduction : Tant qu'il y a des règles applicables (pas seulement à la fin de la liste)
7.
Appliquer ces règles
8.
Effectuer un nouveau décalage en 2.

L'analyse est terminée lorsque la liste des symbôles ne contient que l'axiôme de la grammaire et qu'il n'y a plus rien à analyser.


next up previous contents
Next: Implantation en Prolog Up: Analyseur ascendant dépendant du Previous: Caractéristiques de l'analyseur
Christophe Delord
1998-09-02