homechevron_rightProfessionnelchevron_rightOrdinateurs

Générateur d’analyseur LL1. Encore un autre générateur d’analyseur descendant.

Le calculateur vérifié l'exactitude de la grammaire LL1, analyse un texte en utilisant la grammaire, montrer les ensembles FIRST, FOLLOW et FIRST PLUS, l'arbre d'analyse et donne le code d'analyse PLANETCALC.

Le calculateur suivant génère le code d'analyse selon la grammaire donnée sous la forme EBNF. Nous utilisons la grammaire d'expressions mathématiques classiques comme exemple.

Le résultat peut être utilisé pour créer l'analyseur LL(1) en utilisant la bibliothèque PCP disponible sur ce site.
Exemple de code :

var parser = new PCP.parser
( [/* mettre le code généré ici */] );
//crée l'arbre d'analyse
var tree = parser.parse( text ); 
//résultat de la traversée
tree.visit( {
/* définir la traversée personnalisée
ici, fonctions avec nom 
selon votre gramamire  
(les noms nt1 et nt2 names sont choisis
ici à titre d'exemples uniquement);*/
   "nt1": function ( v ) {
        // utiliser pour obtenir la valeur de l'expression : 
       //  v.getValue()
    }
   ,"nt2": function ( v ) {
        // utiliser pour la traversée enfant : 
       //  v.visit( childvisitor );
    }
});

Certains détails concernant la syntaxe EBNF et l'utilisation de ce calculateur sont en-dessous du calculateur.

PLANETCALC, Générateur d’analyseur LL1

Générateur d’analyseur LL1

Grammaire étendue BNF en ISO/IEC 14977 : forme 1996(E).
Noms des règles devant être supprimées séparés par des virgules.
Le fichier est très volumineux; un ralentissement du navigateur peut se produire pendant le chargement et la création.
Code d'analyse PLANETCALC
 
Le fichier est très volumineux; un ralentissement du navigateur peut se produire pendant le chargement et la création.
Résultat de l'analyse de l'expression
 

Forme Backus-Naur Etendue(EBNF)

EBNF a de nombreux avantages comparé à la BNF simple :

  • La règle EBNF peut contenir plusieurs lignes de texte. La fin de la règle est marquée par le point-virgule (;).

    caractère terminal
    = lettre
    | chiffre décimal
    | symbole concaténé
    | symbole de définition
    | définition du symbole séparateur
    | symbole de fin de commentaire
    | symbole de fin de groupe
    | symbole de fin d'option
    | symbole de fin de répétition
    | symbole exception
    | symbole de première citation
    | symbole de répétition
    | symbole de deuxième citation
    | symbole de séquence spéciale
    | symbole de début de commentaire
    | symbole de début de groupe
    | ymbole de début d'option
    | ymbole de début de répétition
    | symbole terminal
    | autre caractère ;

  • Les symboles non-terminaux ne doivent pas être marqué par des équerres (mais tous les symboles terminaux doivent être entre guillemets simples ou doubles).

    chiffre décimal = ’0’ | ’1’ | ’2’ | ’3’ | ’4’ | ’5’ | ’6’ | ’7’| ’8’ | ’9’;

  • EBNF a une syntaxe spéciale pour la fermeture Kleene - toutes expressions entre accolades peut être répétées zéro ou plusieurs fois :

    syntaxe= règle de syntaxe, {règle de syntaxe} ;

  • Les exceptions peuvent être définies en utilisant un signe moins. Par exemple, l'exception suivante du standard EBNF définie tous les symboles sauf les guillemets simples :

premier caractère terminal = caractère terminal - symbole de première citation ;

La description complète du RBNF peut être trouvée dans le standard ISO/IEC 14977.

Extensions de l'EBNF standard

Quelques extensions de l'EBNF standard sont implantées dans le calculateur ci-dessus. Comme séquence spéciale, vous pouvez utiliser une expression régulière ou un code de symbole hexadécimal. Ex. pour le flux de lignes, vous pouvez utiliser la règle suivante, définie par deux symboles hexadécimaux :

lineend= ?0xd?,?0xa?;

Ex. la règle basée sur l’expression régulière suivante peut être utilisée pour les correspondances de symboles non imprimables :

sp=?/\s+/?;

Analyse de la grammaire

Le calculateur réalise une analyse simple de la grammaire. Il détecte les erreurs et conditions inacceptables suivantes :

  • Erreurs grammaticales de syntaxe
  • Règle fondamentale manquante
  • Vérification d'une seule règle fondamentale
  • Récursion à gauche
  • État de l’analyse sans retour en arrière

Numérisation et analyse combinées

Dans la théorie du compilateur classique, il y a une étape de numérisation qui produit les jetons depuis le flux en entrée. Durant la numérisation, tous les symboles non nécessaires, ex, ceux non-imprimables et commentaires séparés des jetons, qui sont utilisés ultérieurement pour l'étape d'analyse. Les numérisations communes sont basées sur les expressions régulières. Ce calculateur réalise la numérisation et l'analyse de la même manière, en utilisant une grammaire unique. Généralement, si vous définissez une grammaire unique pour la numérisation et l'analyse, le grammaire devient très complexe. Pour simplifier la grammaire, nous permettons de diviser toute la grammaire en plusieurs parties, dont chacune d'elles a sa propre règle fondamentale. La boîte de saisie Supprimer les règles définies les règles à supprimer durant les étapes d'analyse préliminaire (numérisation). Pour voir un exemple de grammaire avec deux étapes d'analyse et les jetons à supprimer lors de l'étape d'analyse préliminaire, cliquez sur le lien suivant :

Exemple de grammaire à deux étapes

Littérature :

URL copiée dans le presse-papiers
Creative Commons Attribution/Share-Alike License 3.0 (Unported) PLANETCALC, Générateur d’analyseur LL1. Encore un autre générateur d’analyseur descendant.

commentaires