final public void generate_statement() throws ParseException {
    identifier();
    jj_consume_token(151);
    generation_scheme();
    jj_consume_token(GENERATE);
    if (jj_2_21(2)) {
      label_22:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ALIAS:
        case ATTRIBUTE:
        case COMPONENT:
        case CONSTANT:
        case FOR:
        case FUNCTION:
        case IMPURE:
        case PROCEDURE:
        case PURE:
        case SIGNAL:
        case SUBTYPE:
        case TYPE:
        case USE:
          ;
          break;
        default:
          jj_la1[85] = jj_gen;
          break label_22;
        }
        block_declarative_item(null,null);
      }
      jj_consume_token(BEGIN);
    } else {
      ;
    }
    label_23:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case POSTPONED:
      case PROCESS:
      case WITH:
      case basic_identifier:
      case extended_identifier:
      case 152:
        ;
        break;
      default:
        jj_la1[86] = jj_gen;
        break label_23;
      }
      architecture_statement(null);
    }
    jj_consume_token(END);
    jj_consume_token(GENERATE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case basic_identifier:
    case extended_identifier:
      identifier();
      break;
    default:
      jj_la1[87] = jj_gen;
      ;
    }
    jj_consume_token(SEMICOLON);
  }