我正在使用Flexc++和Bisonc++来实现一种小语言。
Flexc++ 提供了一个简单的构造函数
Scanner(std::string const &infile, std::string const &outfile)
设置输入和输出文件。
但是,当与 Bisconc++ 集成时,我找不到一种简单的方法来将此构造函数用于生成的解析器中的扫描仪对象。
自动生成的 Parser.h 包含扫描仪对象:
...
Scanner d_scanner;
....
默认情况下,解析器类没有带有输入/输出参数的构造函数,解析函数没有参数。默认行为是从标准输入解析并输出到标准输出。
我所寻求的与这个问题基本相同(见 2),但答案并没有真正涵盖这个标准。
目前我从标准输入解析
int main(....) {
Parser parser;
parser.parse()
}
相反,我想指定一个文件路径并将其提供给解析函数甚至构造函数。
int main(....) {
std::string filePath;
Parser parser; // or (filePath) here
parser.parse(filePath)
}
当然我可以在解析器生成之后添加功能,但这并不是最好的选择,因为一切都应该自动生成。
我看不到如何使用提供的 .ih 头文件来执行此操作。
是的,我想使用 Flexc++ 和 Bisonc++。