Ich habe das folgende Stück Textboost :: spirit Permutationen
Camera {
position 0 0 0
direction 0 -1 0
up 0 1 0
FOVy 45
}
Meine Wahl auf Schub ging zu analysieren: Geist, da ich mit Flex oder Bison nicht zu tun hatte.
hatte ich endlich diese Grammatik
struct camera_grammar : qi::grammar<Iterator, camera(), ascii::space_type>
{
qi::rule<Iterator, camera(), ascii::space_type> start;
camera_grammar() : camera_grammar::base_type(start)
{
start %=
lit("Camera")
>> '{'
>> (lit("position") >> float_ >> float_ >> float_)
>> (lit("direction") >> float_ >> float_ >> float_)
>> (lit("up") >> float_ >> float_ >> float_)
>> (lit("FOVy") >> int_)
>> '}'
;
}
};
Das Problem ist, dass die Teile in geschweiften Klammern selbst getauscht werden könnten; Ich habe über den Permutationsoperator ^ gelesen, aber ich lese das, wenn mindestens einer der Operanden in beliebiger Reihenfolge übereinstimmt. Ich brauche meine Grammatik nur, wenn alle in einer bestimmten Reihenfolge und nur einmal vorhanden sind.
Kann mir jemand helfen?