首页 > 解决方案 > 提升精神 x3 匹配词素的结尾?

问题描述

假设我们需要解析“a”或“ab”输入。

以下天真的解析器失败:auto parser = 'a' | 'a' > 'b';

一种解决方案是以这种方式重写解析器以匹配输入的结尾:auto parser = 'a' >> eoi | 'a' > 'b'

它工作正常。

但是现在假设我们需要解析一个更复杂的输入,比如“a ab”。而且我想重用旧的解析器。

所以我写auto parser2 = lexeme[ parser ] > lexeme[ parser ]

parser2将无法解析“a ab”,因为eoi不匹配。

我知道一个明显的解决方案是重写语法(比如'a' >> 'b' | 'a''a' >> -'b'或以某种方式)。但我想知道是否有一种方法不仅可以匹配行尾,还可以匹配词位的结尾?

先感谢您。

标签: c++boostboost-spiritboost-spirit-x3

解决方案


推荐阅读