试图理解Boost Qi解析为结构

时间:2014-10-19 21:11:29

标签: c++ boost-spirit-qi

我有一个令人尴尬的简单问题,我似乎无法解决这个问题。我正在阅读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

1 个答案:

答案 0 :(得分:2)

在这种情况下,您可以直接让params公开employee属性:

Live On Coliru

qi::rule<Iterator, employee(), ascii::space_type> params;