If statement 将if-else和do-while添加到我的语法中

If statement 将if-else和do-while添加到我的语法中,if-statement,while-loop,antlr,conditional-statements,If Statement,While Loop,Antlr,Conditional Statements,嗨,伙计们,我做这个小语法是为了实现一个简单的计算器,但我需要 在语法中添加IF-ELSE和DO-WHILE,但我不知道如何处理跳转,也不知道需要添加什么新函数 代码 有一个IF语句的示例。。我想这会让你走得更远。非常感谢。我会尝试将它添加到我的语法中:),我现在只需要一段时间! grammar Calculadora; @header { import java.util.HashMap; } @members { HashMap memory = new HashMap(

嗨,伙计们,我做这个小语法是为了实现一个简单的计算器,但我需要 在语法中添加IF-ELSE和DO-WHILE,但我不知道如何处理跳转,也不知道需要添加什么新函数

代码
有一个IF语句的示例。。我想这会让你走得更远。非常感谢。我会尝试将它添加到我的语法中:),我现在只需要一段时间!
grammar Calculadora;


@header {
   import java.util.HashMap;
}


@members {
   HashMap memory = new HashMap();
}


prog : stat+ 
     ;

stat : expr ';'            { System.out.println($expr.value); }
     | ID '=' expr ';'     { memory.put($ID.text, new Integer($expr.value)); 
                             System.out.println($ID.text + " = " + $expr.value); }
     ;

expr returns [int value]
    : e=multExpr { $value = $e.value; }
      ( '+' e=multExpr { $value += $e.value; }
        | 
        '-' e=multExpr { $value -= $e.value; }
      )*
    ;

multExpr returns [int value]
        : e=atom { $value = $e.value; } 
          ( '*' e=atom { $value *= $e.value; } )*
        ; 

atom returns [int value]
    : INT { $value = Integer.parseInt($INT.text); }
    | ID  { Integer v = (Integer)memory.get($ID.text);
            if ( v != null ) $value = v.intValue();
            else System.err.println("variable no definida " + $ID.text); }
    | '(' expr ')' { $value = $expr.value; }
    ;


ID : ('a'..'z'|'A'..'Z')+ 
   ;

INT : '0'..'9'+ 
    ;

NEWLINE : '\r'? '\n' 
        ;

WS : (' '|'\t')+ { skip(); } 
   ;