final public void if_statement() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case basic_identifier:
    case extended_identifier:
      identifier();
      jj_consume_token(151);
      break;
    default:
      jj_la1[170] = jj_gen;
      ;
    }
    jj_consume_token(IF);
    expression();
    jj_consume_token(THEN);
    sequence_of_statements();
    label_40:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ELSIF:
        ;
        break;
      default:
        jj_la1[171] = jj_gen;
        break label_40;
      }
      jj_consume_token(ELSIF);
      expression();
      jj_consume_token(THEN);
      sequence_of_statements();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ELSE:
      jj_consume_token(ELSE);
      sequence_of_statements();
      break;
    default:
      jj_la1[172] = jj_gen;
      ;
    }
    jj_consume_token(END);
    jj_consume_token(IF);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case basic_identifier:
    case extended_identifier:
      identifier();
      break;
    default:
      jj_la1[173] = jj_gen;
      ;
    }
    jj_consume_token(SEMICOLON);
  }