提升::精神推动到单个向量

时间:2012-11-07 14:49:59

标签: c++ boost-spirit

  

可能重复:
  I can’t get Boost Spirit Lex and Qi to work together when qi returns an attribute

我有一个非常简单的问题,我似乎无法弄明白。我不打算发布完整的代码,因为我很确定你不需要看到它就知道问题是什么。

假设我想解析一个看起来像这样的文件:

"dp",1,1
"dp",2,2

您希望每个数据行都是一个结构,并将它们放入一个向量中。

namespace node {
    struct dp { int a; int b; };
    std::vector<dp> data;
}

我将它们添加到Fusion。

BOOST_FUSION_ADAPT_STRUCT(obj::dp,(int,a)(int,b))
BOOST_FUSION_ADAPT_STRUCT(node::data,(std::vector<node::dp>,data))

我的解析语法如下:

_dp %= lit("\"dp\",") >> int >> ',' >> int;
_d %= *_dp;

我的规则是:

// in node namespace 
qi::rule<Iterator,data(),Skipper> _d;
qi::rule<Iterator,dp(),Skipper> _dp;

问题在于......

_d %= *_dp;

不编译,但如果我把任何东西放在它前面,它就会。

_d %= 'a' >> *_dp;

粗略的,这不会解析,因为输入数据没有'a'但你明白了。

你会如何处理这样的事情?

0 个答案:

没有答案