如何使用Flex和Bison处理单独的编译?

时间:2012-10-15 21:24:14

标签: bison flex-lexer

是否有一种标准方法可以使用Flex和Bison实现导入模块的单独编译?在我的例子中,当解析器在导入声明中遇到标识符时,它需要推送当前状态并开始编译导入的模块,然后弹出状态并继续编译先前推送的模块。有线索吗?

1 个答案:

答案 0 :(得分:1)

您需要构建一个可重入的解析器和扫描程序。

Bison通过其“纯”api为此做了一些实验性支持 - 您将%define api.pure放在.y文件的顶部。同样,flex有一个%option reentrant,您可以在其第一部分中使用它来构建一个可重入的扫描程序。有关详细信息,请参阅bison documentationflex documentation