代码之家  ›  专栏  ›  技术社区  ›  Billy ONeal IS4

如何使用Boost::Spirit::Qi跟踪多个输入的输入位置?

  •  3
  • Billy ONeal IS4  · 技术社区  · 14 年前

    我想支持C++之类的东西 #include 精神分析中的机制。实际上,我有一个脚本命令,它要求解析器从文件中加载子脚本。我想能够报告错误消息中所描述的 tracking input position while parsing post,但它们不包括对多个输入的解析。

    这可以合理地通过使用 boost::spirit::qi

    在使用更智能的迭代器类型时,我一直致力于获取不同的输入。不过,我还是希望看到准确的定位。

    1 回复  |  直到 14 年前
        1
  •  1
  •   hkaiser    14 年前

    IMHO,使用智能迭代器是一个不错的选择。需要做的是让迭代器维护一堆输入上下文。每个输入上下文存储与特定文件相关的信息。

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