Compilateurs: principale différence entre l'analyseur lexical et l'analyseur?


Réponse 1:

Voyons cela comme une analogie, considérons l'anglais comme notre langage de programmation.

L'analyseur lexical divise l'entrée en jetons valides, c'est-à-dire des entités plus petites qui ont du sens et sont bien définies dans le langage:

Par exemple - "beautiful" est un jeton valide car c'est un mot valide en anglais.

Alors que "dsefuewfiu" n'est pas un jeton valide car il n'a aucun sens.

Alors que Parser vérifie la grammaire, c'est-à-dire que la phrase respecte les lois de la formation de phrases en anglais:

Par exemple, «Mon nom est Rahul» est une phrase anglaise valide.

Alors que "nom mon est Rahul" n'a aucun sens.

C'est la différence fondamentale entre un analyseur lexical et un analyseur.


Réponse 2:

Un analyseur lexical analyse généralement en termes d'expressions régulières, fournissant une sortie qu'un analyseur utilise sous la forme de jetons: identificateurs, chaînes, nombres, opérateurs.

Un analyseur implémente une grammaire de niveau supérieur en utilisant les jetons en entrée. Il fait des choses qu'un analyseur lexical ne peut pas, comme les parenthèses d'équilibrage.

Il n'est pas techniquement nécessaire de le diviser en deux étapes comme celle-ci, mais conceptuellement, il est beaucoup plus facile de le faire.


Réponse 3:

L'analyseur lexical est la première phase du processus de compilation qui prend le programme source en entrée et produit une séquence de caractères significatifs appelés lexèmes ...

Ces lexèmes fonctionnent comme une entrée pour

Prochaine phase d'analyse syntaxique.

Dans cette phase, l'analyseur prend ce lexème en entrée et produit une sortie sous la forme d'un arbre de syntaxe ......