final public void discreteRange() throws ParseException {
    if (jj_2_26(2147483647)) {
      range();
    } else if (jj_2_27(2147483647)) {
      subtype_indication();
    } else if (jj_2_28(2147483647)) {
      subtype_indication();
    } else if (jj_2_29(2147483647)) {
      subtype_indication();
    } else if (jj_2_30(2147483647)) {
      subtype_indication();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ABS:
      case NOT:
      case NULL:
      case based_literal:
      case basic_identifier:
      case bit_string_literal:
      case character_literal:
      case decimal_literal:
      case extended_identifier:
      case string_literal:
      case ADD:
      case SUB:
      case 152:
        range();
        break;
      default:
        jj_la1[110] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }