好吧,到目前为止我正在使用 GNU Bison与 Lex & Yacc文件以在 C++ 中构建解析器,我的程序通过 yyparse()
函数调用它。因此,我的程序的 g++ 编译生成一个 .a 文件,允许用户插入一些要解析的代码。
但是我想使用生成的文件来编译整个项目目录层次结构(即一堆文件)。那么,Bison 是否能够在独立存档中生成结果编译器以允许我这样做?也许有一种简单的方法来解析多个文件?或者我应该自己通过 C++ 算法来管理这种行为吗?
感谢知识分享!
最佳答案
Bisons/yacc 生成的解析器不直接读取输入。解析器使用 yylex()
从输入流中提取的标记,完全由 yylex()
来读取数据或以其他方式访问输入。
默认情况下,由 (f)lex 生成的 yylex()
从全局变量 yyin
指向的输入流中读取输入。 yylex()
不会fopen
文件或以其他方式给 yyin
一个值(除了将其初始化为 stdin
) .
通过解析器传递多个文件:
适当设置
yyin
:yyin = fopen(filepath, "r");
调用
yyparse()
。关闭
yyin
。必要时重复。
关于c++ - 使用 Bison-generated-compiler 编译源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921596/