DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Implémentation de PEG en JavaScript – DZone
    Uncategorized

    Implémentation de PEG en JavaScript – DZone

    mars 13, 2023
    Implémentation de PEG en JavaScript - DZone
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    L’analyse syntaxique est une technique séculaire utilisée pour analyser et extraire le sens des langages (à la fois naturels et de programmation). L’analyseur est un type de compilateur qui convertit le flux de texte en syntaxe ou en arbre d’analyse conforme à certaines règles de grammaire prédéfinies.

    Il existe différentes classifications pour catégoriser ces techniques, et de nombreux contenus sont disponibles pour les expliquer. Donc, pour l’instant, je me concentre sur Grammaire des expressions de l’analyseur (qui est la recherche la plus récente sur la grammaire syntaxique). Aussi, je vais essayer d’expliquer les façons d’implémenter un analyseur PEG.

    Qu’est-ce que la PEG (grammaire d’expression de l’analyseur syntaxique) ?

    Parser Expression Grammar (PEG) est la grammaire formelle qui définit un ensemble de règles récursives dans la famille des langages d’analyse descendante. Ses analyseurs génèrent un arbre d’analyse explicitement unique pour toute entrée. Il est plus puissant que les expressions régulières mais peut avoir des inconvénients de performances liés à la mémoire et au temps dans quelques scénarios.

    Avantages de l’utilisation des analyseurs PEG

    Les analyseurs PEG présentent certains avantages par rapport aux autres types d’analyseurs. Plus particulièrement, ils sont sans ambiguïté car ils choisissent la première option parmi les choix. De plus, il est sans scanner, ce qui signifie qu’il ne nécessite pas de phase de lexification séparée. Cela facilite la mise en œuvre pour les besoins d’analyse dont la convivialité est inférieure à celle requise pour analyser une variété d’entrées dans un cas d’utilisation d’entreprise.

    Comprendre la structure du PEG

    Essayons de comprendre la structure PEG avec l’exemple de base suivant qui peut être utilisé pour analyser des expressions arithmétiques.

    start
      = additive
    
    additive
      = left:multiplicative "+" right:additive 
      / multiplicative
    
    multiplicative
      = left:primary "*" right:multiplicative 
      / primary
    
    primary
      = integer
      / "(" additive:additive ")"
    
    integer "integer"
      = digits:[0-9]+
    

    Ici, toutes les règles sont récursives et descendent jusqu’aux littéraux ou aux classes de caractères avec des expressions régulières. Comme nous pouvons le voir, une expression « additive » est une extension d’une expression « multiplicative », et une expression « multiplicative » se développe en un littéral entier ou une expression additive imbriquée. Le littéral entier est une ou plusieurs occurrences de chiffres.

    Démarrage rapide

    Le moyen le plus rapide d’écrire ou de générer un analyseur PEG en javascript est d’utiliser pegjs. C’est la bibliothèque la plus populaire (selon GitHub) pour implémenter des analyseurs PEG. Vous pouvez vous référer à la documentation officielle pour les instructions d’installation. Il prend en charge les modes CLI et API pour générer l’analyseur.

    Ligne de commande

    pegjs -o arithmetics-parser.js arithmetics.pegjs

    API JavaScript

    var peg = require("pegjs");
    
    var parser = peg.generate("start = ('a"https://dzone.com/"b')+");

    Outil en ligne

    En dehors de ces modes, un mode en ligne est disponible qui vous permet non seulement de valider votre grammaire, mais également de tester rapidement avec des exemples d’entrées. Une fois que vous avez terminé les tests, vous pouvez générer votre analyseur à la volée avec une vitesse ou une version optimisée pour le code.

    Outil en ligne

    Utilisation de l’analyseur

    L’analyseur généré peut être utilisé dans les environnements de nœud et de navigateur. Vous pouvez appeler la méthode `parse` avec une entrée de test, et elle renverra soit un arbre d’analyse, soit une erreur (pour les entrées non valides).

    parser.parse("abba"); // returns ["a", "b", "b", "a"]
    
    parser.parse("abcd"); // throws an exception

    Exemple de mise en œuvre

    Il existe de nombreux outils et services qui l’utilisent d’une manière ou d’une autre. L’implémentation la plus avancée à ce jour est node-sql-parser (construite par Zhi Tao). Il s’agit d’un pool d’analyseurs pour divers langages de requête modernes pour des bases de données telles que BigQuery, Hive et Flink.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.