我有一个令人尴尬的简单问题,我似乎无法解决这个问题。我正在阅读how to parse into structs上的提升文档。该章的sample code provided很简单 - 或者我认为。我想做一个非常简单的改变。
我想拆分起始规则:
start %=
lit("employee")
>> '{'
>> int_ >> ','
>> quoted_string >> ','
>> quoted_string >> ','
>> double_
>> '}'
;
...分为两个(或更多个)规则,如下:
params %=
>> int_ >> ','
>> quoted_string >> ','
>> quoted_string >> ','
>> double_;
start %=
lit("employee")
>> '{'
>> params
>> '}'
;
无论我尝试过什么,我都无法将其正确地解析为员工结构。即使我有一个识别输入的运行程序,属性也没有写入结构。如果所有内容都在"顶级"中指定,那么解析似乎只能正常工作。规则。当然,我错了?!对于我实际需要实现的解析器,我肯定需要一种更结构化的方法。
此外,我还不清楚params规则的正确类型应该是什么。我在想qi::rule<Iterator, fusion::vector<int, std::string, std::string, double>, ascii::space_type>
,但我的编译器似乎并不那么喜欢......
我应该提到我正在使用Boost v1.46.1
答案 0 :(得分:2)
在这种情况下,您可以直接让params
公开employee
属性:
的 Live On Coliru 强>
qi::rule<Iterator, employee(), ascii::space_type> params;