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_)
>> '}'
;
}
};
的问题是,在大括号内的零部件甚至可以互换;我已阅读关于排列运算符^,但是当至少有一个操作数按任意顺序匹配时,我会读取匹配结果。我需要我的语法才能匹配,只有当他们以任何顺序和一次只有一个。
有人可以帮我吗?