Boost Spirit库允许Track the Input Position While Parsing。此机制允许在解析期间通知解析器错误的位置。
我想保留所有已解析实体的原始位置以供将来使用。 (例如,AST语义验证。)建议的方法是什么?
谢谢!
答案 0 :(得分:2)
如果您需要所有实体的位置,最好使用词法分析器,它可以生成标记,可选择携带有关匹配输入的位置信息(参见here)。如果词法分析器不是一个选项,您可以使用新的on_success()
构造(在SVN中可用或从Boost V1.47开始),它与on_error()
类似,除了您提供的处理程序将被调用成功解析与之相关的规则。这个简单的例子来看它是如何运作的。