c++ - boost:: espíritu que compone gramáticas de gramáticas
parsing boost-spirit (1)
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;
...
}
He descubierto cómo usar el 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.
Me gustaría utilizar la gramática compuesta a partir del enfoque de reglas para analizar los tipos de nivel superior de a un tipo por 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 reglas (posiblemente mucho más) (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).