2
我要解析如下一段文字的boost ::精神排列
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_)
>> '}'
;
}
};
的問題是,在大括號內的零部件甚至可以互換;我已閱讀關於排列運算符^,但是當至少有一個操作數按任意順序匹配時,我會讀取匹配結果。我需要我的語法才能匹配,只有當他們以任何順序和一次只有一個。
有人可以幫我嗎?