我正在制作编程语言转换器,并且它具有import和include。
例如:
import com.nanana.MyClassFile
include "myfile.any"
我是新手,这意味着我迷失了,我怎么能成功。 我想知道是否有可能在解析另一个文件时解析它。
我该怎么办?
编辑:
我用来解析main函数中的文件的代码是:
yyin = fopen( argv[1], "r" );
return yyparse();
我可以使用相同的代码,还是有其他代码?
答案 0 :(得分:1)
词法分析器使用YY_INPUT宏来获取其数据。在解析器中,一旦解析了包含“myfile.any”命令,解析器将需要打开新文件并安排从YY_INPUT而不是原始文件返回其数据。一旦达到EOF,YY_INPUT将需要继续从原始文件中读取。您可能希望将这些打开的文件存储在堆栈中,以便包含的文件可以包含其他文件,但要注意无限的包含循环。