final public Exp AddOp() throws ParseException {Exp leftExp = null;
    Exp rightExp = null;
    Token op;
    leftExp = MulOp();
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case SYM_PLUS:
      case SYM_MINUS:{
        ;
        break;
        }
      default:
        jj_la1[24] = jj_gen;
        break label_11;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case SYM_PLUS:{
        jj_consume_token(SYM_PLUS);
        break;
        }
      case SYM_MINUS:{
        jj_consume_token(SYM_MINUS);
        break;
        }
      default:
        jj_la1[25] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
op = token;
      rightExp = MulOp();
leftExp = new BinaryExp(leftExp, op.image, rightExp);
    }
{if ("" != null) return leftExp;}
    throw new Error("Missing return statement in function");
  }