c++ - 尝试解析为 utree 时出现编译错误

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

我正在尝试使用以下代码将字符串解析为 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';
}

MyGrammar 在哪里

namespace spirit  = boost::spirit;    

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

但这无法编译并显示以下消息:

Error 1 error C2664: 'bool boost::function4::operator ()(T0,T1,T2,T3) const' : cannot convert parameter 4 from 'const boost::spirit::unused_type' to '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

有人可以帮帮我吗?

最佳答案

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

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

关于c++ - 尝试解析为 utree 时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719303/

相关文章:

c++ - 作为 const 抛出异常

c++ - 使用 boost::spirit 的代码中的模糊类型编译错误

c++ - 改进替代解析器的使用

c++ - SEH StackOverflow 异常 - 真的无法捕获吗?

c++ - 选择哈希键类型的理由

c++ - 类型删除和互操作性 : virtual binary operator issues in C++

c++ - 如何使用boost::spirit解析UTF-8?

c++ - 将 Boost Spirit 递归匹配结果保存到 C++ 结构

boost-spirit - 我怎样才能要求解析器只返回完整的匹配而不是部分的提升精神?

c++ - qi % 运算符使用 (1) 分隔符属性和 (2) 接受尾随分隔符