作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就像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/
我是一名优秀的程序员,十分优秀!