c++ - 使用 Spirit Parser Framework 处理转义

标签 c++ boost-spirit

我正在尝试使用 spirit 解析器解析类似于以下内容的字符串:

<junk> -somearg#this is a string with a literal ## in it# <junk>

我正在寻找的是一种语法,它可以提取 # 标记内的部分,但跳过中间的双 ## 是明智的,这是一种转义,意思是文字 #。

这就是我的想法:
confix_p(L'#', *anychar_p, L'#' >> ~ch_p(L'#'))
然而这返回:
#this is a string with a literal ##
我希望它跳过 ##字符....这可能吗?

比利3

最佳答案

我通过向 confix 解析器添加 kleene star 解决了这个问题。无论如何谢谢!

*confix_p(L'#', *anychar_p, L'#' >> ~ch_p(L'#')) 按预期工作。

关于c++ - 使用 Spirit Parser Framework 处理转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930334/

相关文章:

没有对象的非静态数据成员的 C++11 alignof

c++ - 动态 Spirit 解析器取决于标志位

c++ - 如果规则和解析器的属性类型不匹配,如何访问 spirit 规则的属性?

c++ - 如何将 Boost Spirit 解析的实体与其在输入流中的位置相关联?

c++ - 您如何试用小型/简单的 C 或 C++ 源代码?

c++ - 编译并运行Qt程序

c++ - 提升精神 std::vector<unsigned> 已解析但未捕获

c++ - 我如何让这个递归规则起作用?

c++ - 在 C++ 中打印链表

python - 通过 python distutils 编译带有可重定位设备代码的 cuda 代码(用于 python c 扩展)