使用ANTLR3C++代码生成 我想在我的C++程序中使用ANTLR 3.5,但是我遇到了麻烦,如何真正地使用生成的解析器和词表。使用类似的语法,我可以执行类似SimpleCalcParser.expr的操作。但是,如果我想做一些更复杂的事情,例如解析一个

使用ANTLR3C++代码生成 我想在我的C++程序中使用ANTLR 3.5,但是我遇到了麻烦,如何真正地使用生成的解析器和词表。使用类似的语法,我可以执行类似SimpleCalcParser.expr的操作。但是,如果我想做一些更复杂的事情,例如解析一个,c++,antlr,antlr3,C++,Antlr,Antlr3,使用ANTLR3C++代码生成 我想在我的C++程序中使用ANTLR 3.5,但是我遇到了麻烦,如何真正地使用生成的解析器和词表。使用类似的语法,我可以执行类似SimpleCalcParser.expr的操作。但是,如果我想做一些更复杂的事情,例如解析一个不只是单个值的语言,而是一个更重要的或声明性的语言,那么C++目标似乎就相当困难了。据我所知,没有输出AST或模板的能力。如果没有这一点,我不知道除了确定输入解析是否正确之外,您还能做什么。有人知道如何用C++目标来做这个,或者使用C目标来生成

使用ANTLR3C++代码生成
我想在我的C++程序中使用ANTLR 3.5,但是我遇到了麻烦,如何真正地使用生成的解析器和词表。使用类似的语法,我可以执行类似SimpleCalcParser.expr的操作。但是,如果我想做一些更复杂的事情,例如解析一个不只是单个值的语言,而是一个更重要的或声明性的语言,那么C++目标似乎就相当困难了。据我所知,没有输出AST或模板的能力。如果没有这一点,我不知道除了确定输入解析是否正确之外,您还能做什么。有人知道如何用C++目标来做这个,或者使用C目标来生成AST,而在C++中使用它是更好的选择?

< P>我为C++目标创建了一些补丁Github。应该添加AST生成,但不是100%完成,还添加了一些测试,您可以将其用作示例。在当前的ATLR 3.5中,每个规则都必须返回一些复杂的类作为值。您必须使用规则操作手动构建树。

在选项中使用output=AST似乎仍然不受支持,当我尝试使用它进行编译时。在解析完成时,是否仍有树节点通过?将复杂类作为值返回是否有特殊语法?涉及树创建的测试实际上没有运行,所以我不确定它们会有什么帮助。请尝试从这个分支编译您自己的工具。这里还有一些测试。另请看示例s003.g