final public BigDecimal Expression() throws ParseException {
   BigDecimal i ;
   BigDecimal value ;
    value = Term();
    label_2:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PLUS:
      case MINUS:
        ;
        break;
      default:
        jj_la1[1] = jj_gen;
        break label_2;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PLUS:
        jj_consume_token(PLUS);
        i = Term();
           value = value.add( i ) ;
        break;
      case MINUS:
        jj_consume_token(MINUS);
        i = Term();
           value = value.subtract( i ) ;
        break;
      default:
        jj_la1[2] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
     {if (true) return value ;}
    throw new Error("Missing return statement in function");
  }