Ich habe gerade mit Spirit X3 begonnen und habe eine kleine Frage zu meinem ersten Test. Weißt du, warum diese Funktion "falsch" zurückgibt?Starten mit Spirit X3
bool parse()
{
std::string rc = "a 6 literal 8";
auto iter_begin = rc.begin();
auto iter_end = rc.end();
bool bOK= phrase_parse(iter_begin, iter_end,
// ----- start parser -----
alpha >> *alnum >> "literal" >> *alnum
// ----- end parser -----
, space);
return bOK && iter_begin == iter_end;
}
Ich habe gesehen, das Problem hängt damit zusammen, wie ich die Grammatik schreibe. Wenn ich es mit diesem ersetzen, gibt es „true“
alpha >> -alnum >> "literal" >> *alnum
Ich bin mit dem Geist Version in Boost-1.61.0 enthalten.
Vielen Dank im Voraus,
Sen
Hier können Sie den Code testen online: http://coliru.stacked-crooked.com/a/0ce333c6e9f75f66 – Sen