Espírito

Spirit é um quadro de gerador de parser de descida recursiva de objetos implementados usando técnicas de meta-programação de modelo
Baixe Agora

Espírito Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Boost Software Licen...
  • Preço:
  • FREE
  • Nome do editor:
  • Joel de Guzman
  • Site do editor:
  • http://www.boost.org/doc/libs/1_35_0/libs/spirit/index.html

Espírito Tag


Espírito Descrição

O Spirit é um quadro de gerador de parser de descida recursiva orientado a objetos implementados usando técnicas de Meta-Programação de Meta O espírito é uma estrutura de gerador de parser orientada para objetos de descida recursiva implementada usando técnicas de Meta-Programming. Os modelos de expressão nos permitem aproximar a sintaxe da forma estendida de rebous (EBNF) completamente em C ++. A estrutura do Espírito permite que uma gramática de destino seja escrita exclusivamente em C ++. As especificações de gramática EBNF inline podem misturar livremente com outro código C ++ e, graças ao poder gerador dos modelos C ++, são imediatamente executáveis. Em retrospecto, compiladores convencionais ou geradores de parser têm que executar uma etapa de tradução adicional a partir do código EBNF de origem para C ou C ++ Code.A Snippet Simple Ebnf Grammar: Grupo :: = '(' expressão ')' fator :: = = inteiro | Termo do grupo :: = fator (('* fator) | (' / 'fator)) * Expressão :: = termo ((' + termo) | ('-' - termo)) * é aproximado usando as instalações do Espírito como visto Neste snippet de código: grupo = '(' >> expressão >> ')'; fator = inteiro | grupo; termo = fator >> * (('*' >> fator) | ('/' >> fator)); Expressão = termo >> * (('+' >> termo) | ('-' >> termo)); através da magia dos modelos de expressão, este é perfeitamente válido e executável código C ++. A expressão da regra de produção é, na verdade, um objeto que tem uma eventsão de função de membro que faz o trabalho de um código fonte escrito na gramática que acabamos de declarar. Sim, é uma calculadora. Devemos simplificar por agora, ignorando as declarações do tipo e a definição do inteiro de regra invocado por fator. A expressão da regra de produção em nossa especificação gramatical, tradicionalmente chamada de símbolo inicial, pode reconhecer entradas 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 + (2 + 4 + 5)))) Certamente fizemos algumas modificações na sintaxe original do EBNF. Isso é feito para estar em conformidade com as regras de sintaxe C ++. Mais notavelmente vemos a abundância de mudanças >> operadores. Como não há operadores 'vazios' em C ++, simplesmente não é possível escrever algo como: um Bas visto na sintaxe matemática, por exemplo, para significar multiplicação ou, no nosso caso, como visto na sintaxe EBNF para significar sequenciamento (B deve seguir a). O framework usa o operador Shift >> em vez disso para essa finalidade. Tomamos o operador >>, com flechas apontando para a direita, para significar "é seguido por". Assim, escrevemos: um >> b o operador alternativo | e os parênteses () permanecem como é. O operador de atribuição = é usado no lugar do EBNF :: =. Por último, mas não menos importante, a estrela Kleene * que costumava ser um operador de postfix no EBNF torna-se um prefixo. Em vez de: A * // ... na sintaxe EBNF, nós escrevemos: * a // ... no espírito. Não há estrelas postfix, "*", em C / C ++. Finalmente, terminamos cada regra com o semicólone onipresente ". O que é novo nesta versão: · Corrigido um erro de transbordamento inteiro impedindo a análise de certos inteiros grandes. Este bug foi relatado e fixado por Michael Andersen Nex


Espírito Software Relacionado

Matrixview.

MatrixView é uma biblioteca JavaScript para adicionar facilmente e discretamente a funcionalidade rica para listas padrão não ordenadas HTML. ...

117

Download

Flexess

Flexess fornece uma estrutura de segurança extensível para aplicativos Java. ...

124

Download

HDF5.

HDF5 é uma suíte de tecnologia exclusiva que possibilita o gerenciamento de coleções de dados extremamente grandes e complexas. ...

190

Download

TK :: Perlmethodlist.

TK :: Perlmethodlist é um módulo Perl para consultar a tabela de símbolos para métodos (sub-rotinas) definido em uma classe (pacote). ...

144

Download