【发布时间】:2014-08-02 16:49:42
【问题描述】:
按照 Boost.Spirit 编译器示例,我正在将基于 Flex/Bison 的类似计算器的语法迁移到基于 Spirit 的语法。我想添加一个功能#include<another_input.inp>。我已经成功定义了 include_statement 语法。我是否应该遵循错误处理的方式:on_success(include_statement, annotation_function(...)),即对于 include_statement 的每个成功匹配,获取新的输入文件名并再次调用phrase_parse()?还是像 Flex/Bison 一样推送/弹出输入堆栈?
谢谢。
【问题讨论】:
-
我不知道你的实际意思。 “我已经成功定义了 include_statement 语法”——也许你可以展示一下。一般来说,我的回答是:单独的解析和解释。
-
我的意思是说 AST 解析很好,而不需要进入包含的文件。您的意思是“包含”应该在解析而不是 AST 评估中?
-
没有。我同意它应该在评估中。在这种情况下,我根本不明白你的问题。
on_success与它有什么关系(在解析中)以及 Flex/Bison 的作用我不知道。
标签: c++ boost boost-spirit-qi