当我使用 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
仅在防止回溯备选方案的范围内,但如果您需要,它不会做同样的事情。
本着 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
仅在防止回溯备选方案的范围内,但如果您需要,它不会做同样的事情。