尝试解析到 utree 时出现编译错误

compile error when trying to parse to utree

本文关键字:编译 错误 utree      更新时间:2023-10-16

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

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';
}

我的语法在哪里

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

但这无法编译以下消息:

错误

1 错误 C2664: 'bool boost::function4::运算符 ()(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\qionterminal\rule.hpp 303 MyGrammarTest

有人可以帮助我吗?

我从sehe找到了以下帖子:boost::qi::p arse似乎会导致编译错误,这回答了这个问题: 我需要将phrase_parse与船长一起使用

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