如何在 Spirit x3 中做到 no_case
How to do no_case in Spirit x3
我有一个问题,IDK 如何在精神 X3 中做 no_case。
Spirit中有no_case,但是当我使用它时,我得到:
// 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 它有效)
是的,您可能混合了 x3 和 qi。这是最简单的例子:
#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;
}
我有一个问题,IDK 如何在精神 X3 中做 no_case。 Spirit中有no_case,但是当我使用它时,我得到:
// 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 它有效)
是的,您可能混合了 x3 和 qi。这是最简单的例子:
#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;
}