结合Flexc ++和Bisonc ++

时间:2017-03-13 08:36:37

标签: c++ lex bisonc++

我正在使用Flexc++Bisonc++来实现一种小语言。

Flexc ++提供了一个简单的构造函数

Scanner(std::string const &infile, std::string const &outfile) 

设置输入和输出文件。

但是,当与Bisconc ++集成时,我无法找到一种简单的方法来将此构造函数用于生成的解析器中的scanner对象。

自动生成的Parser.h包含扫描程序对象:

...
Scanner d_scanner;
....

默认情况下,解析器类没有带输入/输出参数的构造函数,而parse-function没有参数。默认行为是从标准输入解析并输出到标准输出。

我所寻求的与this问题基本相同(见2.),但答案并未真正涵盖此标准。

目前我使用

从标准输入解析
int main(....) {
  Parser parser;
  parser.parse()
}

相反,我想指定一个文件路径并将其提供给解析函数甚至构造函数。

int main(....) {
  std::string filePath;
  Parser parser; // or (filePath) here 
  parser.parse(filePath)
}

当然我可以在解析器生成之后添加功能,但这并不是最好的选择,因为所有内容都应该自动生成。

我无法看到如何使用提供的.ih头文件执行此操作。

是的,我想使用Flexc ++和Bisonc ++。

0 个答案:

没有答案