Différence entre l'analyse descendante et ascendante

le différence clé entre l'analyse descendante et ascendante est que le de haut en bas l'analyse effectue l'analyse du symbole de départ dans la chaîne d'entrée, tandis que l'analyse de bas en bas effectue l'analyse de la chaîne d'entrée vers le symbole de départ. En outre, une autre différence importante entre l'analyse ascendante et ascendante est que l'analyse ascendante utilise la dérivation la plus à gauche et que l'analyse ascendante utilise la dérivation la plus à droite..

Les langages de haut niveau aident à écrire des programmes informatiques. Ils sont plus faciles à comprendre par le programmeur mais pas par l’ordinateur. Par conséquent, le programme de haut niveau est converti en code machine. La tâche du compilateur est de convertir le code source lisible par l'homme en code machine lisible par machine. Un programme passe par plusieurs étapes pour convertir en code machine. L'ensemble de ce processus s'appelle Système de traitement de la langue. L'un d'entre eux est la compilation. L'analyseur de syntaxe ou l'analyseur se trouve dans le compilateur et effectue la tâche d'analyse.

CONTENU

1. Vue d'ensemble et différence clé
2. Qu'est-ce que l'analyse descendante?
3. Qu'est-ce que l'analyse ascendante?
4. Comparaison côte à côte - Analyse descendante et ascendante sous forme tabulaire
5. Résumé

Qu'est-ce que l'analyse descendante??

Chaque langage de programmation a un ensemble de règles pour représenter le langage. L'analyseur de syntaxe ou l'analyse prend la chaîne d'entrée et vérifie si elle correspond aux productions grammaticales. En d'autres termes, la grammaire devrait produire cette chaîne en utilisant un arbre d'analyse.

Dans l'analyse top down, l'analyse se fait à partir du symbole de départ et atteindra la chaîne d'entrée donnée. Considérez les règles de production de grammaire suivantes. La chaîne d'entrée (w) est cad.

S -> cAd

A -> ab / a

L'arbre d'analyse après l'exécution de l'analyse top down est le suivant.

Figure 01: Arbre d'analyse 1 avec analyse descendante

S produit c A d et A produit a b. La chaîne est cabd. Ce n'est pas la chaîne requise. Donc, il est nécessaire de faire un retour en arrière, qui consiste à utiliser les autres alternatives.

De même, S produit c A d. L'application de l'autre option pour A donnera un. Maintenant, il donne la chaîne requise. Par conséquent, l'analyseur accepte cette chaîne d'entrée. L'arbre d'analyse après l'exécution de l'analyse top down est le suivant.

Figure 02: Arbre d'analyse 2 avec analyse descendante

Lorsque la chaîne d'entrée (w) est abbcde

Considérez les règles de production de grammaire suivantes.

S -> aABe

A -> Abc / b

B -> d

Analyse descendante,

S -> aABe (en substituant A -> Abc)

S -> aAbcBe (en remplaçant A -> b)

S -> abbcBe (en remplaçant B -> d)

S -> abbcde

La substitution commence par la variable la plus à gauche en premier, puis vers la prochaine position à droite, etc. Par conséquent, il suit une méthode de dérivation la plus à gauche. De plus, il est important de décider quelle règle de production choisir quand il y a une variable.

Qu'est-ce que l'analyse ascendante??

L'analyse ascendante se fait dans l'autre sens. L'analyse se déroule de la chaîne d'entrée au symbole de départ. Considérez les règles de production de grammaire suivantes et laissez la chaîne d'entrée w ɛ cad

S -> cAd

A -> ab / a

L'arbre d'analyse après l'analyse ascendante est le suivant.

Figure 03: Arbre d'analyse avec analyse ascendante

La chaîne donnée est cad. Le a est généré par A. Les c, A et d se combinent pour obtenir le symbole de départ S.

Lorsque la chaîne d'entrée (w) est abbcde

Considérez les règles de production de grammaire suivantes.

S -> aABe

A -> Abc / b

B -> d

Analyse ascendante,

S -> aABe (en substituant B -> d)

S -> aAde (en remplaçant A -> Abc)

S -> aAbcde (Substituer A -> b)

S -> abbcde

La substitution commence par la variable la plus à droite en premier, puis passe à la position de gauche suivante et ainsi de suite. Par conséquent, il suit une méthode de dérivation mot gauche.

Quelle est la différence entre l'analyse syntaxique descendante et ascendante?

L'analyse top-down est une stratégie d'analyse qui commence par examiner le niveau le plus élevé de l'arbre d'analyse puis par l'analyse en utilisant les règles d'une grammaire formelle. L'analyse ascendante est une stratégie d'analyse qui commence par examiner le niveau le plus bas de l'arborescence d'analyse et la structure en utilisant les règles d'une grammaire formelle. L'analyse s'effectue du symbole de départ à la chaîne d'entrée, en analyse top down. Par contre, l’analyse se produit de la chaîne d’entrée au symbole de départ, en analysant de bas en haut.

En outre, la décision principale dans l’analyse descendante consiste à sélectionner la règle de production à utiliser pour construire la chaîne, tandis que la décision principale dans l’analyse descendante consiste à sélectionner le moment où une règle de production doit être utilisée pour réduire la chaîne afin d’obtenir le symbole de départ. De plus, l'analyse descendante utilise la dérivation la plus à gauche et l'analyse descendante utilise la dérivation la plus à droite.

Résumé - Analyse descendante et ascendante

La différence entre l'analyse descendante et l'analyse ascendante réside dans le fait que l'analyse descendante effectue l'analyse syntaxique du symbole de début à la chaîne d'entrée, tandis que l'analyse descendante effectue l'analyse syntaxique de la chaîne d'entrée au symbole de départ..

Référence:

1. «Conférence de conception du compilateur 5 - Introduction à l’analyse syntaxique et à l’analyse LL (1)». Conférence de conception du compilateur 5 - Introduction à l'analyse syntaxique et à l'analyse syntaxique de LL, Conférences de porte par Ravindrababu Ravula, 22 mai 2014. Disponible ici