gpt4 book ai didi

c - 如何在解析不同流的 block 时保持 Bison 状态?

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:13 25 4
gpt4 key购买 nike

我有一个单一的 Bison 解析器定义来应用于多个流。每个流都以一定的间隔以 block 的形式产生,因此我想保存给定解析实例的状态,以便在不同的流之间切换,同时保持每个解析实例的状态(及其关联的堆栈)。

我知道可以在扫描器的多个缓冲区之间切换,但这并不能帮助我为我正在分析的每个流构建不同的解析树。

是否有任何 Bison 功能允许执行 yy_switch_to_buffer()flex 中执行的功能?

最佳答案

我认为您正在寻找 pure (reentrant) parser interface ,它允许您维护单独的解析器状态。您可能还想使用 reentrant flex lexer ,这样每个解析器状态都有自己的词法分析器状态。 (您可以在每次调用它时使用单个词法分析器和切换缓冲区,但可重入词法分析器接口(interface)更简洁,更通用,因为它保留了所有词法分析器状态,例如,开始条件和缓冲区堆栈。)

关于c - 如何在解析不同流的 block 时保持 Bison 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067916/

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