使用ANTLR3 C ++代码生成

时间:2015-05-28 18:49:53

标签: c++ antlr antlr3

我想在我的C ++程序中使用ANTLR 3.5,但是我在如何实际利用生成的解析器和词法分析器方面遇到了麻烦。使用类似于here的语法,我可以执行类似SimpleCalcParser.expr()的操作。但是,如果我想做一些更复杂的事情(例如,解析一种不仅仅导致单个值的语言,而是更强制性或声明性的语言),那么使用C ++目标似乎相当困难。据我所知,没有输出AST或模板的能力。没有这个,我不确定除了确定你的输入是否正确解析之外你怎么做。有没有人知道如何使用C ++目标,或者使用C目标生成AST并在C ++中使用它是一个更好的选择?

1 个答案:

答案 0 :(得分:0)

前段时间我为C ++目标创建了一些补丁(参见github)。应该添加AST生成(但不是100%完成)并且还添加了一些测试,您可以将其用作示例。使用当前的ATLR 3.5,每个规则都必须返回一些复杂的类作为值。而且您必须使用规则操作手动“构建”树。