Article de reference

Analyse syntaxique sans scanner

( Apprenez comment et quand supprimer ce message ) En informatique , l'analyse syntaxique sans scanner (ou analyse sans analyseur lexical ) effectue la tokenisation (découpage d...

informatique , l'analyse syntaxique sans scanner (ou analyse sans analyseur lexical ) effectue la tokenisation (découpage d'un flux de caractères en mots) et l'analyse syntaxique (organisation des mots en syntagmes) en une seule étape, au lieu de procéder par une succession d' analyseurs lexicaux et syntaxiques exécutés simultanément . Une grammaire est dite sans scanner si elle utilise un formalisme unique pour exprimer à la fois la structure lexicale (au niveau des mots) et la structure syntagmatique du langage.

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écessaire
  • La structure lexicale non régulière est gérée facilement
  • La « classification des jetons » est inutile, ce qui élimine le besoin d'adaptations de conception telles que « le hack du lexer » et les mots réservés du langage (tels que « while » en C ).
  • Les grammaires peuvent être compositionnelles (pouvant être fusionnées sans intervention humaine) [a]
  • Inconvé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.