2010-02-01 25 views
12

He descubierto cómo usar espíritu, es decir, he escrito una gramática moderadamente compleja. Siempre tomo el enfoque de hacer crecer un programa, un subsistema a la vez. Escribí las estructuras de datos para un modelo complejo que tiene 4 tipos al más alto nivel.boost :: espíritu que compone gramáticas de gramáticas

Me gustaría usar el grammar composed from rules approach para analizar los tipos de nivel superior un tipo a la vez, es decir, quiero escribir 4 gramáticas con una gramática de nivel superior. Si esto es posible (que estoy empezando a dudar), ¿podría alguien publicar un fragmento o una referencia a un proyecto que hace esto?

Una gramática de nivel superior con más de 50 (posibles muchas más) reglas (para el manejo correcto de errores) no parece divertido (el código TMP es volátil/lento de compilar y proporciona mensajes de error inútiles).

Respuesta

11

simplificado de un programa real, Qi debería funcionar igual que Karma.

template<class Iter> 
struct subgrammar_1 
: karma::grammar<Iter, ...> 
{ 
    ... 
} 

template<class Iter> 
struct top_level_grammar 
: karma::grammar<Iter, ...> 
{ 
    top_level_grammar() : top_level_grammar::base_type(start) 
    { 
     start %= r1 | r2; 
    } 
    karma::rule<Iter, ...> r1; 
    subgrammar_1<Iter> r2; 
    ... 
} 
+0

(+1) Sí, eso es exactamente lo que estaba buscando: P, lo intentaré cuando tenga algo de tiempo. –

Cuestiones relacionadas