public class ParserTokenManager
{


  protected static final String add_escapes(String str) {
    String retval = "";
    char ch;
    for (int i = 0; i < str.length(); i++) {
      ch = str.charAt(i);
      if (ch == '\b') {
        retval += "\\b";
      } else if (ch == '\t') {
        retval += "\\t";
      } else if (ch == '\n') {
        retval += "\\n";
      } else if (ch == '\f') {
        retval += "\\f";
      } else if (ch == '\r') {
        retval += "\\r";
      } else if (ch == '\"') {
        retval += "\\\"";
      } else if (ch == '\'') {
        retval += "\\\'";
      } else if (ch == '\\') {
        retval += "\\\\";
      } else {
        retval += ch;
      }
    }
    return retval;
  }

private static final String strLiteralImages[] = new String[25];
static {
{ char temp[] = { 
60, };
strLiteralImages[1] = new String(temp); }
{ char temp[] = { 
62, };
strLiteralImages[2] = new String(temp); }
{ char temp[] = { 
40, };
strLiteralImages[3] = new String(temp); }
{ char temp[] = { 
41, };
strLiteralImages[4] = new String(temp); }
{ char temp[] = { 
44, };
strLiteralImages[5] = new String(temp); }
{ char temp[] = { 
32, };
strLiteralImages[6] = new String(temp); }
{ char temp[] = { 
9, };
strLiteralImages[7] = new String(temp); }
{ char temp[] = { 
10, };
strLiteralImages[8] = new String(temp); }
{ char temp[] = { 
13, };
strLiteralImages[9] = new String(temp); }
{ char temp[] = { 
116, 114, 117, 101, };
strLiteralImages[20] = new String(temp); }
{ char temp[] = { 
102, 97, 108, 115, 101, };
strLiteralImages[21] = new String(temp); }
}
private static final int[] nextStates0 = 
{ 1, 2, };
private static final int[] nextStates1 = 
{ 7, 8, };
private static final int[] nextStates2 = 
{ 6, 7, };
private static final int[] nextStates3 = 
{ 4, 5, 8, };
private static final char[] rangeMoves0 = {128, 65535, };
private static final int[] nextStates4 = 
{ 15, 11, };
private static final int[] nextStates5 = 
{ 13, 14, 16, };
private static final int[] nextStates6 = 
{ 10, 12, };
private static final int[] nextStates7 = 
{ 19, 20, 22, };
private static final int[] nextStates8 = 
{ 19, 20, 24, 22, };
private static final int[] nextStates9 = 
{ 21, 23, 25, };
private static final int[] nextStates10 = 
{ 31, 29, };
private static final int[] nextStates11 = 
{ 30, 32, };
private static final int[] nextStates12 = 
{ 28, 29, };
private static final char[] rangeMoves1 = {192, 214, 216, 246, 248, 255, 256, 8191, 12352, 12687, 13056, 13183, 13312, 15661, 19968, 40959, 63744, 
64255, };
private static final char[] rangeMoves2 = {192, 214, 216, 246, 248, 255, 256, 8191, 1632, 1641, 1776, 1785, 2406, 2415, 2534, 2543, 2662, 
2671, 2790, 2799, 2918, 2927, 3047, 3055, 3174, 3183, 3302, 3311, 3430, 3439, 3664, 3673, 3792, 
3801, 4160, 4169, 12352, 12687, 13056, 13183, 13312, 15661, 19968, 40959, 63744, 64255, };
private static final int[] nextStates13 = 
{ 42, 8, };
private static final int[] nextStates14 = 
{ 41, 42, };
private static final int[] nextStates15 = 
{ 39, 40, 8, };
private static final int[] nextStates16 = 
{ 37, 38, };
private static final int[] nextStates17 = 
{ 46, 8, };
private static final int[] nextStates18 = 
{ 45, 46, };
private static final int[] nextStates19 = 
{ 43, 44, };
private static final int[] nextStates20 = 
{ 50, 8, };
private static final int[] nextStates21 = 
{ 49, 50, };
private static final int[] nextStates22 = 
{ 47, 48, 8, };
private static final int[] nextStates23 = 
{ 37, 38, 43, 44, 47, 48, 8, };
private static final int[] nextStates24 = 
{ 53, 54, 55, };
private static final int[] nextStates25 = 
{ 60, 58, };
private static final int[] nextStates26 = 
{ 59, 61, };
private static final int[] nextStates27 = 
{ 57, 58, };
private static final int[] nextStates28 = 
{ 52, 56, };
private static final int[] nextStates29 = 
{ 64, 65, };
private static final int[] nextStates30 = 
{ 66, 67, };
private static final int[] nextStates31 = 
{ 63, 66, 67, };
private final boolean CharInCharList(char[] charList)
{
   for (int i = 0; i < charList.length; i++)
      if (curChar == charList[i])
         return true;
      else if (curChar < charList[i])
         return false;

   return false;
}
private final boolean CharInRangeList(char[] rangeList)
{
   for (int i = 0; i < rangeList.length; i += 2)
      if (curChar >= rangeList[i] && curChar <= rangeList[i + 1])
         return true;
      else if (curChar < rangeList[i])
         return false;

   return false;
}
private final void MoveNfa(int[] oldStates, int[] newStates)
{
int i = newStateCnt, j, k;
newStateCnt = 0;
round++;
MainLoop :
for (;;)
{
if (curChar < 64)
{
long l = 1L << curChar;
do
{
switch(oldStates[--i])
{
case (52) :
if ((0x800000000000L & l) != 0L)
{
nextStates = nextStates24;
break;
}
else continue;
case (53) :
if ((0xffffffffffffdbffL & l) != 0L)
{
nextStates = nextStates24;
break;
}
else continue;
case (54) :
if ((0x400L & l) != 0L)
{
if (curKind > 10)
   curKind = 10;
continue;
}
else continue;
case (55) :
if ((0x2000L & l) != 0L)
{
if (rounds[54] != round)
{
   rounds[54] = round;
   newStates[newStateCnt++] = 54;
}
continue;
}
else continue;
case (56) :
if ((0x40000000000L & l) != 0L)
{
nextStates = nextStates27;
break;
}
else continue;
case (57) :
if ((0xfffffbffffffffffL & l) != 0L)
{
nextStates = nextStates27;
break;
}
else continue;
case (58) :
if ((0x40000000000L & l) != 0L)
{
nextStates = nextStates26;
break;
}
else continue;
case (59) :
if ((0xffff7fffffffffffL & l) != 0L)
{
nextStates = nextStates25;
break;
}
else continue;
case (60) :
if ((0xfffffbffffffffffL & l) != 0L)
{
nextStates = nextStates25;
break;
}
else continue;
case (61) :
if ((0x800000000000L & l) != 0L)
{
if (curKind > 11)
   curKind = 11;
continue;
}
else continue;
case (0) :
if ((0x3fe000000000000L & l) != 0L)
{
if (curKind > 12)
   curKind = 12;
nextStates = nextStates0;
break;
}
else continue;
case (1) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 12)
   curKind = 12;
nextStates = nextStates0;
break;
}
else continue;
case (64) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 13)
   curKind = 13;
nextStates = nextStates29;
break;
}
else continue;
case (66) :
if ((0xff000000000000L & l) != 0L)
{
if (curKind > 14)
   curKind = 14;
nextStates = nextStates30;
break;
}
else continue;
case (37) :
if ((0x3ff000000000000L & l) != 0L)
{
nextStates = nextStates16;
break;
}
else continue;
case (38) :
if ((0x400000000000L & l) != 0L)
{
if (rounds[39] != round)
{
   rounds[39] = round;
   newStates[newStateCnt++] = 39;
}
continue;
}
else continue;
case (39) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
nextStates = nextStates15;
break;
}
else continue;
case (41) :
if ((0x280000000000L & l) != 0L)
{
if (rounds[42] != round)
{
   rounds[42] = round;
   newStates[newStateCnt++] = 42;
}
continue;
}
else continue;
case (42) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
nextStates = nextStates13;
break;
}
else continue;
case (3) :
if ((0x400000000000L & l) != 0L)
{
if (rounds[4] != round)
{
   rounds[4] = round;
   newStates[newStateCnt++] = 4;
}
continue;
}
else continue;
case (4) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
nextStates = nextStates3;
break;
}
else continue;
case (6) :
if ((0x280000000000L & l) != 0L)
{
if (rounds[7] != round)
{
   rounds[7] = round;
   newStates[newStateCnt++] = 7;
}
continue;
}
else continue;
case (7) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
nextStates = nextStates1;
break;
}
else continue;
case (43) :
if ((0x3ff000000000000L & l) != 0L)
{
nextStates = nextStates19;
break;
}
else continue;
case (45) :
if ((0x280000000000L & l) != 0L)
{
if (rounds[46] != round)
{
   rounds[46] = round;
   newStates[newStateCnt++] = 46;
}
continue;
}
else continue;
case (46) :
if ((0x3ff000000000000L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
nextStates = nextStates17;
break;
}
else continue;
case (47) :
if ((0x3ff000000000000L & l) != 0L)
{
nextStates = nextStates22;
break;
}
else continue;
case (49) :
if ((0x280000000000L & l) != 0L)
{
if (rounds[50] != round)
{
   rounds[50] = round;
   newStates[newStateCnt++] = 50;
}
continue;
}
else continue;
case (50) :
if ((0x3ff000000000000L & l) != 0L)
{
nextStates = nextStates20;
break;
}
else continue;
case (9) :
if ((0x8000000000L & l) != 0L)
{
nextStates = nextStates6;
break;
}
else continue;
case (10) :
if ((0xffffff7fffffdbffL & l) != 0L)
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (13) :
if ((0x8400000000L & l) != 0L)
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (14) :
if ((0xff000000000000L & l) != 0L)
{
nextStates = nextStates4;
break;
}
else continue;
case (15) :
if ((0xff000000000000L & l) != 0L)
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (16) :
if ((0xf000000000000L & l) != 0L)
{
if (rounds[17] != round)
{
   rounds[17] = round;
   newStates[newStateCnt++] = 17;
}
continue;
}
else continue;
case (17) :
if ((0xff000000000000L & l) != 0L)
{
if (rounds[15] != round)
{
   rounds[15] = round;
   newStates[newStateCnt++] = 15;
}
continue;
}
else continue;
case (11) :
if ((0x8000000000L & l) != 0L)
{
if (curKind > 17)
   curKind = 17;
continue;
}
else continue;
case (18) :
if ((0x400000000L & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (19) :
if ((0xfffffffbffffdbffL & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (21) :
if ((0x8400000000L & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (23) :
if ((0xff000000000000L & l) != 0L)
{
nextStates = nextStates8;
break;
}
else continue;
case (24) :
if ((0xff000000000000L & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (25) :
if ((0xf000000000000L & l) != 0L)
{
if (rounds[26] != round)
{
   rounds[26] = round;
   newStates[newStateCnt++] = 26;
}
continue;
}
else continue;
case (26) :
if ((0xff000000000000L & l) != 0L)
{
if (rounds[24] != round)
{
   rounds[24] = round;
   newStates[newStateCnt++] = 24;
}
continue;
}
else continue;
case (22) :
if ((0x400000000L & l) != 0L)
{
if (curKind > 18)
   curKind = 18;
continue;
}
else continue;
case (33) :
if ((0x10000000000L & l) != 0L)
{
if (rounds[27] != round)
{
   rounds[27] = round;
   newStates[newStateCnt++] = 27;
}
continue;
}
else continue;
case (28) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates12;
break;
}
else continue;
case (30) :
if ((0xfffffdffffffffffL & l) != 0L)
{
nextStates = nextStates10;
break;
}
else continue;
case (31) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates10;
break;
}
else continue;
case (32) :
if ((0x20000000000L & l) != 0L)
{
if (curKind > 19)
   curKind = 19;
continue;
}
else continue;
case (34) :
if ((0x1000000000L & l) != 0L)
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
case (35) :
if ((0x3ff001000000000L & l) != 0L)
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
case (36) :
if ((0x3ff000000000000L & l) != 0L)
{
nextStates = nextStates23;
break;
}
else continue;
case (51) :
if ((0x800000000000L & l) != 0L)
{
nextStates = nextStates28;
break;
}
else continue;
case (62) :
if ((0x1000000000000L & l) != 0L)
{
if (curKind > 14)
   curKind = 14;
nextStates = nextStates31;
break;
}
else continue;
default : continue;
}
j = nextStates.length;
do
{
   if (rounds[k = nextStates[--j]] != round)
   {
      rounds[k] = round;
      newStates[newStateCnt++] = k;
   }
} while (j != 0);
} while(i != 0);
}
else if (curChar < 128)
{
long l = 1L << (curChar & 077);
do
{
switch(oldStates[--i])
{
case (53) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates24;
break;
}
else continue;
case (57) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates27;
break;
}
else continue;
case (59) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates25;
break;
}
else continue;
case (60) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates25;
break;
}
else continue;
case (2) :
if ((0x100000001000L & l) != 0L)
{
if (curKind > 12)
   curKind = 12;
continue;
}
else continue;
case (63) :
if ((0x100000001000000L & l) != 0L)
{
if (rounds[64] != round)
{
   rounds[64] = round;
   newStates[newStateCnt++] = 64;
}
continue;
}
else continue;
case (64) :
if ((0x7e0000007eL & l) != 0L)
{
if (curKind > 13)
   curKind = 13;
nextStates = nextStates29;
break;
}
else continue;
case (65) :
if ((0x100000001000L & l) != 0L)
{
if (curKind > 13)
   curKind = 13;
continue;
}
else continue;
case (67) :
if ((0x100000001000L & l) != 0L)
{
if (curKind > 14)
   curKind = 14;
continue;
}
else continue;
case (40) :
if ((0x2000000020L & l) != 0L)
{
nextStates = nextStates14;
break;
}
else continue;
case (5) :
if ((0x2000000020L & l) != 0L)
{
nextStates = nextStates2;
break;
}
else continue;
case (8) :
if ((0x5000000050L & l) != 0L)
{
if (curKind > 15)
   curKind = 15;
continue;
}
else continue;
case (44) :
if ((0x2000000020L & l) != 0L)
{
nextStates = nextStates18;
break;
}
else continue;
case (48) :
if ((0x2000000020L & l) != 0L)
{
nextStates = nextStates21;
break;
}
else continue;
case (10) :
if ((0xffffffffefffffffL & l) != 0L)
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (12) :
if ((0x10000000L & l) != 0L)
{
nextStates = nextStates5;
break;
}
else continue;
case (13) :
if ((0x14404410000000L & l) != 0L)
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (19) :
if ((0xffffffffefffffffL & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (20) :
if ((0x10000000L & l) != 0L)
{
nextStates = nextStates9;
break;
}
else continue;
case (21) :
if ((0x14404410000000L & l) != 0L)
{
nextStates = nextStates7;
break;
}
else continue;
case (27) :
if ((0x1L & l) != 0L)
{
nextStates = nextStates12;
break;
}
else continue;
case (28) :
if ((0xfffffffffffffffeL & l) != 0L)
{
nextStates = nextStates12;
break;
}
else continue;
case (30) :
if ((0xffffffffffffffffL & l) != 0L)
{
nextStates = nextStates10;
break;
}
else continue;
case (31) :
if ((0xfffffffffffffffeL & l) != 0L)
{
nextStates = nextStates10;
break;
}
else continue;
case (34) :
if ((0x7fffffe87fffffeL & l) != 0L)
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
case (35) :
if ((0x7fffffe87fffffeL & l) != 0L)
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
case (29) :
if ((0x1L & l) != 0L)
{
nextStates = nextStates11;
break;
}
else continue;
default : continue;
}
j = nextStates.length;
do
{
   if (rounds[k = nextStates[--j]] != round)
   {
      rounds[k] = round;
      newStates[newStateCnt++] = k;
   }
} while (j != 0);
} while(i != 0);
}
else
{
do
{
switch(oldStates[--i])
{
case (53) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates24;
break;
}
else continue;
case (57) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates27;
break;
}
else continue;
case (59) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates25;
break;
}
else continue;
case (60) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates25;
break;
}
else continue;
case (10) :
if (CharInRangeList(rangeMoves0))
{
if (rounds[11] != round)
{
   rounds[11] = round;
   newStates[newStateCnt++] = 11;
}
continue;
}
else continue;
case (19) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates7;
break;
}
else continue;
case (28) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates12;
break;
}
else continue;
case (30) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates10;
break;
}
else continue;
case (31) :
if (CharInRangeList(rangeMoves0))
{
nextStates = nextStates10;
break;
}
else continue;
case (34) :
if (CharInRangeList(rangeMoves1))
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
case (35) :
if (CharInRangeList(rangeMoves2))
{
if (curKind > 22)
   curKind = 22;
if (rounds[35] != round)
{
   rounds[35] = round;
   newStates[newStateCnt++] = 35;
}
continue;
}
else continue;
default : continue;
}
j = nextStates.length;
do
{
   if (rounds[k = nextStates[--j]] != round)
   {
      rounds[k] = round;
      newStates[newStateCnt++] = k;
   }
} while (j != 0);
} while(i != 0);
}
return;
}
}
static private final int[] allInitStates = 
{ 0, 3, 9, 18, 33, 34, 36, 51, 62, };
static final int[] initState_34 = 
{ 18, };
static final int[] initState_36 = 
{ 34, };
static final int[] initState_39 = 
{ 9, };
static final int[] initState_40 = 
{ 33, };
static final int[] initState_46 = 
{ 3, };
static final int[] initState_47 = 
{ 51, };
static final int[] initState_48 = 
{ 36, 62, };
static final int[] initState_49 = 
{ 0, 36, };
static final int[][] initStates = {
allInitStates, null, null, null, null, null, 
null, null, null, null, null, 
null, null, null, null, null, 
null, null, null, null, null, 
null, null, null, null, null, 
null, null, null, null, null, 
null, null, null, initState_34, null, 
initState_36, null, null, initState_39, initState_40, 
null, null, null, null, null, 
initState_46, initState_47, initState_48, initState_49, initState_49, 
initState_49, initState_49, initState_49, initState_49, initState_49, 
initState_49, initState_49, null, null, null, 
null, null, null, null, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
null, null, null, null, initState_36, 
null, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, initState_36, initState_36, initState_36, 
initState_36, initState_36, null, null, null, 
null, null, };

static final int[] startStates_0 = { 27, };
static final int[] startStates_1 = { 35, };
void StartNfa(int pos, long active0)
{
switch (pos)
{
case (0) : 
   curPos = 1;
   break; 
case (1) :
   curPos = 2;
if ((active0 & 0x8L) != 0L)
{
startStateSet = startStates_0;
break;
}
else if ((active0 & 0x300000L) != 0L)
{
   matchedToken.kind = 22;
startStateSet = startStates_1;
break;
}
return;
case (2) :
   curPos = 3;
if ((active0 & 0x300000L) != 0L)
{
if (matchedPos != 1)
{
   matchedToken.kind = 22;
   matchedPos = 1;
}
startStateSet = startStates_1;
break;
}
return;
case (3) :
   curPos = 4;
if ((active0 & 0x300000L) != 0L)
{
if (matchedPos != 2)
{
   matchedToken.kind = 22;
   matchedPos = 2;
}
startStateSet = startStates_1;
break;
}
return;
case (4) :
   curPos = 5;
if ((active0 & 0x100000L) != 0L)
{
startStateSet = startStates_1;
break;
}
else if ((active0 & 0x200000L) != 0L)
{
if (matchedPos != 3)
{
   matchedToken.kind = 22;
   matchedPos = 3;
}
startStateSet = startStates_1;
break;
}
return;
default : 
   curPos = pos + 1;
   return;
}
   newStateCnt = startStateSet.length;
   MoveNfa(startStateSet, stateSet2);
   if (curKind != 2147483647)
   {
      if (matchedPos != pos)
      {
         matchedToken.kind = curKind;
         matchedPos = pos;
      }
      else if (curKind < matchedToken.kind)
         matchedToken.kind = curKind;
      curKind = 2147483647;
   }
return;
}
long oldActive0 = 0L, newActive0 = 0L;
private final void MoveStringLiteralDfa() throws java.io.IOException
{
MainLoop:
for (;;)
{
switch(curChar)
{
case (62) : 
{
   matchedToken.kind = 2;
   curPos = 1;
   return;
}
case (60) : 
{
   matchedToken.kind = 1;
   curPos = 1;
   return;
}
case (44) : 
{
   matchedToken.kind = 5;
   curPos = 1;
   return;
}
case (41) : 
{
   matchedToken.kind = 4;
   curPos = 1;
   return;
}
case (40) : 
{
   matchedToken.kind = 3;
   curPos = 1;
   startStateSet = startStates_0;
   break MainLoop;
}
case (32) : 
{
   matchedToken.kind = 6;
   curPos = 1;
   return;
}
case (116) : 
{
   matchedToken.kind = 2147483647;
   oldActive0 = 0x100000L;
   break;
}
case (13) : 
{
   matchedToken.kind = 9;
   curPos = 1;
   return;
}
case (10) : 
{
   matchedToken.kind = 8;
   curPos = 1;
   return;
}
case (9) : 
{
   matchedToken.kind = 7;
   curPos = 1;
   return;
}
case (102) : 
{
   matchedToken.kind = 2147483647;
   oldActive0 = 0x200000L;
   break;
}
default : 
{
   matchedToken.kind = 2147483647;
   if (curChar < 128)
   {
      if ((startStateSet = initStates[curChar]) == null)
      {
         curPos = 1;
         return;
      }
   }
   else if (curChar < 256)
   {
      if (startsNfa[curChar])
         startStateSet = allInitStates;
      else
      {
         curPos = 1;
         return;
      }
   }
   else 
      startStateSet = allInitStates;
   StartNfa(0, 0L);
   return;
}
}
switch(curChar = input_stream.readChar())
{
case (97) : 
{
   if (((newActive0 = oldActive0 & 0x200000L)) == 0L)
   {
      StartNfa(1, oldActive0); 
      return;
   }
   break;
}
case (114) : 
{
   if (((newActive0 = oldActive0 & 0x100000L)) == 0L)
   {
      StartNfa(1, oldActive0); 
      return;
   }
   break;
}
default : 
{
   StartNfa(1, oldActive0); 
   return;
}
}
switch(curChar = input_stream.readChar())
{
case (117) : 
{
   if (((oldActive0 = newActive0 & 0x100000L)) == 0L)
   {
      StartNfa(2, newActive0); 
      return;
   }
   break;
}
case (108) : 
{
   if (((oldActive0 = newActive0 & 0x200000L)) == 0L)
   {
      StartNfa(2, newActive0); 
      return;
   }
   break;
}
default : 
{
   StartNfa(2, newActive0); 
   return;
}
}
switch(curChar = input_stream.readChar())
{
case (115) : 
{
   if (((newActive0 = oldActive0 & 0x200000L)) == 0L)
   {
      StartNfa(3, oldActive0); 
      return;
   }
   break;
}
case (101) : 
{
   if ((oldActive0 & 0x100000L) != 0L)
   {
   matchedToken.kind = 20;
   matchedPos = 3;
   curPos = 4;
   startStateSet = startStates_1;
   break MainLoop;
   }
   StartNfa(3, oldActive0); 
   return;
}
default : 
{
   StartNfa(3, oldActive0); 
   return;
}
}
switch(curChar = input_stream.readChar())
{
case (101) : 
{
   if ((newActive0 & 0x200000L) != 0L)
   {
   matchedToken.kind = 21;
   matchedPos = 4;
   curPos = 5;
   startStateSet = startStates_1;
   break MainLoop;
   }
   StartNfa(4, newActive0); 
   return;
}
default : 
{
   StartNfa(4, newActive0); 
   return;
}
}
}
   curChar = input_stream.readChar();
   newStateCnt = startStateSet.length;
   MoveNfa(startStateSet, stateSet2);
   if (curKind != 2147483647)
   {
      matchedToken.kind = curKind;
      matchedPos = curPos++;
      curKind = 2147483647;
   }
   else
      curPos++;
}
static final long[] toIgnoreInBNF = 
{
0x7ef03eL,
};
static final long[] strKinds = 
{
0x3003feL,
};
static final boolean[] startsNfa = 
{
true, false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, true, false, true, false, false, true, true, 
false, false, false, false, false, true, true, true, true, true, 
true, true, true, true, true, true, true, false, false, false, 
false, false, false, false, true, true, true, true, true, true, 
true, true, true, true, true, true, true, true, true, true, 
true, true, true, true, true, true, true, true, true, true, 
false, false, false, false, true, false, true, true, true, true, 
true, true, true, true, true, true, true, true, true, true, 
true, true, true, true, true, true, true, true, true, true, 
true, true, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, false, false, false, false, false, 
false, false, false, false, false, };
private ASCII_UCodeESC_CharStream input_stream;
private int[] rounds = new int[68];
private int[] stateSet1 = new int[68];
private int[] stateSet2 = new int[68];
private int[] nextStates;
int curPos;
protected char curChar;
int curKind = 2147483647;
ParserTokenManager me;
public ParserTokenManager(ASCII_UCodeESC_CharStream stream)
{
input_stream = stream;
me = this;
}
public void ReInit(ASCII_UCodeESC_CharStream stream)
{
int i;
curKind = 2147483647;
curPos = matchedPos = newStateCnt = round = 0;
startStateSet = null;
curChar = (char)0;
input_stream = stream;
for (i = 68; i-- > 0;)
   rounds[i] = 0;
}



int newStateCnt;
int round;
int[] tmpStates = stateSet1;
int matchedPos;
Token matchedToken;
private int[] startStateSet;

public final Token getNextToken() throws ParseError
{
   matchedToken = new Token();

   try
   {
    for (;;)
    {
      matchedPos = curPos = 0;
      curChar = input_stream.BeginToken();
      matchedToken.beginLine = input_stream.getLine();
      matchedToken.beginColumn = input_stream.getColumn();

      MoveStringLiteralDfa();
      while (newStateCnt != 0)
      {
         curChar = input_stream.readChar();

         MoveNfa(stateSet1 = stateSet2, stateSet2 = tmpStates);

         tmpStates = stateSet1;

         if (curKind != 2147483647)
         {
            matchedToken.kind = curKind;
            curKind = 2147483647;
            matchedPos = curPos++;
         }
         else
            curPos++;
      };

      if (matchedToken.kind != 2147483647)
      {
         if (matchedPos + 1 < curPos)
            input_stream.backup(curPos - matchedPos - 1);

         if ((toIgnoreInBNF[matchedToken.kind >> 6] &
             (1L << (matchedToken.kind & 077))) != 0)
         {
            if ((strKinds[matchedToken.kind >> 6] & 
                    (1L << (matchedToken.kind & 077))) != 0)
               matchedToken.image = strLiteralImages[matchedToken.kind];
            else matchedToken.image = input_stream.GetImage();

            matchedToken.endLine = input_stream.getLine();
            matchedToken.endColumn = input_stream.getColumn();

            return matchedToken;
         }
         matchedToken.kind = 2147483647;
      }
      else
      {
         me.error_line = input_stream.getLine();
         me.error_column = input_stream.getColumn();
         input_stream.backup(1);
         me.error_after = curPos <= 1 ? "" : add_escapes(input_stream.GetImage());
         me.LexicalError();

          throw new ParseError();
      }
    }
   }
   catch (java.io.IOException e)
   {
      if (matchedToken.kind != 2147483647 && matchedToken.kind != 0)
      {
         if (matchedPos + 1 < curPos)
            input_stream.backup(curPos - matchedPos - 1);

         matchedToken.endLine = input_stream.getLine();
         matchedToken.endColumn = input_stream.getColumn();

         if ((toIgnoreInBNF[matchedToken.kind >> 6] &
             (1L << (matchedToken.kind & 077))) != 0)
         {
            if ((strKinds[matchedToken.kind >> 6] & 
                    (1L << (matchedToken.kind & 077))) != 0)
               matchedToken.image = strLiteralImages[matchedToken.kind];
            else matchedToken.image = input_stream.GetImage();

            return matchedToken;
         }
         else
         {
            matchedToken.kind = 2147483647;
            return getNextToken();
         }
      }
      else if (curPos != 0) // Something has been scanned
      {
         me.error_line = input_stream.getLine();
         me.error_column = input_stream.getColumn();
         input_stream.backup(1);
         me.error_after = curPos <= 1 ? "" : add_escapes(input_stream.GetImage());
         me.LexicalError();

         throw new ParseError();
      }
      else
      {
         matchedToken.kind = 0;
         matchedToken.image = "";
         input_stream.Done();
         return matchedToken;
      }
   }
}

protected int error_line, error_column;
protected String error_after;
protected void LexicalError()
{
   System.err.println("Lexical error at line " +
        error_line + ", column " +
        error_column + ".  Encountered: \"" +
        add_escapes(String.valueOf(curChar)) + "\"");
}
}

