如何在Spirit x3中执行no_case

时间:2016-11-02 02:13:32

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

我有一个问题,IDK如何在精神X3中做no_case。 Spirit中没有__但是当我使用它时,我得到:

    // If you get an error no matching function for call to 'as_parser'
    // here, for either p or s, then p or s is not a parser or there is
    // no suitable conversion from p to a parser.

有可能我很困惑,我正在尝试混合苹果和橙子(qi和x3,例如IDK x3 :: parse和qi :: parse之间的区别)

所以tl; dr我的问题是如何使这项工作:

bool parsed = phrase_parse(first, last, no_case[char_('a')], space);

(没有no_case可行)

1 个答案:

答案 0 :(得分:2)

是的,你可能会混合x3和qi。这是最简单的例子:

<强> Live On Coliru

#include <boost/spirit/home/x3.hpp>
#include <cassert>

namespace x3 = boost::spirit::x3;

int main() {
    std::string const input = "A";
    auto first = input.begin(), last = input.end();
    bool parsed = x3::phrase_parse(first, last, x3::no_case[x3::char_('a')], x3::space);
    return parsed? 0:1;
}