If statement 语法中的Antlr 3 Java if语句

If statement 语法中的Antlr 3 Java if语句,if-statement,normalization,antlr3,If Statement,Normalization,Antlr3,我试图用Java代码规范化Antlr AST 我想做的是 7–2=5转换为5+2=7 我已经创建了以下语法 start : (n1=NUMBER a=ARITME^ n2=NUMBER) e=EQUALS^ n3=NUMBER {if (String.valueOf($a)=="-") /*s.th*/ ;} ; NUMBER : '0'..'9'; ARITME : '+'|'-'; EQUALS : '='; 但是我不知道

我试图用Java代码规范化Antlr AST

我想做的是

7–2=5转换为5+2=7

我已经创建了以下语法

start   
    : (n1=NUMBER a=ARITME^ n2=NUMBER) e=EQUALS^ n3=NUMBER {if (String.valueOf($a)=="-") /*s.th*/ ;} ;

NUMBER      
    : '0'..'9';
ARITME      
    : '+'|'-';
EQUALS  
    : '=';

但是我不知道如何重新设置n1、n2和n3的值(并将“-”改为“+”)以在AST中显示

您想在解析过程中重写树吗?我不会那么做的。只需像往常一样创建AST,然后使用树遍历器检查树并创建规范化的输出,这要灵活得多。@MikeLischke thx我明白了,但在解析过程中是否可以重写它?规范化是我在这里唯一需要做的事情,所以对于这个,一个步行者会有点太多。。。