Ich muss boost :: spirit zum Parsen verwenden, und ich möchte phrase_parse function:
verwenden %Vor%Aber der vierte Begriff (ascii :: space - qi :: eol) ist von meinem Compiler nicht erlaubt. Wie kann ich den Skipper ascii :: space OHNE eol überspringen verwenden?
Die einfachste Antwort ist
%Vor% Natürlich kommt es auch auf Ihre Grammatik an: Wenn Sie eine bestimmte Skipper-Klasse erwarten, müssen Sie dies vielleicht ändern. Siehe unten für eine generische Möglichkeit, mit dieser umzugehen (obwohl Sie einfach qi::blank_type
für eine Grammatik angeben könnten, die nur qi::blank
akzeptieren soll).
Das Beispiel behandelt auch beliebige Skipper.
Spirit hat mehrere Direktiven, die den Gebrauch von Skippern beeinflussen:
analysiert den Unterausdruck unabhängig vom Skipper (nützlich für beispielsweise String-Literale in einer Grammatik)
gibt den rohen Quelliteratorbereich zurück, was bedeutet, dass die übersprungene Eingabe in das Ergebnis einbezogen wird
kann verwendet werden, um den für den Teilausdruck verwendeten Skippertyp explizit zu ändern
Die Boost Spirit Seite hat einen schönen Artikel über solche Dinge
Tags und Links c++ parsing boost boost-spirit boost-spirit-qi