2
私は次のテキスト部分を解析する必要がブースト::精神順列
Camera {
position 0 0 0
direction 0 -1 0
up 0 1 0
FOVy 45
}
は、私の選択は、ブーストに行ってきました。
は私が最終的に
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_)
>> '}'
;
}
};
この文法を持っていた問題は、中括弧内の部品も交換することができることです。私は置換演算子^について読んだことがあるが、オペランドの少なくとも1つが任意の順序でマッチすると、そのマッチを読み込む。文法が必要なのは、それらのすべてが何らかの順序で一度だけあるときだけです。
誰かが私を助けることができますか?