2012-10-15 80 views
0

有没有一种标准的方法来实现用Flex和Bison分别编译导入的模块?在我的情况下,当解析器在导入声明中遇到标识符时,它需要推送当前状态并开始编译导入的模块,然后弹出状态并继续编译先前推送的模块。任何线索?如何处理Flex和Bison的单独编译?

回答

1

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

Bison有一些实验性的支持,用它的'纯粹'api来做这件事 - 你把%define api.pure放在你的.y文件的顶部。同样,flex有一个%option reentrant,您可以在其第一部分中使用它来构建可重入扫描程序。有关更多详细信息,请参阅bison documentationflex documentation

+0

好的,谢谢克里斯。看起来很有希望。 –