参考此链接。它展示了如何创建一个lisp风格的s表达式从Antlr3上的任意中缀表达式。
我正在使用Antlr4,它似乎不起作用。
谁能给我建议一些实现它的方法?
2x+3x^5
到(+ (* 2 x) (* 3 (^ x 5)))
重写规则在ANTLR4中不再可用,因此您将不得不采取其他方式。一种可能的方法如下:
- 定义一个类层次结构来建模你的(新)树的实体:这将是你的替代抽象语法树的对象模型;
- 实现一个访问者(或监听器),它遍历由ANTLR4解析器创建的解析树,并生成AST的一个实例;
这里有一个这个过程的例子