gpt4 book ai didi

c++ - Boost Spirit Lexeme与No_skip

转载 作者:行者123 更新时间:2023-12-02 10:11:48 25 4
gpt4 key购买 nike

就像Boost.Spirit上的描述一样,lexeme和no_skip之间的唯一区别是pre_skip。
但是经过一些测试,我仍然对pre_skip的确切含义感到困惑。
那么什么样的条件会有所作为,也许一个例子可以帮助我更好地理解它。
谢谢!

最佳答案

跳过前会忽略表达式开头的空白。
对比:
Live On Coliru

#include <boost/spirit/include/qi.hpp>

namespace qi = boost::spirit::qi;
static std::string const input = " 42j";

int main() {
auto run_test = [](auto p) {
auto f = input.begin(), l = input.end();
int i;
return qi::phrase_parse(f, l, p, qi::space, i)
? std::to_string(i)
: "unparsed";
};

std::cout << "no_skip: " << run_test(qi::no_skip[ qi::int_ >> 'j' ]) << "\n";
std::cout << "lexeme: " << run_test(qi::lexeme[ qi::int_ >> 'j' ]) << "\n";
}
打印品:
no_skip: unparsed
lexeme: 42
如您所见, lexeme会默默地占用前导空白。那是预略。

关于c++ - Boost Spirit Lexeme与No_skip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63234428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com