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

时间:2011-06-09 16:49:49

标签: c++ boost-spirit boost-spirit-qi

Boost Spirit库允许Track the Input Position While Parsing。此机制允许在解析期间通知解析器错误的位置。

我想保留所有已解析实体的原始位置以供将来使用。 (例如,AST语义验证。)建议的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您需要所有实体的位置,最好使用词法分析器,它可以生成标记,可选择携带有关匹配输入的位置信息(参见here)。如果词法分析器不是一个选项,您可以使用新的on_success()构造(在SVN中可用或从Boost V1.47开始),它与on_error()类似,除了您提供的处理程序将被调用成功解析与之相关的规则。这个简单的例子来看它是如何运作的。