gpt4 book ai didi

c++ - Boost.Spirit 替代解析器并行化

转载 作者:行者123 更新时间:2023-11-28 04:33:54 24 4
gpt4 key购买 nike

我正在使用具有许多替代子规则的 x3 规则解析缓冲区。实际上,我有来自不同 GPS 设备的数据,我的主要解析器如下所示:

 auto gps_r = device1_r | device2_r | device3_r;

bool ok = x3::parse(...,gps_r,..);

我知道我可以为输入数据和每个设备规则并行调用 x3::parse()。但这可能不适用于某些递归解析(比如 SAX DOM 解析)。

我的问题更具理论性:是否有任何尝试使 Alternative Parser 异步(例如,使用 boost.coroutines2)以进行并行解析?

最佳答案

通常没有并行化的空间,因为组合语法试图尽可能少地执行前瞻和回溯。在这种情况下,并行解析的任何好处都将被线程生成和同步开销所抵消。

如果您的语法实际上像示例中那样从头开始分支 - 您可以重写它以并行运行多个 x3::parse

当前的 Spirit 替代解析器实现也存在问题,因为它没有展平表达式树(虽然它是二叉树,但通常非常不平衡)。

关于c++ - Boost.Spirit 替代解析器并行化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com