Cadre d\'analyseur d\'esprit

Le cadre d'analyseur d'esprit de est un cadre récursif du générateur d'analyseur de de la descente orienté objectivement du mis en application using des techniques de Metaprogramming de calibre. Les calibres d'expression permettent à des utilisateurs de rapprocher la syntaxe de la forme (EBNF) de Backus prolongée par Naur complètement dans le C++ . Des objets d'analyseur se composent par la surcharge d'opérateur et le résultat est un analyseur de la marche arrière LL (FNI) qui est capable d'analyser des grammaires plutôt ambiguës.

L'esprit peut être employé pour lexing et analyser, ensemble ou séparément.

Ce cadre fait partie des bibliothèques de poussée de .

Opérateurs

En raison des limitations de la langue de C++, la syntaxe de l'esprit a été conçue autour des priorités d'opérateur de C++, tout en soutenant la ressemblance au EBNF et aux expressions régulières .

Exemple

#include  
  1. inclure le
  2. de inclure le
  3. de inclure le

using la poussée de namespace ;

force d'international (vide) { DST : : entrée de corde ; DST : : cout << " ; Entrer une ligne. \ n" ; ; DST : : getline (DST : : cin, entrée) ; DST : : cout << " ; « " obtenu ; << entré << " ;  ». \ n" ; ; compte non signé = 0 ;

/* La prochaine ligne analyse l'entrée (input.c_str ()), using un analyseur construit avec la sémantique suivante (l'identation assortit la source pour la clarté) :

Zéro occurrences ou plus de ( " littéral de corde ; cat" ; (une fois assorti, incrémenter le contre- " ; count" ; ) ou tout caractère (pour se déplacer sur trouver la prochaine occurrence du " ; cat" ;) ) * esprit : : analyser (input.c_str (), * (esprit : : str_p (" ; cat" ;) esprit : : increment_a (compte) | esprit : : anychar_p )); /* L'analyseur est construit par le compilateur employant l'opérateur surcharge et l'assortiment de calibre, ainsi le travail réel fait dans l'esprit : : analyser (), et commencer d'expression avec * initialise seulement l'objet de règle qui l'analyse utilisations de fonction. * bout de //, résultats d'exposition. DST : : cout << " ; L'entrée a eu le " ; << compte << " ; occurrences de » « de chat \ n" ; ; retour 0 ; }

Naturellement, il y a de meilleurs algorithmes adaptés à la recherche de corde, mais cet exemple donne une idée comment construire les règles et l'attache actions à elles.

Random links:Chêne tinctorial de la Californie | Youngwood, Pennsylvanie | Liste de règles du Maroc | Francis Salvador | École préparatoire de Charles de saint | Marco_del_programa_de_análisis_del_alcohol