当我使用 expect 运算符时,我会使用 spirit X3 获得更快的解析器吗

Will I get a faster parser using spirit X3 when I use the expect operator

本着 X3 的精神,我可以像这样构建一个解析器:

const auto p = ("Number:" >> x3::_int)
             | ("String:" >> +x3::alpha);

如果我知道在字符串 Number 之后是一个 int,而在 String 之后一直是一个字符串,我可以使用 > 来表示在 Number 之后只出现一个数字等等。

const auto p = ("Number:" > x3::_int)
             | ("String:" > +x3::alpha);

对我来说,区别在于如果解析器无法解析输入,则会抛出异常。

现在我的问题是,我应该尽可能使用 > 运算符而不是 >> 运算符吗?使用 > 生成的解析器是否比仅使用 >> 运算符的解析器更快?

您应该始终只分析事物。

不管:

Will I get a faster parser using spirit X3 when I use the expect operator

仅在防止回溯备选方案的范围内,但如果您需要,它不会做同样的事情。