Antlr4:从表达式生成Lisp s表达式样式输出

时间:2015-08-07 11:08:49

标签: c# antlr4 antlr4cs

参考此link。它显示了如何创建lisp样式的s表达式 来自Antlr3上的任何中缀表达式。

我正在使用Antlr4,它似乎不起作用。

有人可以建议我实现它吗?

2x+3x^5(+ (* 2 x) (* 3 (^ x 5)))

1 个答案:

答案 0 :(得分:2)

ANTLR4中不再提供重写规则,因此您必须采取其他方式。 可能的方法如下:

  1. 定义一个类层次结构,用于对(新)树的实体进行建模:这将是替代抽象语法树的对象模型;
  2. 实现遍历ANTLR4解析器创建的解析树的访问者(或监听器),并生成AST的实例;
  3. Here有一个这个过程的例子