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).

War es hilfreich?

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;
    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top