如何在flex / bison中包含导入

时间:2011-11-08 14:27:56

标签: c bison flex-lexer

我正在制作编程语言转换器,并且它具有import和include。

例如:

 import com.nanana.MyClassFile
 include "myfile.any"

我是新手,这意味着我迷失了,我怎么能成功。 我想知道是否有可能在解析另一个文件时解析它。

我该怎么办?

编辑:

我用来解析main函数中的文件的代码是:

yyin = fopen( argv[1], "r" ); 
return yyparse();

我可以使用相同的代码,还是有其他代码?

1 个答案:

答案 0 :(得分:1)

词法分析器使用YY_INPUT宏来获取其数据。在解析器中,一旦解析了包含“myfile.any”命令,解析器将需要打开新文件并安排从YY_INPUT而不是原始文件返回其数据。一旦达到EOF,YY_INPUT将需要继续从原始文件中读取。您可能希望将这些打开的文件存储在堆栈中,以便包含的文件可以包含其他文件,但要注意无限的包含循环。