我正在尝试在我的项目中使用flexandbison为文件结构生成解析器代码。主要编程语言为 C++,项目采用 OO 设计,主要并行运行。
我听说生成flex的bison解析器是 C 代码,它们不能重入。谷歌搜索,我发现flex++和bisonc++。不幸的是,没有简单的教程可以开始。大多数示例都基于bison/flex. 有些人以某种方式将bison/flex解析器集成到他们的 C++ 代码中。他们应该是“棘手的”......
flex++和的文档对bisonc++我没有帮助。教程和示例,它们都从标准输入获取输入并在标准输出上打印一些消息。
我的解析器需要这些功能:
- Parser 应该是一个 C++ 类,以正常方式定义(一个头文件和一个 cpp 文件)
- Parser 从
std::stringorstd::stringstream或 null-terminated接收数据char*。
我感到很困惑。我应该使用flex++/bisonc++orflex/bison吗?以及如何做到这一点,满足上述条件?