private int readMonthAbbreviation() throws IOException {
    switch (read(true)) {
      case 'A':
        switch (read(true)) {
          case 'p':
            skipWord();
            return Calendar.APRIL;

          case 'u':
            skipWord();
            return Calendar.AUGUST;

          default:
            return -1;
        }

      case 'D':
        skipWord();
        return Calendar.DECEMBER;

      case 'F':
        skipWord();
        return Calendar.FEBRUARY;

      case 'J':
        read(true); // Second letter is ambiguous.
        read(true); // Third letter is also ambiguous.

        switch (read(true)) {
          case 'e':
            skipWord();
            return Calendar.JUNE;

          case 'u':
            skipWord();
            return Calendar.JANUARY;

          case 'y':
            skipWord();
            return Calendar.JULY;

          default:
            return -1;
        }

      case 'M':
        read(true); // Second letter is ambiguous.

        switch (read(true)) {
          case 'r':
            skipWord();
            return Calendar.MARCH;

          case 'y':
            skipWord();
            return Calendar.MAY;

          default:
            return -1;
        }

      case 'N':
        skipWord();
        return Calendar.NOVEMBER;

      case 'O':
        skipWord();
        return Calendar.OCTOBER;

      case 'S':
        skipWord();
        return Calendar.SEPTEMBER;

      default:
        return -1;
    }
  }
Read a month value as an English abbreviation.
see RFC 3164, Sec. 4.1.2.
ql/src/java/org/apache/hadoop/hive/ql/log/syslog/SyslogParser.java