boostspirit2:有没有办法知道解析器的进度百分比是多少

boost spirit 2 : is there a way to know what is the parser progression percentage?

本文关键字:百分比 多少 有没有 boostspirit2      更新时间:2023-10-16

我成功地将一个pgn文件解析成了几个游戏,这主要归功于这个论坛。

然而,由于我要处理的文件有很多游戏,在我最近的电脑上,这个过程可能需要两分钟。这就是为什么我想使用这个解析器在GUI应用程序上设置进度条的动画。

我认为最简单的方法是"问"spirit他已经处理了多少角色,还有多少角色。(或者剩余和已处理的行数)。

有可能吗?如果是,我需要如何修改解析器文件才能获得这个比率?

您可以使用line_pos_iterator,也可能使用存储库中的iter_pos原语。

  • (@GuyGrier:)没有办法知道回溯的数量(否则,一开始就不需要回溯)。因此,最好的做法是接受这样一种情况,即您获得的某种"平均吞吐量"有时可能有点突发或滞后。如果您的语法不平衡,以至于这些变体不仅仅是噪音,那么您应该首先考虑修复语法/解析器定义。

  • 为了解决不知道流长度的"问题",除了不将其作为流之外,您无法解决它。

    我建议进行记忆映射。您可以使用boost::iostreamsboost::interprocess或仅使用mmap中的设施。

我估计我至少有3个答案展示了这个答案中提到的每一种技术,所以我只想在这个网站上搜索它们。