La division du traitement en un analyseur lexical suivi d'un analyseur syntaxique est plus modulaire ; l'analyse syntaxique sans scanner est principalement utilisée lorsqu'une distinction claire entre analyseur lexical et syntaxique est inutile ou indésirable. TeX , la plupart des grammaires wiki , les makefiles , les langages de script simples spécifiques à une application et Raku en sont des exemples .
métalangage est nécessaireInconvénients
- Comme l'analyse lexicale et l'analyse syntaxique sont combinées, l'analyseur syntaxique résultant est généralement plus complexe et donc plus difficile à comprendre et à déboguer. Il en va de même pour la grammaire associée, si celle-ci est utilisée pour générer l'analyseur syntaxique.
- L'analyseur syntaxique résultant tend à être nettement moins efficace qu'un pipeline analyseur lexical-analyseur syntaxique, tant en termes de temps que de mémoire.
Mises en œuvre
- SGLR est un analyseur syntaxique pour le formalisme de définition de syntaxe modulaire (SDF), et fait partie du méta-environnement TXL prend en charge l'analyse syntaxique au niveau des caractères.
- dparser génère du code ANSI C pour les analyseurs GLR sans scanner .
- Spirit permet l'analyse syntaxique sans scanner et avec scanner.
- SBP est un analyseur syntaxique sans scanner pour les grammaires booléennes (un sur-ensemble des grammaires hors contexte), écrit en Java.
- Laja est un générateur d'analyseurs syntaxiques sans scanner en deux phases, prenant en charge la conversion des règles grammaticales en objets, écrit en Java.
- La fonctionnalité de grammaires Raku du langage de programmation généraliste Raku .
- PyParsing est un analyseur syntaxique sans scanner écrit en Python pur.
- META II possède des fonctions d'analyse syntaxique intégrées.
- TREE-META, comme META II, est également sans scanner et possède des fonctions d'analyse lexicale intégrées.
- CWIC est un compilateur permettant d'écrire et d'implémenter des compilateurs. Son langage intègre des règles de jetons. Ces règles sont compilées en fonctions booléennes renvoyant le succès ou l'échec.