alle!C++, boost :: spirit den text analysieren
Ich möchte boost :: spirit verwenden, um einige Zeichenfolge in Textdatei zu analysieren. Hier
ist die Probe in der Textdatei:
IF([banana] and [apple] and [yellow] or [green] or [red] and [!white])
THEN
do sth...;
ELSE
do sth...;
Wenn ich die Zeichenfolge in der „if“ Klammer analysieren bekam ich ein Problem.
Hier ist mein Code:
if_rule=str_p(IF)>>ch_p("(")>>if_mem>>*("and"|"or">>if_mem)>>ch_p(")");
if_mem=ch_p("[")>>*~ch_p("]")>>ch_p("]");
Es nicht analysieren work.It Dosis nur die zwei „und“ von Anfang an und ignorieren die „oder“.
Ich habe mehrere verschiedene grammer versucht und immer noch nicht funktioniert.
Vielen Dank für Ihre Hilfe!
http://en.cppreference.com/w/cpp/language/operator_precedence – llonesmiz
@jv_ Vielen Dank! In boost :: spirit, bitweise "oder" bedeutet logisch "oder". Kann einige Bitmaps erstellen, um die Grammatik zu überprüfen tritt auf oder nicht. – zdczdcc
'(" und "|" oder ")' konnte nicht kompiliert werden. Und ich habe neue Probleme. 'ruleA =! ruleB &&! ruleC', wie könnte ich es in boost :: spirit ausdrücken – zdczdcc