Wie kann ich den Skipper ascii :: space verwenden, OHNE eol zu überspringen?

8

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?

    
Henri Sylvain 05.05.2012, 20:38
quelle

1 Antwort

14

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.

Weitere Hinweise

Spirit hat mehrere Direktiven, die den Gebrauch von Skippern beeinflussen:

  • qi::lexeme

    analysiert den Unterausdruck unabhängig vom Skipper (nützlich für beispielsweise String-Literale in einer Grammatik)

  • qi::raw

    gibt den rohen Quelliteratorbereich zurück, was bedeutet, dass die übersprungene Eingabe in das Ergebnis einbezogen wird

  • qi::no_skip , qi::skip

    kann verwendet werden, um den für den Teilausdruck verwendeten Skippertyp explizit zu ändern

Empfohlenes Lesen

Die Boost Spirit Seite hat einen schönen Artikel über solche Dinge

Generisches Beispiel

%Vor%     
sehe 06.05.2012, 10:10
quelle