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