2013-06-12 36 views
1

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

我知道有从扫描仪几个缓冲区之间切换的可能性,但是这并不能帮助我建立一个不同的解析树我分析每个数据流。

是否有野牛功能,这使执行yy_switch_to_buffer()确实在flex什么功能?

+1

标记时请小心。 Flex标签用于Adobe/Apache UI框架。 Flex-lexer用于词法分析器。 – JeffryHouser

回答

2

我认为你正在寻找pure (reentrant) parser interface,它可以让你保持独立的解析器的状态。您可能还需要使用reentrant flex lexer,以便每个解析器状态都有其自己的词法分析器状态。 (你可以使用一个单一的词法分析器和开关每次调用它缓冲时间,但折返词法分析器接口是很多清洁和更普遍的,因为它保留了所有词法分析器状态,包括,例如,启动条件和缓冲栈。)

相关问题