在anltr4 java语法(https://github.com/antlr/grammars-v4/blob/master/java/Java.g4)中我想知道什么时候我有完整的表达式。在这个例子中,我试图进行类似于以下的转换:
from: String foo = bar + ", " + baz + "; are true";
to: String foo = String.format("{0}, {1}; are true", bar, baz);
问题始于语法声明:
expression ('+'|'-') expression"
也是表达的孩子。鉴于上面的示例,回调将类似于以下内容:
0: exp0:bar, exp1:","
1: exp0:bar ",", exp1:baz
2: exp0:bar "," baz, exp1:"; are true"
我使用#alias btw定位该行。所以我尴尬地说的是 - 当递归表达规则以转换整个表达式时,如何使用侦听器来捕获整个表达式?或者还有另一种我尚未见过的方式吗?