尝试解析为utree时编译错误

时间:2012-12-05 08:49:30

标签: c++ boost-spirit boost-spirit-qi

我正在尝试使用以下代码解析字符串:

void Parse(const std::string& testString, const MyGrammar<const char*>& parser)
{
    char const* first = testString.c_str();
    char const* last = &first[testString.size()];
    boost::spirit::utree tree;
    boost::spirit::qi::parse(first,last,parser,tree);
    std::cout << "tree: " << tree << '\n';
}

MyGrammar在哪里

namespace spirit  = boost::spirit;    

class MyGrammar : public spirit::qi::grammar<Iterator, spirit::utree(), spirit::qi::space_type>
{
    ...
}

但是无法使用以下消息进行编译:

  

错误1错误C2664:'bool boost :: function4 :: operator()(T0,T1,T2,T3)const':无法将参数4从'const boost :: spirit :: unused_type'转换为'const boost :: spirit :: qi :: char_class'c:\ program files \ etas \ etasadlib \ boost \ 1.49.0 \ include \ boost \ spirit \ home \ qi \ nonterminal \ rule.hpp 303 MyGrammarTest

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

我从sehe找到了以下帖子:boost::qi::parse seems to cause compilation errors回答了这个问题:我需要使用phrase_parse和一个队长

boost::spirit::qi::phrase_parse(first,last,parser, boost::spirit::qi::space,tree);