【发布时间】:2012-06-01 06:55:02
【问题描述】:
是否有生成独立 C++ 代码的 LALR 解析器生成器?我希望它会生成两个名为“Parser.cpp”和“Parser.hpp”的文件,并且生成的解析器在一个可以用于解析的类中实现(我可以包装在任何命名空间中)需要。
我想用它来获得乐趣(即小型个人项目),并且我希望输出是独立的(没有任何标题),这样我就知道我可以在任何有 C++ 编译器的地方编译它。
到目前为止的搜索:
我看过 flex/bison,但 AFAIK 它们都需要特殊的头文件和库。我也看过一点 ANTLR,但它可以生成独立的 C++ 代码对我来说并不明显。如果有人可以确认它可以,那么我可能会更多地研究它。
【问题讨论】:
-
ANTLR 3.x可以生成C代码,可以在C++中使用,但是不生成C++代码。正在针对 C++ 目标进行工作,但这仍处于早期阶段,AFAIK。
-
有关解析器生成器的列表,包括它们生成的解析器类(LALR、LL、GLR 等)和目标语言,请参阅:en.wikipedia.org/wiki/Comparison_of_parser_generators
-
如果你一开始就用 C++ 编写语法,那么你就不需要生成 C++ 代码。 AX 和 Spirit 都允许您这样做,除非您遇到递归下降问题。您也可以查看维基百科:en.wikipedia.org/wiki/Comparison_of_parser_generators
标签: c++ parsing parser-generator