我想在我的c++程序中使用ANTLR 3.5,但是我遇到了如何实际使用生成的解析器和词法分析器的麻烦。使用类似于这里的语法,我可以执行类似于SimpleCalcParser.expr()的操作。然而,如果我想做一些更复杂的事情(例如,解析一种不仅仅产生单个值的语言,而是更命令式或声明性的语言),使用c++目标似乎相当困难。据我所知,没有输出AST或模板的功能。如果没有这个,我不确定除了确定输入是否被正确解析之外,您还能做什么。有人知道如何使用c++目标来实现这个吗?或者使用C目标来生成AST,然后在c++中使用它是更好的选择吗?
前段时间我为c++目标创建了一些补丁(参见github)。应该添加AST生成(但不是100%完成)并添加一些测试,您可以将其用作示例。在当前的ATLR 3.5中,每个规则必须返回一些复杂的类作为值。您必须使用规则操作手动"构建"树。