3

我想#include在 boost Spirit 解析器中支持类似 C++ 的机制。本质上,我有一个脚本命令,要求我的解析器从文件中加载子脚本。我希望能够在解析帖子时报告跟踪输入位置中描述的错误消息,但它们不包括解析多个输入。

这可以通过使用来合理地完成boost::spirit::qi吗?

我一直在努力使用更智能的迭代器类型来获取不同的输入。不过,我仍然希望看到准确的定位。

4

1 回答 1

1

恕我直言,使用智能迭代器是要走的路。需要做的是让迭代器维护一堆输入上下文。每个输入上下文存储与特定文件相关的信息。

每当需要读取一个新文件时(即在看到一个#include语句之后),就会创建一个新的输入上下文。当前输入上下文被推入堆栈,而新上下文成为活动上下文。在 EOF 上,您从堆栈中弹出下一个输入上下文,返回到#include. 如果堆栈为空,则您已到达主文件的 EOF。

在任何情况下,迭代器都只能从活动输入上下文中获取其输入。

于 2010-07-02T00:59:36.450 回答