Home | History | Annotate | Download | only in parser
      1 /* Generated By:JavaCC: Do not edit this line. DateTimeParserTokenManager.java */
      2 /*
      3  *  Copyright 2004 the mime4j project
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  */
     17 package org.apache.james.mime4j.field.datetime.parser;
     18 import org.apache.james.mime4j.field.datetime.DateTime;
     19 import java.util.Calendar;
     20 
     21 public class DateTimeParserTokenManager implements DateTimeParserConstants
     22 {
     23         // Keeps track of how many levels of comment nesting
     24         // we've encountered.  This is only used when the 2nd
     25         // level is reached, for example ((this)), not (this).
     26         // This is because the outermost level must be treated
     27         // specially anyway, because the outermost ")" has a
     28         // different token type than inner ")" instances.
     29         static int commentNest;
     30   public  java.io.PrintStream debugStream = System.out;
     31   public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
     32 private final int jjStopStringLiteralDfa_0(int pos, long active0)
     33 {
     34    switch (pos)
     35    {
     36       case 0:
     37          if ((active0 & 0x7fe7cf7f0L) != 0L)
     38          {
     39             jjmatchedKind = 35;
     40             return -1;
     41          }
     42          return -1;
     43       case 1:
     44          if ((active0 & 0x7fe7cf7f0L) != 0L)
     45          {
     46             if (jjmatchedPos == 0)
     47             {
     48                jjmatchedKind = 35;
     49                jjmatchedPos = 0;
     50             }
     51             return -1;
     52          }
     53          return -1;
     54       default :
     55          return -1;
     56    }
     57 }
     58 private final int jjStartNfa_0(int pos, long active0)
     59 {
     60    return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
     61 }
     62 private final int jjStopAtPos(int pos, int kind)
     63 {
     64    jjmatchedKind = kind;
     65    jjmatchedPos = pos;
     66    return pos + 1;
     67 }
     68 private final int jjStartNfaWithStates_0(int pos, int kind, int state)
     69 {
     70    jjmatchedKind = kind;
     71    jjmatchedPos = pos;
     72    try { curChar = input_stream.readChar(); }
     73    catch(java.io.IOException e) { return pos + 1; }
     74    return jjMoveNfa_0(state, pos + 1);
     75 }
     76 private final int jjMoveStringLiteralDfa0_0()
     77 {
     78    switch(curChar)
     79    {
     80       case 10:
     81          return jjStopAtPos(0, 2);
     82       case 13:
     83          return jjStopAtPos(0, 1);
     84       case 40:
     85          return jjStopAtPos(0, 37);
     86       case 44:
     87          return jjStopAtPos(0, 3);
     88       case 58:
     89          return jjStopAtPos(0, 23);
     90       case 65:
     91          return jjMoveStringLiteralDfa1_0(0x44000L);
     92       case 67:
     93          return jjMoveStringLiteralDfa1_0(0x60000000L);
     94       case 68:
     95          return jjMoveStringLiteralDfa1_0(0x400000L);
     96       case 69:
     97          return jjMoveStringLiteralDfa1_0(0x18000000L);
     98       case 70:
     99          return jjMoveStringLiteralDfa1_0(0x1100L);
    100       case 71:
    101          return jjMoveStringLiteralDfa1_0(0x4000000L);
    102       case 74:
    103          return jjMoveStringLiteralDfa1_0(0x30800L);
    104       case 77:
    105          return jjMoveStringLiteralDfa1_0(0x18000a010L);
    106       case 78:
    107          return jjMoveStringLiteralDfa1_0(0x200000L);
    108       case 79:
    109          return jjMoveStringLiteralDfa1_0(0x100000L);
    110       case 80:
    111          return jjMoveStringLiteralDfa1_0(0x600000000L);
    112       case 83:
    113          return jjMoveStringLiteralDfa1_0(0x80600L);
    114       case 84:
    115          return jjMoveStringLiteralDfa1_0(0xa0L);
    116       case 85:
    117          return jjMoveStringLiteralDfa1_0(0x2000000L);
    118       case 87:
    119          return jjMoveStringLiteralDfa1_0(0x40L);
    120       default :
    121          return jjMoveNfa_0(0, 0);
    122    }
    123 }
    124 private final int jjMoveStringLiteralDfa1_0(long active0)
    125 {
    126    try { curChar = input_stream.readChar(); }
    127    catch(java.io.IOException e) {
    128       jjStopStringLiteralDfa_0(0, active0);
    129       return 1;
    130    }
    131    switch(curChar)
    132    {
    133       case 68:
    134          return jjMoveStringLiteralDfa2_0(active0, 0x550000000L);
    135       case 77:
    136          return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);
    137       case 83:
    138          return jjMoveStringLiteralDfa2_0(active0, 0x2a8000000L);
    139       case 84:
    140          if ((active0 & 0x2000000L) != 0L)
    141             return jjStopAtPos(1, 25);
    142          break;
    143       case 97:
    144          return jjMoveStringLiteralDfa2_0(active0, 0xaa00L);
    145       case 99:
    146          return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
    147       case 101:
    148          return jjMoveStringLiteralDfa2_0(active0, 0x481040L);
    149       case 104:
    150          return jjMoveStringLiteralDfa2_0(active0, 0x80L);
    151       case 111:
    152          return jjMoveStringLiteralDfa2_0(active0, 0x200010L);
    153       case 112:
    154          return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
    155       case 114:
    156          return jjMoveStringLiteralDfa2_0(active0, 0x100L);
    157       case 117:
    158          return jjMoveStringLiteralDfa2_0(active0, 0x70420L);
    159       default :
    160          break;
    161    }
    162    return jjStartNfa_0(0, active0);
    163 }
    164 private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
    165 {
    166    if (((active0 &= old0)) == 0L)
    167       return jjStartNfa_0(0, old0);
    168    try { curChar = input_stream.readChar(); }
    169    catch(java.io.IOException e) {
    170       jjStopStringLiteralDfa_0(1, active0);
    171       return 2;
    172    }
    173    switch(curChar)
    174    {
    175       case 84:
    176          if ((active0 & 0x4000000L) != 0L)
    177             return jjStopAtPos(2, 26);
    178          else if ((active0 & 0x8000000L) != 0L)
    179             return jjStopAtPos(2, 27);
    180          else if ((active0 & 0x10000000L) != 0L)
    181             return jjStopAtPos(2, 28);
    182          else if ((active0 & 0x20000000L) != 0L)
    183             return jjStopAtPos(2, 29);
    184          else if ((active0 & 0x40000000L) != 0L)
    185             return jjStopAtPos(2, 30);
    186          else if ((active0 & 0x80000000L) != 0L)
    187             return jjStopAtPos(2, 31);
    188          else if ((active0 & 0x100000000L) != 0L)
    189             return jjStopAtPos(2, 32);
    190          else if ((active0 & 0x200000000L) != 0L)
    191             return jjStopAtPos(2, 33);
    192          else if ((active0 & 0x400000000L) != 0L)
    193             return jjStopAtPos(2, 34);
    194          break;
    195       case 98:
    196          if ((active0 & 0x1000L) != 0L)
    197             return jjStopAtPos(2, 12);
    198          break;
    199       case 99:
    200          if ((active0 & 0x400000L) != 0L)
    201             return jjStopAtPos(2, 22);
    202          break;
    203       case 100:
    204          if ((active0 & 0x40L) != 0L)
    205             return jjStopAtPos(2, 6);
    206          break;
    207       case 101:
    208          if ((active0 & 0x20L) != 0L)
    209             return jjStopAtPos(2, 5);
    210          break;
    211       case 103:
    212          if ((active0 & 0x40000L) != 0L)
    213             return jjStopAtPos(2, 18);
    214          break;
    215       case 105:
    216          if ((active0 & 0x100L) != 0L)
    217             return jjStopAtPos(2, 8);
    218          break;
    219       case 108:
    220          if ((active0 & 0x20000L) != 0L)
    221             return jjStopAtPos(2, 17);
    222          break;
    223       case 110:
    224          if ((active0 & 0x10L) != 0L)
    225             return jjStopAtPos(2, 4);
    226          else if ((active0 & 0x400L) != 0L)
    227             return jjStopAtPos(2, 10);
    228          else if ((active0 & 0x800L) != 0L)
    229             return jjStopAtPos(2, 11);
    230          else if ((active0 & 0x10000L) != 0L)
    231             return jjStopAtPos(2, 16);
    232          break;
    233       case 112:
    234          if ((active0 & 0x80000L) != 0L)
    235             return jjStopAtPos(2, 19);
    236          break;
    237       case 114:
    238          if ((active0 & 0x2000L) != 0L)
    239             return jjStopAtPos(2, 13);
    240          else if ((active0 & 0x4000L) != 0L)
    241             return jjStopAtPos(2, 14);
    242          break;
    243       case 116:
    244          if ((active0 & 0x200L) != 0L)
    245             return jjStopAtPos(2, 9);
    246          else if ((active0 & 0x100000L) != 0L)
    247             return jjStopAtPos(2, 20);
    248          break;
    249       case 117:
    250          if ((active0 & 0x80L) != 0L)
    251             return jjStopAtPos(2, 7);
    252          break;
    253       case 118:
    254          if ((active0 & 0x200000L) != 0L)
    255             return jjStopAtPos(2, 21);
    256          break;
    257       case 121:
    258          if ((active0 & 0x8000L) != 0L)
    259             return jjStopAtPos(2, 15);
    260          break;
    261       default :
    262          break;
    263    }
    264    return jjStartNfa_0(1, active0);
    265 }
    266 private final void jjCheckNAdd(int state)
    267 {
    268    if (jjrounds[state] != jjround)
    269    {
    270       jjstateSet[jjnewStateCnt++] = state;
    271       jjrounds[state] = jjround;
    272    }
    273 }
    274 private final void jjAddStates(int start, int end)
    275 {
    276    do {
    277       jjstateSet[jjnewStateCnt++] = jjnextStates[start];
    278    } while (start++ != end);
    279 }
    280 private final void jjCheckNAddTwoStates(int state1, int state2)
    281 {
    282    jjCheckNAdd(state1);
    283    jjCheckNAdd(state2);
    284 }
    285 private final void jjCheckNAddStates(int start, int end)
    286 {
    287    do {
    288       jjCheckNAdd(jjnextStates[start]);
    289    } while (start++ != end);
    290 }
    291 private final void jjCheckNAddStates(int start)
    292 {
    293    jjCheckNAdd(jjnextStates[start]);
    294    jjCheckNAdd(jjnextStates[start + 1]);
    295 }
    296 private final int jjMoveNfa_0(int startState, int curPos)
    297 {
    298    int[] nextStates;
    299    int startsAt = 0;
    300    jjnewStateCnt = 4;
    301    int i = 1;
    302    jjstateSet[0] = startState;
    303    int j, kind = 0x7fffffff;
    304    for (;;)
    305    {
    306       if (++jjround == 0x7fffffff)
    307          ReInitRounds();
    308       if (curChar < 64)
    309       {
    310          long l = 1L << curChar;
    311          MatchLoop: do
    312          {
    313             switch(jjstateSet[--i])
    314             {
    315                case 0:
    316                   if ((0x3ff000000000000L & l) != 0L)
    317                   {
    318                      if (kind > 46)
    319                         kind = 46;
    320                      jjCheckNAdd(3);
    321                   }
    322                   else if ((0x100000200L & l) != 0L)
    323                   {
    324                      if (kind > 36)
    325                         kind = 36;
    326                      jjCheckNAdd(2);
    327                   }
    328                   else if ((0x280000000000L & l) != 0L)
    329                   {
    330                      if (kind > 24)
    331                         kind = 24;
    332                   }
    333                   break;
    334                case 2:
    335                   if ((0x100000200L & l) == 0L)
    336                      break;
    337                   kind = 36;
    338                   jjCheckNAdd(2);
    339                   break;
    340                case 3:
    341                   if ((0x3ff000000000000L & l) == 0L)
    342                      break;
    343                   kind = 46;
    344                   jjCheckNAdd(3);
    345                   break;
    346                default : break;
    347             }
    348          } while(i != startsAt);
    349       }
    350       else if (curChar < 128)
    351       {
    352          long l = 1L << (curChar & 077);
    353          MatchLoop: do
    354          {
    355             switch(jjstateSet[--i])
    356             {
    357                case 0:
    358                   if ((0x7fffbfe07fffbfeL & l) != 0L)
    359                      kind = 35;
    360                   break;
    361                default : break;
    362             }
    363          } while(i != startsAt);
    364       }
    365       else
    366       {
    367          int i2 = (curChar & 0xff) >> 6;
    368          long l2 = 1L << (curChar & 077);
    369          MatchLoop: do
    370          {
    371             switch(jjstateSet[--i])
    372             {
    373                default : break;
    374             }
    375          } while(i != startsAt);
    376       }
    377       if (kind != 0x7fffffff)
    378       {
    379          jjmatchedKind = kind;
    380          jjmatchedPos = curPos;
    381          kind = 0x7fffffff;
    382       }
    383       ++curPos;
    384       if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
    385          return curPos;
    386       try { curChar = input_stream.readChar(); }
    387       catch(java.io.IOException e) { return curPos; }
    388    }
    389 }
    390 private final int jjStopStringLiteralDfa_1(int pos, long active0)
    391 {
    392    switch (pos)
    393    {
    394       default :
    395          return -1;
    396    }
    397 }
    398 private final int jjStartNfa_1(int pos, long active0)
    399 {
    400    return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
    401 }
    402 private final int jjStartNfaWithStates_1(int pos, int kind, int state)
    403 {
    404    jjmatchedKind = kind;
    405    jjmatchedPos = pos;
    406    try { curChar = input_stream.readChar(); }
    407    catch(java.io.IOException e) { return pos + 1; }
    408    return jjMoveNfa_1(state, pos + 1);
    409 }
    410 private final int jjMoveStringLiteralDfa0_1()
    411 {
    412    switch(curChar)
    413    {
    414       case 40:
    415          return jjStopAtPos(0, 40);
    416       case 41:
    417          return jjStopAtPos(0, 38);
    418       default :
    419          return jjMoveNfa_1(0, 0);
    420    }
    421 }
    422 static final long[] jjbitVec0 = {
    423    0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
    424 };
    425 private final int jjMoveNfa_1(int startState, int curPos)
    426 {
    427    int[] nextStates;
    428    int startsAt = 0;
    429    jjnewStateCnt = 3;
    430    int i = 1;
    431    jjstateSet[0] = startState;
    432    int j, kind = 0x7fffffff;
    433    for (;;)
    434    {
    435       if (++jjround == 0x7fffffff)
    436          ReInitRounds();
    437       if (curChar < 64)
    438       {
    439          long l = 1L << curChar;
    440          MatchLoop: do
    441          {
    442             switch(jjstateSet[--i])
    443             {
    444                case 0:
    445                   if (kind > 41)
    446                      kind = 41;
    447                   break;
    448                case 1:
    449                   if (kind > 39)
    450                      kind = 39;
    451                   break;
    452                default : break;
    453             }
    454          } while(i != startsAt);
    455       }
    456       else if (curChar < 128)
    457       {
    458          long l = 1L << (curChar & 077);
    459          MatchLoop: do
    460          {
    461             switch(jjstateSet[--i])
    462             {
    463                case 0:
    464                   if (kind > 41)
    465                      kind = 41;
    466                   if (curChar == 92)
    467                      jjstateSet[jjnewStateCnt++] = 1;
    468                   break;
    469                case 1:
    470                   if (kind > 39)
    471                      kind = 39;
    472                   break;
    473                case 2:
    474                   if (kind > 41)
    475                      kind = 41;
    476                   break;
    477                default : break;
    478             }
    479          } while(i != startsAt);
    480       }
    481       else
    482       {
    483          int i2 = (curChar & 0xff) >> 6;
    484          long l2 = 1L << (curChar & 077);
    485          MatchLoop: do
    486          {
    487             switch(jjstateSet[--i])
    488             {
    489                case 0:
    490                   if ((jjbitVec0[i2] & l2) != 0L && kind > 41)
    491                      kind = 41;
    492                   break;
    493                case 1:
    494                   if ((jjbitVec0[i2] & l2) != 0L && kind > 39)
    495                      kind = 39;
    496                   break;
    497                default : break;
    498             }
    499          } while(i != startsAt);
    500       }
    501       if (kind != 0x7fffffff)
    502       {
    503          jjmatchedKind = kind;
    504          jjmatchedPos = curPos;
    505          kind = 0x7fffffff;
    506       }
    507       ++curPos;
    508       if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
    509          return curPos;
    510       try { curChar = input_stream.readChar(); }
    511       catch(java.io.IOException e) { return curPos; }
    512    }
    513 }
    514 private final int jjStopStringLiteralDfa_2(int pos, long active0)
    515 {
    516    switch (pos)
    517    {
    518       default :
    519          return -1;
    520    }
    521 }
    522 private final int jjStartNfa_2(int pos, long active0)
    523 {
    524    return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
    525 }
    526 private final int jjStartNfaWithStates_2(int pos, int kind, int state)
    527 {
    528    jjmatchedKind = kind;
    529    jjmatchedPos = pos;
    530    try { curChar = input_stream.readChar(); }
    531    catch(java.io.IOException e) { return pos + 1; }
    532    return jjMoveNfa_2(state, pos + 1);
    533 }
    534 private final int jjMoveStringLiteralDfa0_2()
    535 {
    536    switch(curChar)
    537    {
    538       case 40:
    539          return jjStopAtPos(0, 43);
    540       case 41:
    541          return jjStopAtPos(0, 44);
    542       default :
    543          return jjMoveNfa_2(0, 0);
    544    }
    545 }
    546 private final int jjMoveNfa_2(int startState, int curPos)
    547 {
    548    int[] nextStates;
    549    int startsAt = 0;
    550    jjnewStateCnt = 3;
    551    int i = 1;
    552    jjstateSet[0] = startState;
    553    int j, kind = 0x7fffffff;
    554    for (;;)
    555    {
    556       if (++jjround == 0x7fffffff)
    557          ReInitRounds();
    558       if (curChar < 64)
    559       {
    560          long l = 1L << curChar;
    561          MatchLoop: do
    562          {
    563             switch(jjstateSet[--i])
    564             {
    565                case 0:
    566                   if (kind > 45)
    567                      kind = 45;
    568                   break;
    569                case 1:
    570                   if (kind > 42)
    571                      kind = 42;
    572                   break;
    573                default : break;
    574             }
    575          } while(i != startsAt);
    576       }
    577       else if (curChar < 128)
    578       {
    579          long l = 1L << (curChar & 077);
    580          MatchLoop: do
    581          {
    582             switch(jjstateSet[--i])
    583             {
    584                case 0:
    585                   if (kind > 45)
    586                      kind = 45;
    587                   if (curChar == 92)
    588                      jjstateSet[jjnewStateCnt++] = 1;
    589                   break;
    590                case 1:
    591                   if (kind > 42)
    592                      kind = 42;
    593                   break;
    594                case 2:
    595                   if (kind > 45)
    596                      kind = 45;
    597                   break;
    598                default : break;
    599             }
    600          } while(i != startsAt);
    601       }
    602       else
    603       {
    604          int i2 = (curChar & 0xff) >> 6;
    605          long l2 = 1L << (curChar & 077);
    606          MatchLoop: do
    607          {
    608             switch(jjstateSet[--i])
    609             {
    610                case 0:
    611                   if ((jjbitVec0[i2] & l2) != 0L && kind > 45)
    612                      kind = 45;
    613                   break;
    614                case 1:
    615                   if ((jjbitVec0[i2] & l2) != 0L && kind > 42)
    616                      kind = 42;
    617                   break;
    618                default : break;
    619             }
    620          } while(i != startsAt);
    621       }
    622       if (kind != 0x7fffffff)
    623       {
    624          jjmatchedKind = kind;
    625          jjmatchedPos = curPos;
    626          kind = 0x7fffffff;
    627       }
    628       ++curPos;
    629       if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
    630          return curPos;
    631       try { curChar = input_stream.readChar(); }
    632       catch(java.io.IOException e) { return curPos; }
    633    }
    634 }
    635 static final int[] jjnextStates = {
    636 };
    637 public static final String[] jjstrLiteralImages = {
    638 "", "\15", "\12", "\54", "\115\157\156", "\124\165\145", "\127\145\144",
    639 "\124\150\165", "\106\162\151", "\123\141\164", "\123\165\156", "\112\141\156",
    640 "\106\145\142", "\115\141\162", "\101\160\162", "\115\141\171", "\112\165\156",
    641 "\112\165\154", "\101\165\147", "\123\145\160", "\117\143\164", "\116\157\166",
    642 "\104\145\143", "\72", null, "\125\124", "\107\115\124", "\105\123\124", "\105\104\124",
    643 "\103\123\124", "\103\104\124", "\115\123\124", "\115\104\124", "\120\123\124",
    644 "\120\104\124", null, null, null, null, null, null, null, null, null, null, null, null, null,
    645 null, };
    646 public static final String[] lexStateNames = {
    647    "DEFAULT",
    648    "INCOMMENT",
    649    "NESTED_COMMENT",
    650 };
    651 public static final int[] jjnewLexState = {
    652    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    653    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1,
    654 };
    655 static final long[] jjtoToken = {
    656    0x400fffffffffL,
    657 };
    658 static final long[] jjtoSkip = {
    659    0x5000000000L,
    660 };
    661 static final long[] jjtoSpecial = {
    662    0x1000000000L,
    663 };
    664 static final long[] jjtoMore = {
    665    0x3fa000000000L,
    666 };
    667 protected SimpleCharStream input_stream;
    668 private final int[] jjrounds = new int[4];
    669 private final int[] jjstateSet = new int[8];
    670 StringBuffer image;
    671 int jjimageLen;
    672 int lengthOfMatch;
    673 protected char curChar;
    674 public DateTimeParserTokenManager(SimpleCharStream stream){
    675    if (SimpleCharStream.staticFlag)
    676       throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
    677    input_stream = stream;
    678 }
    679 public DateTimeParserTokenManager(SimpleCharStream stream, int lexState){
    680    this(stream);
    681    SwitchTo(lexState);
    682 }
    683 public void ReInit(SimpleCharStream stream)
    684 {
    685    jjmatchedPos = jjnewStateCnt = 0;
    686    curLexState = defaultLexState;
    687    input_stream = stream;
    688    ReInitRounds();
    689 }
    690 private final void ReInitRounds()
    691 {
    692    int i;
    693    jjround = 0x80000001;
    694    for (i = 4; i-- > 0;)
    695       jjrounds[i] = 0x80000000;
    696 }
    697 public void ReInit(SimpleCharStream stream, int lexState)
    698 {
    699    ReInit(stream);
    700    SwitchTo(lexState);
    701 }
    702 public void SwitchTo(int lexState)
    703 {
    704    if (lexState >= 3 || lexState < 0)
    705       throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
    706    else
    707       curLexState = lexState;
    708 }
    709 
    710 protected Token jjFillToken()
    711 {
    712    Token t = Token.newToken(jjmatchedKind);
    713    t.kind = jjmatchedKind;
    714    String im = jjstrLiteralImages[jjmatchedKind];
    715    t.image = (im == null) ? input_stream.GetImage() : im;
    716    t.beginLine = input_stream.getBeginLine();
    717    t.beginColumn = input_stream.getBeginColumn();
    718    t.endLine = input_stream.getEndLine();
    719    t.endColumn = input_stream.getEndColumn();
    720    return t;
    721 }
    722 
    723 int curLexState = 0;
    724 int defaultLexState = 0;
    725 int jjnewStateCnt;
    726 int jjround;
    727 int jjmatchedPos;
    728 int jjmatchedKind;
    729 
    730 public Token getNextToken()
    731 {
    732   int kind;
    733   Token specialToken = null;
    734   Token matchedToken;
    735   int curPos = 0;
    736 
    737   EOFLoop :
    738   for (;;)
    739   {
    740    try
    741    {
    742       curChar = input_stream.BeginToken();
    743    }
    744    catch(java.io.IOException e)
    745    {
    746       jjmatchedKind = 0;
    747       matchedToken = jjFillToken();
    748       matchedToken.specialToken = specialToken;
    749       return matchedToken;
    750    }
    751    image = null;
    752    jjimageLen = 0;
    753 
    754    for (;;)
    755    {
    756      switch(curLexState)
    757      {
    758        case 0:
    759          jjmatchedKind = 0x7fffffff;
    760          jjmatchedPos = 0;
    761          curPos = jjMoveStringLiteralDfa0_0();
    762          break;
    763        case 1:
    764          jjmatchedKind = 0x7fffffff;
    765          jjmatchedPos = 0;
    766          curPos = jjMoveStringLiteralDfa0_1();
    767          break;
    768        case 2:
    769          jjmatchedKind = 0x7fffffff;
    770          jjmatchedPos = 0;
    771          curPos = jjMoveStringLiteralDfa0_2();
    772          break;
    773      }
    774      if (jjmatchedKind != 0x7fffffff)
    775      {
    776         if (jjmatchedPos + 1 < curPos)
    777            input_stream.backup(curPos - jjmatchedPos - 1);
    778         if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
    779         {
    780            matchedToken = jjFillToken();
    781            matchedToken.specialToken = specialToken;
    782        if (jjnewLexState[jjmatchedKind] != -1)
    783          curLexState = jjnewLexState[jjmatchedKind];
    784            return matchedToken;
    785         }
    786         else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
    787         {
    788            if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
    789            {
    790               matchedToken = jjFillToken();
    791               if (specialToken == null)
    792                  specialToken = matchedToken;
    793               else
    794               {
    795                  matchedToken.specialToken = specialToken;
    796                  specialToken = (specialToken.next = matchedToken);
    797               }
    798            }
    799          if (jjnewLexState[jjmatchedKind] != -1)
    800            curLexState = jjnewLexState[jjmatchedKind];
    801            continue EOFLoop;
    802         }
    803         MoreLexicalActions();
    804       if (jjnewLexState[jjmatchedKind] != -1)
    805         curLexState = jjnewLexState[jjmatchedKind];
    806         curPos = 0;
    807         jjmatchedKind = 0x7fffffff;
    808         try {
    809            curChar = input_stream.readChar();
    810            continue;
    811         }
    812         catch (java.io.IOException e1) { }
    813      }
    814      int error_line = input_stream.getEndLine();
    815      int error_column = input_stream.getEndColumn();
    816      String error_after = null;
    817      boolean EOFSeen = false;
    818      try { input_stream.readChar(); input_stream.backup(1); }
    819      catch (java.io.IOException e1) {
    820         EOFSeen = true;
    821         error_after = curPos <= 1 ? "" : input_stream.GetImage();
    822         if (curChar == '\n' || curChar == '\r') {
    823            error_line++;
    824            error_column = 0;
    825         }
    826         else
    827            error_column++;
    828      }
    829      if (!EOFSeen) {
    830         input_stream.backup(1);
    831         error_after = curPos <= 1 ? "" : input_stream.GetImage();
    832      }
    833      throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
    834    }
    835   }
    836 }
    837 
    838 void MoreLexicalActions()
    839 {
    840    jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
    841    switch(jjmatchedKind)
    842    {
    843       case 39 :
    844          if (image == null)
    845             image = new StringBuffer();
    846          image.append(input_stream.GetSuffix(jjimageLen));
    847          jjimageLen = 0;
    848                           image.deleteCharAt(image.length() - 2);
    849          break;
    850       case 40 :
    851          if (image == null)
    852             image = new StringBuffer();
    853          image.append(input_stream.GetSuffix(jjimageLen));
    854          jjimageLen = 0;
    855               commentNest = 1;
    856          break;
    857       case 42 :
    858          if (image == null)
    859             image = new StringBuffer();
    860          image.append(input_stream.GetSuffix(jjimageLen));
    861          jjimageLen = 0;
    862                           image.deleteCharAt(image.length() - 2);
    863          break;
    864       case 43 :
    865          if (image == null)
    866             image = new StringBuffer();
    867          image.append(input_stream.GetSuffix(jjimageLen));
    868          jjimageLen = 0;
    869               ++commentNest;
    870          break;
    871       case 44 :
    872          if (image == null)
    873             image = new StringBuffer();
    874          image.append(input_stream.GetSuffix(jjimageLen));
    875          jjimageLen = 0;
    876               --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
    877          break;
    878       default :
    879          break;
    880    }
    881 }
    882 }
    883