Espíritu

Spirit es un marco de generador de parsor de descenso recursivo orientado a objetos implementado utilizando técnicas de meta-programación de plantillas
Descargar ahora

Espíritu Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Boost Software Licen...
  • Precio:
  • FREE
  • Nombre del editor:
  • Joel de Guzman
  • Sitio web del editor:
  • http://www.boost.org/doc/libs/1_35_0/libs/spirit/index.html

Espíritu Etiquetas


Espíritu Descripción

El espíritu es un marco de generador de detección de descenso recursivo orientado a objetos implementado utilizando técnicas de meta-programación de plantillas El espíritu es un marco de generador de analizador orientado a objetos de descenso recursivo implementado utilizando técnicas de meta-programación de plantillas. Las plantillas de expresión nos permiten aproximar la sintaxis de la forma extendida de Backus-Normal (EBNF) completamente en C ++. El marco espíritu permite que una gramática objetivo se escriba exclusivamente en C ++. Las especificaciones de gramática EBNF en línea pueden mezclarse libremente con otro código C ++ y, gracias a la potencia generativa de las plantillas de C ++, son inmediatamente ejecutables. En retrospectiva, los compiladores de compiladores convencionales o los generadores de parser tienen que realizar un paso de traducción adicional desde el código EBNF de origen a C o C ++ Code.a Sencillo EBNF Grammar Snippet: Grupo :: = '(' Expresión ')' Factor :: = entero | Término de grupo :: = Factor (('Factor (' ') | (' / 'factor) * Expresión :: = Término ((' + 'término) | (' - 'Término)) * Se aproxima con las instalaciones del Espíritu como se ve En este código SNIPPET: grupo = '(' >> expresión >> ')'; factor = entero | grupo; término = factor >> * (('*' >> factor) | ('/' >> factor)); Expression = Term >> * (('+' >> Término) | ('-' >> Término)); A través de la magia de las plantillas de expresión, este es un código C ++ perfectamente válido y ejecutable. La expresión de la regla de producción es, de hecho, un objeto que tiene un análisis de la función miembro que hace el trabajo recibido un código fuente escrito en la gramática que acabamos de declarar. Sí, es una calculadora. Simplificaremos por ahora saltando las declaraciones de tipo y la definición de la regla entera invocada por factor. La expresión de la regla de producción en nuestra especificación de gramática, tradicionalmente llamada símbolo de inicio, puede reconocer entradas, tales como: 12345 -12345 +123451 + 21 * 21/2 + 3/41 + 2 + 3 + 41 * 2 * 3 * 4 (1 + 2) * (3 + 4) (-1 + 2) * (3 + -4) 1 + ((6 * 200) - 20) / 6 (1 + (2 + (3 + ( 4 + 5)))) Ciertamente hemos hecho algunas modificaciones a la sintaxis original de EBNF. Esto se hace para ajustarse a las reglas de sintaxis de C ++. En particular, vemos la abundancia de turnos >> Operadores. Dado que no hay operadores 'vacíos' en C ++, simplemente no es posible escribir algo como: una basada en la sintaxis de matemáticas, por ejemplo, para significar la multiplicación o, en nuestro caso, como se ve en la sintaxis de EBNF para significar la secuenciación (b debe seguir A). El marco utiliza el cambio >> Operador en su lugar para este propósito. Tomamos el> operador >> con flechas que apuntan a la derecha, para significar "a continuación,". Así escribimos: A >> BThe Operador alternativo | y los paréntesis () permanecen como es. El operador de asignación = se usa en lugar de EBNF :: =. Por último, pero no menos importante, la estrella de Kleene * que solía ser un operador postfix en EBNF se convierte en un prefijo. En lugar de: a * // ... en la sintaxis de EBNF, escribimos: * A // ... en Spirit.Since, no hay estrellas Postfix "*", en C / C ++. Finalmente, terminamos cada regla con el omnipresente punto semi-colon, ";". Novedades en esta versión: · Se corrigió un error de desbordamiento entero que evita que falla analizando en ciertos enteros grandes. Este error fue reportado y arreglado por Michael Andersen Nex.


Espíritu Software relacionado

Matrixview

MATRIXVIEW es una biblioteca JavaScript para agregar fácilmente y discretamente agregar una rica funcionalidad a las listas estándar de HTML estándar. ...

117

Descargar

Swift Mailer

SWIFT es una biblioteca completamente OOP para enviar correos electrónicos desde los sitios web y aplicaciones de PHP. ...

217

Descargar

Flexión

proporciona un marco de seguridad extensible para las aplicaciones Java. ...

124

Descargar

Hdf5

HDF5 es una suite de tecnología única que hace posible la gestión de colecciones de datos extremadamente grandes y complejas. ...

190

Descargar

Tk :: perlmethodlist

TK :: PERLMETHODLIST es un módulo PERL para consultar la tabla de símbolos para los métodos (subrutinas) definidos en una clase (paquete). ...

144

Descargar