El marco del programa de análisis del alcohol del es un marco recurrente del generador de programa de análisis de la pendiente orientado al objeto ejecutado usar las técnicas de Metaprogramming de la plantilla. Las plantillas de la expresión permiten que los usuarios aproximen el sintaxis de la forma extendida (EBNF) de Backus Naur totalmente en el C++ . Los objetos del programa de análisis se componen con sobrecargar de operador y el resultado es un programa de análisis de la vuelta hacia atrás LL (inf) que es capaz de analizar gramáticas algo ambiguas.

El alcohol se puede utilizar para lexing y analizar, junto o por separado.

Este marco es parte de las bibliotecas del alza.

Operadores

Debido a las limitaciones de la lengua de C++, el sintaxis del alcohol se ha diseñado alrededor de las precedencias de operador de C++, mientras que lleva semejanza al EBNF y a las expresiones regulares .

Ejemplo

#include  
  1. incluir el
  2. de incluir el
  3. del incluir el

usar alza del namespace;

cañería de la internacional (vacío) { std:: entrada de la secuencia; std:: cout << " Entrar una línea. \ n" ; std:: getline (std:: cin, entrada); std:: cout << " “" conseguido; << entrado << " ”. \ n" ; cuenta sin firmar = 0;

/* La línea siguiente analiza la entrada (input.c_str ()), usar un programa de análisis construido con la semántica siguiente (el identation empareja fuente para mayor clareza):

Cero o más ocurrencia de ( " literal de la secuencia; cat" (cuando está emparejado, incrementar el " contrario; count" ) o cualquie carácter (moverse en encontrar la ocurrencia siguiente del " cat") ) * alcohol:: analizar (input.c_str (), * (alcohol:: str_p (" cat") alcohol:: increment_a (cuenta) | alcohol:: anychar_p )); /* El programa de análisis es construido por el recopilador que usa a operador está sobrecargando y el emparejar de plantilla, así que el trabajo real hecho dentro de alcohol:: analizar (), y el comenzar de la expresión con * inicializa solamente el objeto de la regla que el análisis aplicaciones de la función. * último de //, resultados de la demostración. std:: cout << " La entrada tenía " << cuenta << " ocurrencias “del” \ n" del gato; ; vuelta 0; }

Por supuesto, hay mejores algoritmos adecuados para la búsqueda de la secuencia, pero este ejemplo da una idea cómo construir reglas y la fijación acciones a ellas.

  • Zenithic
  • South Africa at the 2000 Summer Olympics
    Random links:Tustin, California | Barrera india de Cachemira | Carcinoma enquistado adenoideo | Anakie, Queensland | KFMB-FM

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">