Il est possible d'analyser un document en un seul passage depuis une machine d'état. Quel est l'avantage d'avoir deux passes, à savoir. avoir un lexer pour convertir du texte en jetons, et avoir un analyseur pour tester les règles de production sur ces jetons? Pourquoi ne pas avoir un seul passage qui applique directement les règles de production au texte?
15
Réponses:
Vous n'avez pas besoin de les séparer. Les gens les combinent en analyseurs sans scanner .
Le principal inconvénient des analyseurs sans scanner semble être que les grammaires résultantes sont plutôt compliquées - plus compliquées que la combinaison correspondante d'une expression régulière faisant lexing et d'une grammaire sans contexte faisant l'analyse sur le flux de jetons. En particulier, les grammaires pour l'analyse sans scanner tendent à l'ambiguïté. Il est plus facile de lever l'ambiguïté pour les grammaires travaillant sur un flux de jetons.
Un avantage pragmatique de l'utilisation d'une phase de lexing initiale dédiée est que vous ne couplez pas l'analyseur suivant avec des détails lexicaux. Ceci est utile lors du développement précoce du langage de programmation, lorsque les détails lexicaux et syntaxiques changent encore fréquemment.
la source