final public void subprogram_body() throws ParseException {
    subprogram_specification();
    jj_consume_token(IS);
    subprogram_declarative_part();
    jj_consume_token(BEGIN);
    subprogram_statement_part();
    jj_consume_token(END);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FUNCTION:
    case PROCEDURE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PROCEDURE:
        jj_consume_token(PROCEDURE);
        break;
      case FUNCTION:
        jj_consume_token(FUNCTION);
        break;
      default:
        jj_la1[184] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[185] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case basic_identifier:
    case extended_identifier:
      identifier();
      break;
    default:
      jj_la1[186] = jj_gen;
      ;
    }
    jj_consume_token(SEMICOLON);
  }