1

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

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

是否有任何 Bison 功能可以执行其中的功能yy_switch_to_buffer()flex

4

1 回答 1

2

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

于 2013-06-12T18:50:46.190 回答