如何将 Boost Spirit 解析的实体与其在输入流中的位置相关联?
Boost Spirit 库允许跟踪输入解析时定位。该机制允许在解析期间通知解析器错误的位置。
我想保留所有已解析实体的原始位置以及它们以供将来使用。 (例如,AST 语义验证。)推荐的方法是什么?
谢谢你!
Boost Spirit library permits to Track the Input Position While Parsing. This mechanism allows informing about location of a parser error during parsing.
I'd like to preserve original location for all parsed entities together with them for future use. (For example, AST semantic verification.) What would be the recommended way to do so?
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您需要所有实体的位置,您可能最好使用词法分析器,它会生成可选地携带有关匹配输入的位置信息的标记(请参阅 此处)。如果词法分析器不是一个选项,您可以使用新的
on_success()
构造(在 SVN 中提供或从 Boost V1.47 开始),其工作方式与on_error()
类似,除了您提供的处理程序将在成功解析与其关联的规则时被调用。想象一下例子来看看它是如何工作的。If you need the position of all entities you might be better off using a lexer, which produces tokens optionally carrying positional information about the matched input (see here). If a lexer is not an option you might utilize the new
on_success()
construct (available in SVN or starting with Boost V1.47), which works similarily toon_error()
, except that your supplied handler will be invoked on a successful parse of the rule it is associated with. The the conjure example to see how it works.