boost :: Geist Grammatiken von Grammatiken Komponieren
-
24-09-2019 - |
Frage
Ich habe herausgefunden, wie Geist verwenden - das heißt, ich habe eine mäßig komplexe Grammatik geschrieben. Ich nehme immer den Ansatz ein Programm wächst - ein Subsystem zu einer Zeit. Ich habe die Datenstrukturen für ein komplexes Modell geschrieben, die 4 Typen auf höchstem Niveau hat.
würde Ich mag die benutzen Grammatik zusammengesetzt von Regeln nähern sich den Top-Level-Typen einen Typen zu einer Zeit, zu analysieren - das heißt, ich will 4 Grammatiken mit einer Top-Level-Grammatik schreiben. Wenn dies möglich ist (die ich Zweifel fange), könnte jemand bitte einen Ausschnitt oder einen Verweis auf ein Projekt erstellen, das dies tut.
Ein Top-Level-Grammatik mit 50+ (möglich viel mehr) Regeln (für die richtige Fehlerbehandlung) klingt nicht nach Spaß (TMP-Code ist flüchtig / langsam zu kompilieren, und liefert nutzlos Fehlermeldungen).
Lösung
von einem tatsächlichen Programm vereinfacht, Qi sollten die gleiche Arbeit 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;
...
}