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

Antlr4: Generating a Lisp s-expression style output from an expression

参考这个link。它展示了如何创建一个 lisp 风格的 s-expression 来自 Antlr3 上的任何中缀表达式。

我正在使用 Antlr4,但它似乎无法正常工作。

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

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

重写规则在 ANTLR4 中不再可用,因此您将不得不采取其他方式。 一种可能的方法如下:

  1. 定义一个 class 层次结构来模拟您的(新)树的实体:这将是您的替代抽象语法树的对象模型;
  2. 实现一个遍历由 ANTLR4 解析器创建的解析树并生成您的 AST 实例的访问者(或侦听器);

Here有一个这个过程的例子