boost :: espíritu componer gramáticas de las gramáticas
-
24-09-2019 - |
Pregunta
He descubierto la manera de utilizar espíritu - es decir, he escrito una gramática de complejidad moderada. Siempre tomo el enfoque de un programa de crecimiento - un subsistema a la vez. He escrito las estructuras de datos para un modelo complejo que cuenta con 4 tipos al más alto nivel.
Me gustaría utilizar el gramática compuesta de reglas acercan para analizar el tipo de alto nivel de un tipo a la vez - es decir, quiero escribir gramáticas 4 con un alto nivel de gramática. Si esto es posible (que estoy empezando a dudas), es posible que alguien por favor enviar un fragmento o una referencia a un proyecto que hace esto.
Un resultado entre la gramática al nivel de 50+ (mucho más posible) reglas (para manejo de errores adecuado) no suena como la diversión (código de TMP es volátil / lenta para compilar, y proporciona mensajes de error inútiles).
Solución
simplificado de un programa real, Qi debe trabajar lo mismo 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;
...
}