是否有一种标准方法可以使用Flex和Bison实现导入模块的单独编译?在我的例子中,当解析器在导入声明中遇到标识符时,它需要推送当前状态并开始编译导入的模块,然后弹出状态并继续编译先前推送的模块。有线索吗?
答案 0 :(得分:1)
您需要构建一个可重入的解析器和扫描程序。
Bison通过其“纯”api为此做了一些实验性支持 - 您将%define api.pure
放在.y文件的顶部。同样,flex有一个%option reentrant
,您可以在其第一部分中使用它来构建一个可重入的扫描程序。有关详细信息,请参阅bison documentation和flex documentation。