/* Generated By:JavaCC: Do not edit this line. PHPParserTokenManager.java */
package gatchan.phpparser.parser;
//{{{ Imports
import java.util.ArrayList;
import java.io.*;
import java.util.List;
import java.util.Collection;
import java.util.Stack;
import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage;
import net.sourceforge.phpdt.internal.compiler.ast.*;
import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;

/** Token Manager. */
public class PHPParserTokenManager implements PHPParserConstants
{
  // CommonTokenAction: use the begins/ends fields added to the Jack
  // CharStream class to set corresponding fields in each Token (which was
  // also extended with new fields). By default Jack doesn't supply absolute
  // offsets, just line/column offsets
  void CommonTokenAction(Token t)
  {
    t.sourceStart = input_stream.getBeginOffset();
    t.sourceEnd = input_stream.getEndOffset();
    
  }
  
  /** Debug output. */
  public  java.io.PrintStream debugStream = System.out;
  /** Set debug output. */
  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
  private int jjStopAtPos(int pos, int kind)
  {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    return pos + 1;
  }
  private int jjMoveStringLiteralDfa0_6()
  {
    switch(curChar)
    {
    case 42:
      return jjMoveStringLiteralDfa1_6(0x1000000L);
      default :
      return 1;
    }
  }
  private int jjMoveStringLiteralDfa1_6(long active0)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 1;
    }
    switch(curChar)
    {
    case 47:
      if ((active0 & 0x1000000L) != 0L)
        return jjStopAtPos(1, 24);
      break;
      default :
      return 2;
    }
    return 2;
  }
  private int jjMoveStringLiteralDfa0_8()
  {
    return jjMoveNfa_8(0, 0);
  }
  static final long[] jjbitVec0 = {
    0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
  };
  static final long[] jjbitVec1 = {
    0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
  };
  private int jjMoveNfa_8(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 7;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 1:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 4:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 6:
            if (kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(1, 2);
            }
            else if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 6;
            break;
          case 1:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 2:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 3;
            break;
          case 3:
          case 4:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 5:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 6;
            break;
          case 6:
            if (kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
          case 1:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 3:
          case 4:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 6:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2) && kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  private int jjMoveStringLiteralDfa0_0()
  {
    switch(curChar)
    {
    case 60:
      return jjMoveStringLiteralDfa1_0(0x4eL);
      default :
      return 1;
    }
  }
  private int jjMoveStringLiteralDfa1_0(long active0)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 1;
    }
    switch(curChar)
    {
    case 63:
      if ((active0 & 0x2L) != 0L)
      {
        jjmatchedKind = 1;
        jjmatchedPos = 1;
      }
      return jjMoveStringLiteralDfa2_0(active0, 0x4cL);
      default :
      return 2;
    }
  }
  private int jjMoveStringLiteralDfa2_0(long old0, long active0)
  {
    if (((active0 &= old0)) == 0L)
      return 2;
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 2;
    }
    switch(curChar)
    {
    case 61:
      if ((active0 & 0x8L) != 0L)
        return jjStopAtPos(2, 3);
      break;
    case 80:
    case 112:
      return jjMoveStringLiteralDfa3_0(active0, 0x4L);
    case 88:
    case 120:
      return jjMoveStringLiteralDfa3_0(active0, 0x40L);
      default :
      return 3;
    }
    return 3;
  }
  private int jjMoveStringLiteralDfa3_0(long old0, long active0)
  {
    if (((active0 &= old0)) == 0L)
      return 3;
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 3;
    }
    switch(curChar)
    {
    case 72:
    case 104:
      return jjMoveStringLiteralDfa4_0(active0, 0x4L);
    case 77:
    case 109:
      return jjMoveStringLiteralDfa4_0(active0, 0x40L);
      default :
      return 4;
    }
  }
  private int jjMoveStringLiteralDfa4_0(long old0, long active0)
  {
    if (((active0 &= old0)) == 0L)
      return 4;
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 4;
    }
    switch(curChar)
    {
    case 76:
    case 108:
      if ((active0 & 0x40L) != 0L)
        return jjStopAtPos(4, 6);
      break;
    case 80:
    case 112:
      if ((active0 & 0x4L) != 0L)
        return jjStopAtPos(4, 2);
      break;
      default :
      return 5;
    }
    return 5;
  }
  private int jjMoveStringLiteralDfa0_5()
  {
    switch(curChar)
    {
    case 42:
      return jjMoveStringLiteralDfa1_5(0x800000L);
      default :
      return 1;
    }
  }
  private int jjMoveStringLiteralDfa1_5(long active0)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      return 1;
    }
    switch(curChar)
    {
    case 47:
      if ((active0 & 0x800000L) != 0L)
        return jjStopAtPos(1, 23);
      break;
      default :
      return 2;
    }
    return 2;
  }
  private final int jjStopStringLiteralDfa_3(int pos, long active0, long active1, long active2)
  {
    switch (pos)
    {
    case 0:
      if ((active1 & 0x70000000000000L) != 0L)
      {
        jjmatchedKind = 134;
        return 5;
      }
      return -1;
    case 1:
      if ((active1 & 0x60000000000000L) != 0L)
      {
        if (jjmatchedPos != 1)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 1;
        }
        return 5;
      }
      if ((active1 & 0x10000000000000L) != 0L)
        return 5;
      return -1;
      default :
      return -1;
    }
  }
  private final int jjStartNfa_3(int pos, long active0, long active1, long active2)
  {
    return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0, active1, active2), pos + 1);
  }
  private int jjMoveStringLiteralDfa0_3()
  {
    switch(curChar)
    {
    case 9:
      return jjStopAtPos(0, 13);
    case 10:
      return jjStopAtPos(0, 14);
    case 12:
      return jjStopAtPos(0, 16);
    case 13:
      return jjStopAtPos(0, 15);
    case 32:
      return jjStopAtPos(0, 12);
    case 33:
      jjmatchedKind = 96;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x28000000L);
    case 36:
      return jjStopAtPos(0, 133);
    case 37:
      jjmatchedKind = 112;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x10000000000L);
    case 38:
      jjmatchedKind = 109;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x2000000000L, 0x1000000000L);
    case 40:
      return jjStopAtPos(0, 141);
    case 41:
      return jjStopAtPos(0, 142);
    case 42:
      jjmatchedKind = 106;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x400000000L);
    case 43:
      jjmatchedKind = 104;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x4000000000L, 0x100000000L);
    case 44:
      return jjStopAtPos(0, 147);
    case 45:
      jjmatchedKind = 105;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x8000000800L, 0x200000000L);
    case 46:
      jjmatchedKind = 148;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x8000000000L);
    case 47:
      jjmatchedKind = 107;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x800000000L);
    case 58:
      jjmatchedKind = 99;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x1000L, 0x0L);
    case 59:
      return jjStopAtPos(0, 146);
    case 60:
      jjmatchedKind = 151;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x2000000000000L, 0x40012000000L);
    case 61:
      jjmatchedKind = 159;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x2000L, 0x41000000L);
    case 62:
      jjmatchedKind = 150;
      return jjMoveStringLiteralDfa1_3(0x0L, 0xc000000000000L, 0x80004000000L);
    case 63:
      jjmatchedKind = 98;
      return jjMoveStringLiteralDfa1_3(0x10L, 0x0L, 0x0L);
    case 64:
      return jjStopAtPos(0, 95);
    case 91:
      return jjStopAtPos(0, 144);
    case 92:
      return jjStopAtPos(0, 108);
    case 93:
      return jjStopAtPos(0, 145);
    case 94:
      jjmatchedKind = 111;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x4000000000L);
    case 65:
    case 97:
      return jjMoveStringLiteralDfa1_3(0x0L, 0x40000000000000L, 0x0L);
    case 79:
    case 111:
      return jjMoveStringLiteralDfa1_3(0x0L, 0x10000000000000L, 0x0L);
    case 88:
    case 120:
      return jjMoveStringLiteralDfa1_3(0x0L, 0x20000000000000L, 0x0L);
    case 123:
      return jjStopAtPos(0, 149);
    case 124:
      jjmatchedKind = 110;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x1000000000L, 0x2000000000L);
    case 125:
      return jjStopAtPos(0, 143);
    case 126:
      jjmatchedKind = 97;
      return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x20000000000L);
      default :
      return jjMoveNfa_3(0, 0);
    }
  }
  private int jjMoveStringLiteralDfa1_3(long active0, long active1, long active2)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_3(0, active0, active1, active2);
      return 1;
    }
    switch(curChar)
    {
    case 38:
      if ((active1 & 0x2000000000L) != 0L)
        return jjStopAtPos(1, 101);
      break;
    case 43:
      if ((active1 & 0x4000000000L) != 0L)
        return jjStopAtPos(1, 102);
      break;
    case 45:
      if ((active1 & 0x8000000000L) != 0L)
        return jjStopAtPos(1, 103);
      break;
    case 58:
      if ((active1 & 0x1000L) != 0L)
        return jjStopAtPos(1, 76);
      break;
    case 60:
      if ((active1 & 0x2000000000000L) != 0L)
      {
        jjmatchedKind = 113;
        jjmatchedPos = 1;
      }
      return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0x40000000000L);
    case 61:
      if ((active2 & 0x1000000L) != 0L)
      {
        jjmatchedKind = 152;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x2000000L) != 0L)
        return jjStopAtPos(1, 153);
      else if ((active2 & 0x4000000L) != 0L)
        return jjStopAtPos(1, 154);
      else if ((active2 & 0x8000000L) != 0L)
      {
        jjmatchedKind = 155;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x100000000L) != 0L)
        return jjStopAtPos(1, 160);
      else if ((active2 & 0x200000000L) != 0L)
        return jjStopAtPos(1, 161);
      else if ((active2 & 0x400000000L) != 0L)
        return jjStopAtPos(1, 162);
      else if ((active2 & 0x800000000L) != 0L)
        return jjStopAtPos(1, 163);
      else if ((active2 & 0x1000000000L) != 0L)
        return jjStopAtPos(1, 164);
      else if ((active2 & 0x2000000000L) != 0L)
        return jjStopAtPos(1, 165);
      else if ((active2 & 0x4000000000L) != 0L)
        return jjStopAtPos(1, 166);
      else if ((active2 & 0x8000000000L) != 0L)
        return jjStopAtPos(1, 167);
      else if ((active2 & 0x10000000000L) != 0L)
        return jjStopAtPos(1, 168);
      else if ((active2 & 0x20000000000L) != 0L)
        return jjStopAtPos(1, 169);
      return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0x60000000L);
    case 62:
      if ((active0 & 0x10L) != 0L)
        return jjStopAtPos(1, 4);
      else if ((active1 & 0x800L) != 0L)
        return jjStopAtPos(1, 75);
      else if ((active1 & 0x2000L) != 0L)
        return jjStopAtPos(1, 77);
      else if ((active1 & 0x4000000000000L) != 0L)
      {
        jjmatchedKind = 114;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x10000000L) != 0L)
        return jjStopAtPos(1, 156);
      return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0x8000000000000L, active2, 0x80000000000L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0x40000000000000L, active2, 0L);
    case 79:
    case 111:
      return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0x20000000000000L, active2, 0L);
    case 82:
    case 114:
      if ((active1 & 0x10000000000000L) != 0L)
        return jjStartNfaWithStates_3(1, 116, 5);
      break;
    case 124:
      if ((active1 & 0x1000000000L) != 0L)
        return jjStopAtPos(1, 100);
      break;
      default :
      break;
    }
    return jjStartNfa_3(0, active0, active1, active2);
  }
  private int jjMoveStringLiteralDfa2_3(long old0, long active0, long old1, long active1, long old2, long active2)
  {
    if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
      return jjStartNfa_3(0, old0, old1, old2);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_3(1, 0L, active1, active2);
      return 2;
    }
    switch(curChar)
    {
    case 61:
      if ((active2 & 0x20000000L) != 0L)
        return jjStopAtPos(2, 157);
      else if ((active2 & 0x40000000L) != 0L)
        return jjStopAtPos(2, 158);
      else if ((active2 & 0x40000000000L) != 0L)
        return jjStopAtPos(2, 170);
      else if ((active2 & 0x80000000000L) != 0L)
        return jjStopAtPos(2, 171);
      break;
    case 62:
      if ((active1 & 0x8000000000000L) != 0L)
        return jjStopAtPos(2, 115);
      break;
    case 68:
    case 100:
      if ((active1 & 0x40000000000000L) != 0L)
        return jjStartNfaWithStates_3(2, 118, 5);
      break;
    case 82:
    case 114:
      if ((active1 & 0x20000000000000L) != 0L)
        return jjStartNfaWithStates_3(2, 117, 5);
      break;
      default :
      break;
    }
    return jjStartNfa_3(1, 0L, active1, active2);
  }
  private int jjStartNfaWithStates_3(int pos, int kind, int state)
  {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) { return pos + 1; }
    return jjMoveNfa_3(state, pos + 1);
  }
  private int jjMoveNfa_3(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 5;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 5:
          case 1:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 4:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 5:
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(1, 2);
            }
            else if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 3;
            break;
          case 0:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 1:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 2:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 3;
            break;
          case 3:
          case 4:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 5:
          case 1:
          case 0:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 3:
          case 4:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 5 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  private final int jjStopStringLiteralDfa_7(int pos, long active0, long active1, long active2)
  {
    switch (pos)
    {
      default :
      return -1;
    }
  }
  private final int jjStartNfa_7(int pos, long active0, long active1, long active2)
  {
    return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0, active1, active2), pos + 1);
  }
  private int jjMoveStringLiteralDfa0_7()
  {
    switch(curChar)
    {
    case 34:
      return jjStopAtPos(0, 131);
    case 36:
      jjmatchedKind = 130;
      return jjMoveStringLiteralDfa1_7(0x2L);
      default :
      return jjMoveNfa_7(0, 0);
    }
  }
  private int jjMoveStringLiteralDfa1_7(long active2)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_7(0, 0L, 0L, active2);
      return 1;
    }
    switch(curChar)
    {
    case 123:
      if ((active2 & 0x2L) != 0L)
        return jjStopAtPos(1, 129);
      break;
      default :
      break;
    }
    return jjStartNfa_7(0, 0L, 0L, active2);
  }
  private int jjMoveNfa_7(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 7;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 1:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 4:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 6:
            if (kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(1, 2);
            }
            else if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 6;
            break;
          case 1:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 2:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 3;
            break;
          case 3:
          case 4:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 5:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 6;
            break;
          case 6:
            if (kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
          case 1:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(1, 2);
            break;
          case 3:
          case 4:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(2, 4);
            break;
          case 6:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2) && kind > 139)
              kind = 139;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  private final int jjStopStringLiteralDfa_2(int pos, long active0)
  {
    switch (pos)
    {
      default :
      return -1;
    }
  }
  private final int jjStartNfa_2(int pos, long active0)
  {
    return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
  }
  private int jjMoveStringLiteralDfa0_2()
  {
    switch(curChar)
    {
    case 63:
      return jjMoveStringLiteralDfa1_2(0x10L);
      default :
      return jjMoveNfa_2(0, 0);
    }
  }
  private int jjMoveStringLiteralDfa1_2(long active0)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_2(0, active0);
      return 1;
    }
    switch(curChar)
    {
    case 62:
      if ((active0 & 0x10L) != 0L)
        return jjStopAtPos(1, 4);
      break;
      default :
      break;
    }
    return jjStartNfa_2(0, active0);
  }
  private int jjMoveNfa_2(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 3;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
            if ((0x2400L & l) != 0L)
            {
              if (kind > 21)
                kind = 21;
            }
            if (curChar == 13)
              jjstateSet[jjnewStateCnt++] = 1;
            break;
          case 1:
            if (curChar == 10 && kind > 21)
              kind = 21;
            break;
          case 2:
            if (curChar == 13)
              jjstateSet[jjnewStateCnt++] = 1;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  private final int jjStopStringLiteralDfa_1(int pos, long active0, long active1, long active2)
  {
    switch (pos)
    {
    case 0:
      if ((active1 & 0x100000000000L) != 0L)
        return 11;
      if ((active0 & 0x120000L) != 0L || (active1 & 0x80000000000L) != 0L || (active2 & 0x800000000L) != 0L)
        return 2;
      if ((active2 & 0x8000100000L) != 0L)
        return 5;
      if ((active0 & 0xfffffffffc000000L) != 0L || (active1 & 0x7000007fffc7ffL) != 0L)
      {
        jjmatchedKind = 134;
        return 63;
      }
      return -1;
    case 1:
      if ((active0 & 0x100000L) != 0L)
        return 0;
      if ((active0 & 0x1000040000000000L) != 0L || (active1 & 0x10000008000400L) != 0L)
        return 63;
      if ((active0 & 0xeffffbfffc000000L) != 0L || (active1 & 0x60000077ffc3ffL) != 0L)
      {
        if (jjmatchedPos != 1)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 1;
        }
        return 63;
      }
      return -1;
    case 2:
      if ((active0 & 0xc000030240000000L) != 0L || (active1 & 0x60000060000200L) != 0L)
        return 63;
      if ((active0 & 0x2ffff8fdbc000000L) != 0L || (active1 & 0x1fffc1ffL) != 0L)
      {
        if (jjmatchedPos != 2)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 2;
        }
        return 63;
      }
      return -1;
    case 3:
      if ((active0 & 0x102980000000000L) != 0L || (active1 & 0x70d8000L) != 0L)
        return 63;
      if ((active0 & 0x2efd60fdfc000000L) != 0L || (active1 & 0x58f243ffL) != 0L)
      {
        if (jjmatchedPos != 3)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 3;
        }
        return 63;
      }
      return -1;
    case 4:
      if ((active0 & 0x201603d00000000L) != 0L || (active1 & 0x10120049L) != 0L)
        return 63;
      if ((active0 & 0x2cfc08c0fc000000L) != 0L || (active1 & 0x4ae043b6L) != 0L)
      {
        if (jjmatchedPos != 4)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 4;
        }
        return 63;
      }
      return -1;
    case 5:
      if ((active0 & 0xc0080004000000L) != 0L || (active1 & 0x8c04186L) != 0L)
        return 63;
      if ((active0 & 0x2c3c00d0f8000000L) != 0L || (active1 & 0x42200230L) != 0L)
      {
        if (jjmatchedPos != 5)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 5;
        }
        return 63;
      }
      return -1;
    case 6:
      if ((active0 & 0x283c001010000000L) != 0L || (active1 & 0x42000200L) != 0L)
        return 63;
      if ((active0 & 0x40000c0e8000000L) != 0L || (active1 & 0x200130L) != 0L)
      {
        if (jjmatchedPos != 6)
        {
          jjmatchedKind = 134;
          jjmatchedPos = 6;
        }
        return 63;
      }
      return -1;
    case 7:
      if ((active0 & 0x400004020000000L) != 0L || (active1 & 0x10L) != 0L)
        return 63;
      if ((active0 & 0x300080c8000000L) != 0L || (active1 & 0x200120L) != 0L)
      {
        jjmatchedKind = 134;
        jjmatchedPos = 7;
        return 63;
      }
      return -1;
    case 8:
      if ((active0 & 0x8048000000L) != 0L || (active1 & 0x20L) != 0L)
        return 63;
      if ((active0 & 0x30000080000000L) != 0L || (active1 & 0x200100L) != 0L)
      {
        jjmatchedKind = 134;
        jjmatchedPos = 8;
        return 63;
      }
      return -1;
    case 9:
      if ((active0 & 0x30000000000000L) != 0L)
      {
        jjmatchedKind = 134;
        jjmatchedPos = 9;
        return 63;
      }
      if ((active0 & 0x80000000L) != 0L || (active1 & 0x200100L) != 0L)
        return 63;
      return -1;
    case 10:
      if ((active0 & 0x30000000000000L) != 0L)
      {
        jjmatchedKind = 134;
        jjmatchedPos = 10;
        return 63;
      }
      return -1;
      default :
      return -1;
    }
  }
  private final int jjStartNfa_1(int pos, long active0, long active1, long active2)
  {
    return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0, active1, active2), pos + 1);
  }
  private int jjMoveStringLiteralDfa0_1()
  {
    switch(curChar)
    {
    case 33:
      jjmatchedKind = 96;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x28000000L);
    case 34:
      return jjStopAtPos(0, 128);
    case 35:
      return jjStopAtPos(0, 18);
    case 36:
      return jjStopAtPos(0, 133);
    case 37:
      jjmatchedKind = 112;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x10000000000L);
    case 38:
      jjmatchedKind = 109;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x2000000000L, 0x1000000000L);
    case 40:
      return jjStopAtPos(0, 141);
    case 41:
      return jjStopAtPos(0, 142);
    case 42:
      jjmatchedKind = 106;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x400000000L);
    case 43:
      jjmatchedKind = 104;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x4000000000L, 0x100000000L);
    case 44:
      return jjStopAtPos(0, 147);
    case 45:
      jjmatchedKind = 105;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x8000000800L, 0x200000000L);
    case 46:
      jjmatchedKind = 148;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x8000000000L);
    case 47:
      jjmatchedKind = 107;
      return jjMoveStringLiteralDfa1_1(0x120000L, 0x0L, 0x800000000L);
    case 58:
      jjmatchedKind = 99;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x1000L, 0x0L);
    case 59:
      return jjStopAtPos(0, 146);
    case 60:
      jjmatchedKind = 151;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x2000000000000L, 0x40012000010L);
    case 61:
      jjmatchedKind = 159;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x2000L, 0x41000000L);
    case 62:
      jjmatchedKind = 150;
      return jjMoveStringLiteralDfa1_1(0x0L, 0xc000000000000L, 0x80004000000L);
    case 63:
      jjmatchedKind = 98;
      return jjMoveStringLiteralDfa1_1(0x10L, 0x0L, 0x0L);
    case 64:
      return jjStopAtPos(0, 95);
    case 91:
      return jjStopAtPos(0, 144);
    case 92:
      return jjStartNfaWithStates_1(0, 108, 11);
    case 93:
      return jjStopAtPos(0, 145);
    case 94:
      jjmatchedKind = 111;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x4000000000L);
    case 65:
    case 97:
      return jjMoveStringLiteralDfa1_1(0x200020000000L, 0x40000000000400L, 0x0L);
    case 66:
    case 98:
      return jjMoveStringLiteralDfa1_1(0x400000000000L, 0x3000000L, 0x0L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa1_1(0x700002400000000L, 0x1L, 0x0L);
    case 68:
    case 100:
      return jjMoveStringLiteralDfa1_1(0x1800000000000000L, 0x8004000L, 0x0L);
    case 69:
    case 101:
      return jjMoveStringLiteralDfa1_1(0x2002180000000000L, 0x1f0L, 0x0L);
    case 70:
    case 102:
      return jjMoveStringLiteralDfa1_1(0x4000005100000000L, 0x10100200L, 0x0L);
    case 71:
    case 103:
      return jjMoveStringLiteralDfa1_1(0x40000000000000L, 0x8000L, 0x0L);
    case 73:
    case 105:
      return jjMoveStringLiteralDfa1_1(0x140400c0000000L, 0x60200000L, 0x0L);
    case 76:
    case 108:
      return jjMoveStringLiteralDfa1_1(0x800000000000L, 0x0L, 0x0L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa1_1(0x8000008000000000L, 0x10000L, 0x0L);
    case 79:
    case 111:
      return jjMoveStringLiteralDfa1_1(0x0L, 0x10000000800000L, 0x0L);
    case 80:
    case 112:
      return jjMoveStringLiteralDfa1_1(0x100001c000000L, 0x0L, 0x0L);
    case 82:
    case 114:
      return jjMoveStringLiteralDfa1_1(0x28000000000000L, 0x4000002L, 0x0L);
    case 83:
    case 115:
      return jjMoveStringLiteralDfa1_1(0x80000000000000L, 0x420004L, 0x0L);
    case 84:
    case 116:
      return jjMoveStringLiteralDfa1_1(0xa00000000L, 0xc0000L, 0x0L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa1_1(0x10000000000L, 0x0L, 0x0L);
    case 86:
    case 118:
      return jjMoveStringLiteralDfa1_1(0x20000000000L, 0x0L, 0x0L);
    case 87:
    case 119:
      return jjMoveStringLiteralDfa1_1(0x0L, 0x8L, 0x0L);
    case 88:
    case 120:
      return jjMoveStringLiteralDfa1_1(0x0L, 0x20000000000000L, 0x0L);
    case 123:
      return jjStopAtPos(0, 149);
    case 124:
      jjmatchedKind = 110;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x1000000000L, 0x2000000000L);
    case 125:
      return jjStopAtPos(0, 143);
    case 126:
      jjmatchedKind = 97;
      return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x20000000000L);
      default :
      return jjMoveNfa_1(3, 0);
    }
  }
  private int jjMoveStringLiteralDfa1_1(long active0, long active1, long active2)
  {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(0, active0, active1, active2);
      return 1;
    }
    switch(curChar)
    {
    case 38:
      if ((active1 & 0x2000000000L) != 0L)
        return jjStopAtPos(1, 101);
      break;
    case 42:
      if ((active0 & 0x100000L) != 0L)
        return jjStartNfaWithStates_1(1, 20, 0);
      break;
    case 43:
      if ((active1 & 0x4000000000L) != 0L)
        return jjStopAtPos(1, 102);
      break;
    case 45:
      if ((active1 & 0x8000000000L) != 0L)
        return jjStopAtPos(1, 103);
      break;
    case 47:
      if ((active0 & 0x20000L) != 0L)
        return jjStopAtPos(1, 17);
      break;
    case 58:
      if ((active1 & 0x1000L) != 0L)
        return jjStopAtPos(1, 76);
      break;
    case 60:
      if ((active1 & 0x2000000000000L) != 0L)
      {
        jjmatchedKind = 113;
        jjmatchedPos = 1;
      }
      return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x40000000010L);
    case 61:
      if ((active2 & 0x1000000L) != 0L)
      {
        jjmatchedKind = 152;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x2000000L) != 0L)
        return jjStopAtPos(1, 153);
      else if ((active2 & 0x4000000L) != 0L)
        return jjStopAtPos(1, 154);
      else if ((active2 & 0x8000000L) != 0L)
      {
        jjmatchedKind = 155;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x100000000L) != 0L)
        return jjStopAtPos(1, 160);
      else if ((active2 & 0x200000000L) != 0L)
        return jjStopAtPos(1, 161);
      else if ((active2 & 0x400000000L) != 0L)
        return jjStopAtPos(1, 162);
      else if ((active2 & 0x800000000L) != 0L)
        return jjStopAtPos(1, 163);
      else if ((active2 & 0x1000000000L) != 0L)
        return jjStopAtPos(1, 164);
      else if ((active2 & 0x2000000000L) != 0L)
        return jjStopAtPos(1, 165);
      else if ((active2 & 0x4000000000L) != 0L)
        return jjStopAtPos(1, 166);
      else if ((active2 & 0x8000000000L) != 0L)
        return jjStopAtPos(1, 167);
      else if ((active2 & 0x10000000000L) != 0L)
        return jjStopAtPos(1, 168);
      else if ((active2 & 0x20000000000L) != 0L)
        return jjStopAtPos(1, 169);
      return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x60000000L);
    case 62:
      if ((active0 & 0x10L) != 0L)
        return jjStopAtPos(1, 4);
      else if ((active1 & 0x800L) != 0L)
        return jjStopAtPos(1, 75);
      else if ((active1 & 0x2000L) != 0L)
        return jjStopAtPos(1, 77);
      else if ((active1 & 0x4000000000000L) != 0L)
      {
        jjmatchedKind = 114;
        jjmatchedPos = 1;
      }
      else if ((active2 & 0x10000000L) != 0L)
        return jjStopAtPos(1, 156);
      return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x8000000000000L, active2, 0x80000000000L);
    case 65:
    case 97:
      return jjMoveStringLiteralDfa2_1(active0, 0x100028400000000L, active1, 0x100000L, active2, 0L);
    case 66:
    case 98:
      return jjMoveStringLiteralDfa2_1(active0, 0x20000000L, active1, 0x800000L, active2, 0L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa2_1(active0, 0x2000000000000L, active1, 0L, active2, 0L);
    case 69:
    case 101:
      return jjMoveStringLiteralDfa2_1(active0, 0x8828000000000000L, active1, 0x4004002L, active2, 0L);
    case 70:
    case 102:
      if ((active0 & 0x40000000000L) != 0L)
        return jjStartNfaWithStates_1(1, 42, 63);
      break;
    case 72:
    case 104:
      return jjMoveStringLiteralDfa2_1(active0, 0x800000000L, active1, 0x40008L, active2, 0L);
    case 73:
    case 105:
      return jjMoveStringLiteralDfa2_1(active0, 0x801100000000L, active1, 0L, active2, 0L);
    case 76:
    case 108:
      return jjMoveStringLiteralDfa2_1(active0, 0x40182000000000L, active1, 0x10000001L, active2, 0L);
    case 77:
    case 109:
      return jjMoveStringLiteralDfa2_1(active0, 0x80000000L, active1, 0L, active2, 0L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa2_1(active0, 0x14000040000000L, active1, 0x400000602001f0L, active2, 0L);
    case 79:
    case 111:
      if ((active0 & 0x1000000000000000L) != 0L)
      {
        jjmatchedKind = 60;
        jjmatchedPos = 1;
      }
      return jjMoveStringLiteralDfa2_1(active0, 0x4600000000000000L, active1, 0x2000000b008200L, active2, 0L);
    case 82:
    case 114:
      if ((active1 & 0x10000000000000L) != 0L)
        return jjStartNfaWithStates_1(1, 116, 63);
      return jjMoveStringLiteralDfa2_1(active0, 0x1600218000000L, active1, 0x80000L, active2, 0L);
    case 83:
    case 115:
      if ((active1 & 0x400L) != 0L)
        return jjStartNfaWithStates_1(1, 74, 63);
      return jjMoveStringLiteralDfa2_1(active0, 0x10000000000L, active1, 0L, active2, 0L);
    case 84:
    case 116:
      return jjMoveStringLiteralDfa2_1(active0, 0x80000000000000L, active1, 0x400000L, active2, 0L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa2_1(active0, 0x4004000000L, active1, 0x30000L, active2, 0L);
    case 87:
    case 119:
      return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x4L, active2, 0L);
    case 88:
    case 120:
      return jjMoveStringLiteralDfa2_1(active0, 0x2000000000000000L, active1, 0L, active2, 0L);
    case 124:
      if ((active1 & 0x1000000000L) != 0L)
        return jjStopAtPos(1, 100);
      break;
      default :
      break;
    }
    return jjStartNfa_1(0, active0, active1, active2);
  }
  private int jjMoveStringLiteralDfa2_1(long old0, long active0, long old1, long active1, long old2, long active2)
  {
    if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
      return jjStartNfa_1(0, old0, old1, old2);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(1, active0, active1, active2);
      return 2;
    }
    switch(curChar)
    {
    case 60:
      if ((active2 & 0x10L) != 0L)
        return jjStopAtPos(2, 132);
      break;
    case 61:
      if ((active2 & 0x20000000L) != 0L)
        return jjStopAtPos(2, 157);
      else if ((active2 & 0x40000000L) != 0L)
        return jjStopAtPos(2, 158);
      else if ((active2 & 0x40000000000L) != 0L)
        return jjStopAtPos(2, 170);
      else if ((active2 & 0x80000000000L) != 0L)
        return jjStopAtPos(2, 171);
      break;
    case 62:
      if ((active1 & 0x8000000000000L) != 0L)
        return jjStopAtPos(2, 115);
      break;
    case 65:
    case 97:
      return jjMoveStringLiteralDfa3_1(active0, 0x80002000000000L, active1, 0x4000000L, active2, 0L);
    case 66:
    case 98:
      return jjMoveStringLiteralDfa3_1(active0, 0x4000000L, active1, 0L, active2, 0L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa3_1(active0, 0x14000000000000L, active1, 0L, active2, 0L);
    case 68:
    case 100:
      if ((active1 & 0x40000000000000L) != 0L)
        return jjStartNfaWithStates_1(2, 118, 63);
      return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x1f0L, active2, 0L);
    case 69:
    case 101:
      if ((active0 & 0x10000000000L) != 0L)
        return jjStartNfaWithStates_1(2, 40, 63);
      return jjMoveStringLiteralDfa3_1(active0, 0x400000000000L, active1, 0L, active2, 0L);
    case 70:
    case 102:
      return jjMoveStringLiteralDfa3_1(active0, 0x800000000000000L, active1, 0x4000L, active2, 0L);
    case 72:
    case 104:
      return jjMoveStringLiteralDfa3_1(active0, 0x2000000000000L, active1, 0L, active2, 0L);
    case 73:
    case 105:
      return jjMoveStringLiteralDfa3_1(active0, 0x1000010000000L, active1, 0x4000cL, active2, 0L);
    case 74:
    case 106:
      return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x800000L, active2, 0L);
    case 76:
    case 108:
      return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x110000L, active2, 0L);
    case 77:
    case 109:
      return jjMoveStringLiteralDfa3_1(active0, 0x8000000000L, active1, 0L, active2, 0L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa3_1(active0, 0x600005100000000L, active1, 0L, active2, 0L);
    case 79:
    case 111:
      return jjMoveStringLiteralDfa3_1(active0, 0x40000008000000L, active1, 0x13000001L, active2, 0L);
    case 80:
    case 112:
      return jjMoveStringLiteralDfa3_1(active0, 0x80000000L, active1, 0x20000L, active2, 0L);
    case 81:
    case 113:
      return jjMoveStringLiteralDfa3_1(active0, 0x28000000000000L, active1, 0L, active2, 0L);
    case 82:
    case 114:
      if ((active0 & 0x20000000000L) != 0L)
        return jjStartNfaWithStates_1(2, 41, 63);
      else if ((active0 & 0x4000000000000000L) != 0L)
      {
        jjmatchedKind = 62;
        jjmatchedPos = 2;
      }
      else if ((active1 & 0x20000000000000L) != 0L)
        return jjStartNfaWithStates_1(2, 117, 63);
      return jjMoveStringLiteralDfa3_1(active0, 0x200800000000L, active1, 0x400200L, active2, 0L);
    case 83:
    case 115:
      return jjMoveStringLiteralDfa3_1(active0, 0x100980020000000L, active1, 0x200000L, active2, 0L);
    case 84:
    case 116:
      if ((active1 & 0x20000000L) != 0L)
      {
        jjmatchedKind = 93;
        jjmatchedPos = 2;
      }
      return jjMoveStringLiteralDfa3_1(active0, 0x2000000440000000L, active1, 0x40008002L, active2, 0L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x8080000L, active2, 0L);
    case 87:
    case 119:
      if ((active0 & 0x8000000000000000L) != 0L)
        return jjStartNfaWithStates_1(2, 63, 63);
      break;
    case 89:
    case 121:
      if ((active0 & 0x200000000L) != 0L)
        return jjStartNfaWithStates_1(2, 33, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(1, active0, active1, active2);
  }
  private int jjMoveStringLiteralDfa3_1(long old0, long active0, long old1, long active1, long old2, long active2)
  {
    if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
      return jjStartNfa_1(1, old0, old1, old2);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(2, active0, active1, 0L);
      return 3;
    }
    switch(curChar)
    {
    case 65:
    case 97:
      return jjMoveStringLiteralDfa4_1(active0, 0x800601100000000L, active1, 0x10000000L);
    case 66:
    case 98:
      return jjMoveStringLiteralDfa4_1(active0, 0x40000000000000L, active1, 0x8000000L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa4_1(active0, 0x4400000000L, active1, 0L);
    case 69:
    case 101:
      if ((active0 & 0x100000000000L) != 0L)
      {
        jjmatchedKind = 44;
        jjmatchedPos = 3;
      }
      else if ((active0 & 0x100000000000000L) != 0L)
        return jjStartNfaWithStates_1(3, 56, 63);
      else if ((active1 & 0x80000L) != 0L)
        return jjStartNfaWithStates_1(3, 83, 63);
      return jjMoveStringLiteralDfa4_1(active0, 0x2000088040000000L, active1, 0x40820200L);
    case 70:
    case 102:
      return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x180L);
    case 73:
    case 105:
      return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x404040L);
    case 76:
    case 108:
      if ((active1 & 0x10000L) != 0L)
        return jjStartNfaWithStates_1(3, 80, 63);
      else if ((active1 & 0x1000000L) != 0L)
      {
        jjmatchedKind = 88;
        jjmatchedPos = 3;
      }
      else if ((active1 & 0x4000000L) != 0L)
        return jjStartNfaWithStates_1(3, 90, 63);
      return jjMoveStringLiteralDfa4_1(active0, 0x14000084000000L, active1, 0x2000008L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa4_1(active0, 0x1000000000000L, active1, 0x1L);
    case 79:
    case 111:
      if ((active0 & 0x2000000000000L) != 0L)
        return jjStartNfaWithStates_1(3, 49, 63);
      else if ((active1 & 0x8000L) != 0L)
        return jjStartNfaWithStates_1(3, 79, 63);
      return jjMoveStringLiteralDfa4_1(active0, 0x800000000L, active1, 0L);
    case 83:
    case 115:
      if ((active1 & 0x40000L) != 0L)
        return jjStartNfaWithStates_1(3, 82, 63);
      return jjMoveStringLiteralDfa4_1(active0, 0x200002000000000L, active1, 0x100020L);
    case 84:
    case 116:
      if ((active0 & 0x800000000000L) != 0L)
        return jjStartNfaWithStates_1(3, 47, 63);
      return jjMoveStringLiteralDfa4_1(active0, 0x480000028000000L, active1, 0x200004L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa4_1(active0, 0x28000000000000L, active1, 0x2L);
    case 86:
    case 118:
      return jjMoveStringLiteralDfa4_1(active0, 0x10000000L, active1, 0L);
    case 87:
    case 119:
      return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x10L);
      default :
      break;
    }
    return jjStartNfa_1(2, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa4_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(2, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(3, active0, active1, 0L);
      return 4;
    }
    switch(curChar)
    {
    case 65:
    case 97:
      return jjMoveStringLiteralDfa5_1(active0, 0x40000010000000L, active1, 0x200200L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x800004L);
    case 69:
    case 101:
      if ((active1 & 0x1L) != 0L)
        return jjStartNfaWithStates_1(4, 64, 63);
      else if ((active1 & 0x8L) != 0L)
        return jjStartNfaWithStates_1(4, 67, 63);
      else if ((active1 & 0x100000L) != 0L)
        return jjStartNfaWithStates_1(4, 84, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0x88000000L, active1, 0x2000000L);
    case 70:
    case 102:
      if ((active1 & 0x40L) != 0L)
        return jjStartNfaWithStates_1(4, 70, 63);
      break;
    case 71:
    case 103:
      return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x40000000L);
    case 72:
    case 104:
      if ((active0 & 0x400000000L) != 0L)
        return jjStartNfaWithStates_1(4, 34, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x10L);
    case 73:
    case 105:
      return jjMoveStringLiteralDfa5_1(active0, 0x4a8080004000000L, active1, 0L);
    case 75:
    case 107:
      if ((active0 & 0x400000000000L) != 0L)
        return jjStartNfaWithStates_1(4, 46, 63);
      break;
    case 76:
    case 108:
      if ((active0 & 0x100000000L) != 0L)
      {
        jjmatchedKind = 32;
        jjmatchedPos = 4;
      }
      return jjMoveStringLiteralDfa5_1(active0, 0x1000000000L, active1, 0x8000000L);
    case 78:
    case 110:
      return jjMoveStringLiteralDfa5_1(active0, 0x2000000000000000L, active1, 0x404000L);
    case 79:
    case 111:
      return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x180L);
    case 82:
    case 114:
      if ((active1 & 0x20000L) != 0L)
        return jjStartNfaWithStates_1(4, 81, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0x60000000L, active1, 0x2L);
    case 83:
    case 115:
      if ((active0 & 0x2000000000L) != 0L)
        return jjStartNfaWithStates_1(4, 37, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0x8000000000L, active1, 0L);
    case 84:
    case 116:
      if ((active0 & 0x1000000000000L) != 0L)
        return jjStartNfaWithStates_1(4, 48, 63);
      else if ((active0 & 0x200000000000000L) != 0L)
        return jjStartNfaWithStates_1(4, 57, 63);
      else if ((active1 & 0x10000000L) != 0L)
        return jjStartNfaWithStates_1(4, 92, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0x4000000000L, active1, 0L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa5_1(active0, 0x814000000000000L, active1, 0L);
    case 87:
    case 119:
      if ((active0 & 0x800000000L) != 0L)
        return jjStartNfaWithStates_1(4, 35, 63);
      return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x20L);
    case 89:
    case 121:
      if ((active0 & 0x200000000000L) != 0L)
        return jjStartNfaWithStates_1(4, 45, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(3, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa5_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(3, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(4, active0, active1, 0L);
      return 5;
    }
    switch(curChar)
    {
    case 65:
    case 97:
      return jjMoveStringLiteralDfa6_1(active0, 0x20000000L, active1, 0x2000000L);
    case 67:
    case 99:
      if ((active0 & 0x4000000L) != 0L)
        return jjStartNfaWithStates_1(5, 26, 63);
      else if ((active0 & 0x80000000000000L) != 0L)
        return jjStartNfaWithStates_1(5, 55, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0x8000000L, active1, 0x200L);
    case 68:
    case 100:
      return jjMoveStringLiteralDfa6_1(active0, 0x2014000000000000L, active1, 0L);
    case 69:
    case 101:
      if ((active1 & 0x4000L) != 0L)
        return jjStartNfaWithStates_1(5, 78, 63);
      else if ((active1 & 0x8000000L) != 0L)
        return jjStartNfaWithStates_1(5, 91, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x40000000L);
    case 70:
    case 102:
      if ((active0 & 0x80000000000L) != 0L)
        return jjStartNfaWithStates_1(5, 43, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0x40000000L, active1, 0L);
    case 71:
    case 103:
      if ((active1 & 0x400000L) != 0L)
        return jjStartNfaWithStates_1(5, 86, 63);
      break;
    case 72:
    case 104:
      if ((active1 & 0x4L) != 0L)
        return jjStartNfaWithStates_1(5, 66, 63);
      break;
    case 73:
    case 105:
      return jjMoveStringLiteralDfa6_1(active0, 0x4000000000L, active1, 0x30L);
    case 76:
    case 108:
      if ((active0 & 0x40000000000000L) != 0L)
        return jjStartNfaWithStates_1(5, 54, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0x800001000000000L, active1, 0L);
    case 77:
    case 109:
      return jjMoveStringLiteralDfa6_1(active0, 0x80000000L, active1, 0L);
    case 78:
    case 110:
      if ((active1 & 0x2L) != 0L)
        return jjStartNfaWithStates_1(5, 65, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0x400000000000000L, active1, 0x200000L);
    case 80:
    case 112:
      return jjMoveStringLiteralDfa6_1(active0, 0x8000000000L, active1, 0L);
    case 82:
    case 114:
      if ((active1 & 0x80L) != 0L)
      {
        jjmatchedKind = 71;
        jjmatchedPos = 5;
      }
      return jjMoveStringLiteralDfa6_1(active0, 0x28000000000000L, active1, 0x100L);
    case 84:
    case 116:
      if ((active1 & 0x800000L) != 0L)
        return jjStartNfaWithStates_1(5, 87, 63);
      return jjMoveStringLiteralDfa6_1(active0, 0x10000000L, active1, 0L);
      default :
      break;
    }
    return jjStartNfa_1(4, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa6_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(4, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(5, active0, active1, 0L);
      return 6;
    }
    switch(curChar)
    {
    case 65:
    case 97:
      return jjMoveStringLiteralDfa7_1(active0, 0x8040000000L, active1, 0L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa7_1(active0, 0x20000000L, active1, 0x200000L);
    case 69:
    case 101:
      if ((active0 & 0x10000000L) != 0L)
        return jjStartNfaWithStates_1(6, 28, 63);
      else if ((active0 & 0x4000000000000L) != 0L)
      {
        jjmatchedKind = 50;
        jjmatchedPos = 6;
      }
      else if ((active0 & 0x8000000000000L) != 0L)
      {
        jjmatchedKind = 51;
        jjmatchedPos = 6;
      }
      return jjMoveStringLiteralDfa7_1(active0, 0x30000080000000L, active1, 0x100L);
    case 72:
    case 104:
      if ((active1 & 0x200L) != 0L)
        return jjStartNfaWithStates_1(6, 73, 63);
      break;
    case 76:
    case 108:
      return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x10L);
    case 78:
    case 110:
      if ((active1 & 0x2000000L) != 0L)
        return jjStartNfaWithStates_1(6, 89, 63);
      break;
    case 79:
    case 111:
      return jjMoveStringLiteralDfa7_1(active0, 0x4000000000L, active1, 0L);
    case 82:
    case 114:
      if ((active1 & 0x40000000L) != 0L)
        return jjStartNfaWithStates_1(6, 94, 63);
      break;
    case 83:
    case 115:
      if ((active0 & 0x2000000000000000L) != 0L)
        return jjStartNfaWithStates_1(6, 61, 63);
      break;
    case 84:
    case 116:
      if ((active0 & 0x800000000000000L) != 0L)
        return jjStartNfaWithStates_1(6, 59, 63);
      return jjMoveStringLiteralDfa7_1(active0, 0x8000000L, active1, 0x20L);
    case 85:
    case 117:
      return jjMoveStringLiteralDfa7_1(active0, 0x400000000000000L, active1, 0L);
    case 89:
    case 121:
      if ((active0 & 0x1000000000L) != 0L)
        return jjStartNfaWithStates_1(6, 36, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(5, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa7_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(5, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(6, active0, active1, 0L);
      return 7;
    }
    switch(curChar)
    {
    case 95:
      return jjMoveStringLiteralDfa8_1(active0, 0x30000000000000L, active1, 0L);
    case 65:
    case 97:
      return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0x100L);
    case 67:
    case 99:
      return jjMoveStringLiteralDfa8_1(active0, 0x8040000000L, active1, 0x20L);
    case 69:
    case 101:
      if ((active0 & 0x400000000000000L) != 0L)
        return jjStartNfaWithStates_1(7, 58, 63);
      else if ((active1 & 0x10L) != 0L)
        return jjStartNfaWithStates_1(7, 68, 63);
      return jjMoveStringLiteralDfa8_1(active0, 0x8000000L, active1, 0x200000L);
    case 78:
    case 110:
      if ((active0 & 0x4000000000L) != 0L)
        return jjStartNfaWithStates_1(7, 38, 63);
      return jjMoveStringLiteralDfa8_1(active0, 0x80000000L, active1, 0L);
    case 84:
    case 116:
      if ((active0 & 0x20000000L) != 0L)
        return jjStartNfaWithStates_1(7, 29, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(6, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa8_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(6, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(7, active0, active1, 0L);
      return 8;
    }
    switch(curChar)
    {
    case 67:
    case 99:
      return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x100L);
    case 68:
    case 100:
      if ((active0 & 0x8000000L) != 0L)
        return jjStartNfaWithStates_1(8, 27, 63);
      break;
    case 69:
    case 101:
      if ((active0 & 0x40000000L) != 0L)
        return jjStartNfaWithStates_1(8, 30, 63);
      else if ((active0 & 0x8000000000L) != 0L)
        return jjStartNfaWithStates_1(8, 39, 63);
      break;
    case 72:
    case 104:
      if ((active1 & 0x20L) != 0L)
        return jjStartNfaWithStates_1(8, 69, 63);
      break;
    case 79:
    case 111:
      return jjMoveStringLiteralDfa9_1(active0, 0x30000000000000L, active1, 0x200000L);
    case 84:
    case 116:
      return jjMoveStringLiteralDfa9_1(active0, 0x80000000L, active1, 0L);
      default :
      break;
    }
    return jjStartNfa_1(7, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa9_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(7, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(8, active0, active1, 0L);
      return 9;
    }
    switch(curChar)
    {
    case 70:
    case 102:
      if ((active1 & 0x200000L) != 0L)
        return jjStartNfaWithStates_1(9, 85, 63);
      break;
    case 72:
    case 104:
      if ((active1 & 0x100L) != 0L)
        return jjStartNfaWithStates_1(9, 72, 63);
      break;
    case 78:
    case 110:
      return jjMoveStringLiteralDfa10_1(active0, 0x30000000000000L, active1, 0L);
    case 83:
    case 115:
      if ((active0 & 0x80000000L) != 0L)
        return jjStartNfaWithStates_1(9, 31, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(8, active0, active1, 0L);
  }
  private int jjMoveStringLiteralDfa10_1(long old0, long active0, long old1, long active1)
  {
    if (((active0 &= old0) | (active1 &= old1)) == 0L)
      return jjStartNfa_1(8, old0, old1, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(9, active0, 0L, 0L);
      return 10;
    }
    switch(curChar)
    {
    case 67:
    case 99:
      return jjMoveStringLiteralDfa11_1(active0, 0x30000000000000L);
      default :
      break;
    }
    return jjStartNfa_1(9, active0, 0L, 0L);
  }
  private int jjMoveStringLiteralDfa11_1(long old0, long active0)
  {
    if (((active0 &= old0)) == 0L)
      return jjStartNfa_1(9, old0, 0L, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
      jjStopStringLiteralDfa_1(10, active0, 0L, 0L);
      return 11;
    }
    switch(curChar)
    {
    case 69:
    case 101:
      if ((active0 & 0x10000000000000L) != 0L)
        return jjStartNfaWithStates_1(11, 52, 63);
      else if ((active0 & 0x20000000000000L) != 0L)
        return jjStartNfaWithStates_1(11, 53, 63);
      break;
      default :
      break;
    }
    return jjStartNfa_1(10, active0, 0L, 0L);
  }
  private int jjStartNfaWithStates_1(int pos, int kind, int state)
  {
    jjmatchedKind = kind;
    jjmatchedPos = pos;
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) { return pos + 1; }
    return jjMoveNfa_1(state, pos + 1);
  }
  private int jjMoveNfa_1(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 63;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 63:
            if ((0x3ff000000000000L & l) != 0L)
            {
              if (kind > 172)
                kind = 172;
              jjCheckNAdd(62);
            }
            if ((0x3ff000000000000L & l) != 0L)
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(58, 59);
            }
            break;
          case 3:
            if ((0x3ff000000000000L & l) != 0L)
            {
              if (kind > 119)
                kind = 119;
              jjCheckNAddStates(0, 8);
            }
            else if (curChar == 39)
              jjCheckNAddStates(9, 14);
            else if (curChar == 46)
              jjCheckNAdd(5);
            else if (curChar == 47)
              jjstateSet[jjnewStateCnt++] = 2;
            if (curChar == 48)
            {
              if (kind > 119)
                kind = 119;
              jjCheckNAddStates(15, 17);
            }
            break;
          case 0:
            if (curChar == 42)
              jjstateSet[jjnewStateCnt++] = 1;
            break;
          case 1:
            if ((0xffff7fffffffffffL & l) != 0L && kind > 19)
              kind = 19;
            break;
          case 2:
            if (curChar == 42)
              jjstateSet[jjnewStateCnt++] = 0;
            break;
          case 4:
            if (curChar == 46)
              jjCheckNAdd(5);
            break;
          case 5:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddStates(18, 20);
            break;
          case 7:
            if ((0x280000000000L & l) != 0L)
              jjCheckNAdd(8);
            break;
          case 8:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddTwoStates(8, 9);
            break;
          case 12:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(12, 13);
            break;
          case 15:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(13, 15);
            break;
          case 17:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(17, 13);
            break;
          case 18:
            if (curChar != 48)
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddStates(15, 17);
            break;
          case 20:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddTwoStates(20, 21);
            break;
          case 22:
            if ((0xff000000000000L & l) == 0L)
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddTwoStates(22, 21);
            break;
          case 23:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddStates(0, 8);
            break;
          case 24:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddTwoStates(24, 21);
            break;
          case 25:
            if ((0x3ff000000000000L & l) != 0L)
              jjCheckNAddTwoStates(25, 26);
            break;
          case 26:
            if (curChar != 46)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddStates(21, 23);
            break;
          case 27:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddStates(21, 23);
            break;
          case 29:
            if ((0x280000000000L & l) != 0L)
              jjCheckNAdd(30);
            break;
          case 30:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddTwoStates(30, 9);
            break;
          case 31:
            if ((0x3ff000000000000L & l) != 0L)
              jjCheckNAddTwoStates(31, 32);
            break;
          case 33:
            if ((0x280000000000L & l) != 0L)
              jjCheckNAdd(34);
            break;
          case 34:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 123)
              kind = 123;
            jjCheckNAddTwoStates(34, 9);
            break;
          case 35:
            if ((0x3ff000000000000L & l) != 0L)
              jjCheckNAddStates(24, 26);
            break;
          case 37:
            if ((0x280000000000L & l) != 0L)
              jjCheckNAdd(38);
            break;
          case 38:
            if ((0x3ff000000000000L & l) != 0L)
              jjCheckNAddTwoStates(38, 9);
            break;
          case 39:
            if (curChar == 39)
              jjCheckNAddStates(9, 14);
            break;
          case 40:
            if ((0xffffff7fffffffffL & l) != 0L)
              jjCheckNAddStates(27, 29);
            break;
          case 42:
            jjCheckNAddStates(27, 29);
            break;
          case 43:
            if (curChar == 39 && kind > 125)
              kind = 125;
            break;
          case 44:
            if ((0xffffff7fffffffffL & l) != 0L)
              jjCheckNAddStates(30, 32);
            break;
          case 46:
            jjCheckNAddStates(30, 32);
            break;
          case 47:
            if (curChar == 39 && kind > 126)
              kind = 126;
            break;
          case 49:
          case 51:
            jjCheckNAddStates(33, 35);
            break;
          case 53:
          case 55:
            jjCheckNAddStates(36, 38);
            break;
          case 58:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(58, 59);
            break;
          case 61:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(59, 61);
            break;
          case 62:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(62);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 63:
            // if ((0x87fffffe97fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe97fffffeL, l, curChar))
            {
              if (kind > 172)
                kind = 172;
              jjCheckNAdd(62);
            }
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(58, 59);
            }
            else if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 60;
            break;
          case 11:
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 138)
                kind = 138;
              jjCheckNAddTwoStates(17, 13);
            }
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 138)
                kind = 138;
              jjCheckNAddTwoStates(12, 13);
            }
            break;
          case 3:
            // if ((0x87fffffe87fffffeL & l) != 0L)
            if (!checkChar(0x87fffffe87fffffeL, l, curChar))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddStates(39, 41);
            }
            else if (curChar == 96)
              jjCheckNAddStates(42, 47);
            else if (curChar == 92)
              jjAddStates(48, 49);
            break;
          case 1:
            if (kind > 19)
              kind = 19;
            break;
          case 6:
            // if ((0x2000000020L & l) != 0L)
            if (!checkChar(0x2000000020L, l, curChar))
              jjAddStates(50, 51);
            break;
          case 9:
            // if ((0x5000000050L & l) != 0L && kind > 123)
            if (!checkChar(0x5000000050L, l, curChar) && kind > 123)
              kind = 123;
            break;
          case 10:
            if (curChar == 92)
              jjAddStates(48, 49);
            break;
          case 12:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(12, 13);
            break;
          case 13:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 14;
            break;
          case 14:
          case 15:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(13, 15);
            break;
          case 16:
          case 17:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(17, 13);
            break;
          case 19:
            // if ((0x100000001000000L & l) != 0L)
            if (!checkChar(0x100000001000000L, l, curChar))
              jjCheckNAdd(20);
            break;
          case 20:
            // if ((0x7e0000007eL & l) == 0L)
            if (checkChar(0x7e0000007eL, l, curChar))
              break;
            if (kind > 119)
              kind = 119;
            jjCheckNAddTwoStates(20, 21);
            break;
          case 21:
            // if ((0x100000001000L & l) != 0L && kind > 119)
            if (!checkChar(0x100000001000L, l, curChar) && kind > 119)
              kind = 119;
            break;
          case 28:
            // if ((0x2000000020L & l) != 0L)
            if (!checkChar(0x2000000020L, l, curChar))
              jjAddStates(52, 53);
            break;
          case 32:
            // if ((0x2000000020L & l) != 0L)
            if (!checkChar(0x2000000020L, l, curChar))
              jjAddStates(54, 55);
            break;
          case 36:
            // if ((0x2000000020L & l) != 0L)
            if (!checkChar(0x2000000020L, l, curChar))
              jjAddStates(56, 57);
            break;
          case 40:
            // if ((0xffffffffefffffffL & l) != 0L)
            if (!checkChar(0xffffffffefffffffL, l, curChar))
              jjCheckNAddStates(27, 29);
            break;
          case 41:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 42;
            break;
          case 42:
            jjCheckNAddStates(27, 29);
            break;
          case 44:
            // if ((0xffffffffefffffffL & l) != 0L)
            if (!checkChar(0xffffffffefffffffL, l, curChar))
              jjCheckNAddStates(30, 32);
            break;
          case 45:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 46;
            break;
          case 46:
            jjCheckNAddStates(30, 32);
            break;
          case 48:
            if (curChar == 96)
              jjCheckNAddStates(42, 47);
            break;
          case 49:
            // if ((0xfffffffeefffffffL & l) != 0L)
            if (!checkChar(0xfffffffeefffffffL, l, curChar))
              jjCheckNAddStates(33, 35);
            break;
          case 50:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 51;
            break;
          case 51:
            jjCheckNAddStates(33, 35);
            break;
          case 52:
            if (curChar == 96 && kind > 125)
              kind = 125;
            break;
          case 53:
            // if ((0xfffffffeefffffffL & l) != 0L)
            if (!checkChar(0xfffffffeefffffffL, l, curChar))
              jjCheckNAddStates(36, 38);
            break;
          case 54:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 55;
            break;
          case 55:
            jjCheckNAddStates(36, 38);
            break;
          case 56:
            if (curChar == 96 && kind > 127)
              kind = 127;
            break;
          case 57:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddStates(39, 41);
            break;
          case 58:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(58, 59);
            break;
          case 59:
            if (curChar == 92)
              jjstateSet[jjnewStateCnt++] = 60;
            break;
          case 60:
          case 61:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(59, 61);
            break;
          case 62:
            // if ((0x87fffffe97fffffeL & l) == 0L)
            if (checkChar(0x87fffffe97fffffeL, l, curChar))
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(62);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 63:
            if (jjCanMove_0(hiByte, i1, i2, l1, l2))
            {
              if (kind > 134)
                kind = 134;
              jjCheckNAddTwoStates(58, 59);
            }
            if (jjCanMove_0(hiByte, i1, i2, l1, l2))
            {
              if (kind > 172)
                kind = 172;
              jjCheckNAdd(62);
            }
            break;
          case 11:
            if (jjCanMove_0(hiByte, i1, i2, l1, l2))
            {
              if (kind > 138)
                kind = 138;
              jjCheckNAddTwoStates(12, 13);
            }
            if (jjCanMove_0(hiByte, i1, i2, l1, l2))
            {
              if (kind > 138)
                kind = 138;
              jjCheckNAddTwoStates(17, 13);
            }
            break;
          case 3:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddStates(39, 41);
            break;
          case 1:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2) && kind > 19)
              kind = 19;
            break;
          case 12:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(12, 13);
            break;
          case 14:
          case 15:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(13, 15);
            break;
          case 16:
          case 17:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 138)
              kind = 138;
            jjCheckNAddTwoStates(17, 13);
            break;
          case 40:
          case 42:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2))
              jjCheckNAddStates(27, 29);
            break;
          case 44:
          case 46:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2))
              jjCheckNAddStates(30, 32);
            break;
          case 49:
          case 51:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2))
              jjCheckNAddStates(33, 35);
            break;
          case 53:
          case 55:
            if (jjCanMove_1(hiByte, i1, i2, l1, l2))
              jjCheckNAddStates(36, 38);
            break;
          case 58:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(58, 59);
            break;
          case 60:
          case 61:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 134)
              kind = 134;
            jjCheckNAddTwoStates(59, 61);
            break;
          case 62:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(62);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 63 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  private final int jjStopStringLiteralDfa_4(int pos, long active0, long active1, long active2)
  {
    switch (pos)
    {
      default :
      return -1;
    }
  }
  private final int jjStartNfa_4(int pos, long active0, long active1, long active2)
  {
    return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0, active1, active2), pos + 1);
  }
  private int jjMoveStringLiteralDfa0_4()
  {
    switch(curChar)
    {
    case 123:
      return jjStopAtPos(0, 149);
      default :
      return jjMoveNfa_4(0, 0);
    }
  }
  private int jjMoveNfa_4(int startState, int curPos)
  {
    int startsAt = 0;
    jjnewStateCnt = 2;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
    for (;;)
    {
      if (++jjround == 0x7fffffff)
        ReInitRounds();
      if (curChar < 64)
      {
        long l = 1L << curChar;
        do
        {
          switch(jjstateSet[--i])
          {
          case 1:
            if ((0x3ff000000000000L & l) == 0L)
              break;
            kind = 172;
            jjstateSet[jjnewStateCnt++] = 1;
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else if (curChar < 128 || isVarChar(curChar))
      {
        long l = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
            // if ((0x87fffffe87fffffeL & l) == 0L)
            if (checkChar(0x87fffffe87fffffeL, l, curChar))
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(1);
            break;
          case 1:
            // if ((0x87fffffe97fffffeL & l) == 0L)
            if (checkChar(0x87fffffe97fffffeL, l, curChar))
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(1);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      else
      {
        int hiByte = (int)(curChar >> 8);
        int i1 = hiByte >> 6;
        long l1 = 1L << (hiByte & 077);
        int i2 = (curChar & 0xff) >> 6;
        long l2 = 1L << (curChar & 077);
        do
        {
          switch(jjstateSet[--i])
          {
          case 0:
          case 1:
            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
              break;
            if (kind > 172)
              kind = 172;
            jjCheckNAdd(1);
            break;
            default : break;
          }
        } while(i != startsAt);
      }
      if (kind != 0x7fffffff)
      {
        jjmatchedKind = kind;
        jjmatchedPos = curPos;
        kind = 0x7fffffff;
      }
      ++curPos;
      if ((i = jjnewStateCnt) == (startsAt = 2 - (jjnewStateCnt = startsAt)))
        return curPos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return curPos; }
    }
  }
  static final int[] jjnextStates = {
    24, 21, 25, 26, 31, 32, 35, 36, 9, 40, 41, 43, 44, 45, 47, 19, 
    22, 21, 5, 6, 9, 27, 28, 9, 35, 36, 9, 40, 41, 43, 44, 45, 
    47, 49, 50, 52, 53, 54, 56, 58, 59, 62, 49, 50, 52, 53, 54, 56, 
    11, 16, 7, 8, 29, 30, 33, 34, 37, 38, 
  };
  private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
  {
    switch(hiByte)
    {
    case 0:
      return ((jjbitVec0[i2] & l2) != 0L);
      default :
      return false;
    }
  }
  private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
  {
    switch(hiByte)
    {
    case 0:
      return ((jjbitVec0[i2] & l2) != 0L);
      default :
      if ((jjbitVec1[i1] & l1) != 0L)
        return true;
      return false;
    }
  }
  
  /** Token literal values. */
  public static final String[] jjstrLiteralImages = {
    "", "\74\77", null, "\74\77\75", "\77\76", 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, 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, null, null, null, null, "\55\76", "\72\72", "\75\76", null, 
    null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
    null, null, "\100", "\41", "\176", "\77", "\72", "\174\174", "\46\46", "\53\53", 
    "\55\55", "\53", "\55", "\52", "\57", "\134", "\46", "\174", "\136", "\45", "\74\74", 
    "\76\76", "\76\76\76", null, null, null, null, null, null, null, null, null, null, null, 
    null, "\42", "\44\173", "\44", "\42", "\74\74\74", "\44", null, null, null, null, 
    null, null, null, "\50", "\51", "\175", "\133", "\135", "\73", "\54", "\56", "\173", 
    "\76", "\74", "\75\75", "\74\75", "\76\75", "\41\75", "\74\76", "\41\75\75", 
    "\75\75\75", "\75", "\53\75", "\55\75", "\52\75", "\57\75", "\46\75", "\174\75", "\136\75", 
  "\56\75", "\45\75", "\176\75", "\74\74\75", "\76\76\75", null, };
  
  /** Lexer state names. */
  public static final String[] lexStateNames = {
    "DEFAULT",
    "PHPPARSING",
    "IN_SINGLE_LINE_COMMENT",
    "IN_VARIABLE",
    "IN_NAMESPACE",
    "IN_FORMAL_COMMENT",
    "IN_MULTI_LINE_COMMENT",
    "IN_STRING",
    "HEREDOC",
  };
  
  /** Lex State array. */
  public static final int[] jjnewLexState = {
    -1, 1, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 2, 2, 5, 6, 1, -1, 1, 1, 
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -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, -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, -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, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 
    -1, -1, -1, 7, -1, -1, 1, 8, 3, -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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
  };
  static final long[] jjtoToken = {
    0xfffffffffc00001fL, 0xe8ffffffffffffffL, 0x1fffffffe47fL, 
  };
  static final long[] jjtoSkip = {
    0x1ffffe0L, 0x0L, 0x1800L, 
  };
  static final long[] jjtoSpecial = {
    0x1fff000L, 0x0L, 0x0L, 
  };
  static final long[] jjtoMore = {
    0x2000000L, 0x0L, 0x0L, 
  };
  protected SimpleCharStream input_stream;
  private final int[] jjrounds = new int[63];
  private final int[] jjstateSet = new int[126];
  private final StringBuffer jjimage = new StringBuffer();
  private StringBuffer image = jjimage;
  private int jjimageLen;
  private int lengthOfMatch;
  protected char curChar;
  /** Constructor. */
  public PHPParserTokenManager(SimpleCharStream stream){
    if (SimpleCharStream.staticFlag)
      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
    input_stream = stream;
  }
  
  /** Constructor. */
  public PHPParserTokenManager(SimpleCharStream stream, int lexState){
    this(stream);
    SwitchTo(lexState);
  }
  
  /** Reinitialise parser. */
  public void ReInit(SimpleCharStream stream)
  {
    jjmatchedPos = jjnewStateCnt = 0;
    curLexState = defaultLexState;
    input_stream = stream;
    ReInitRounds();
  }
  private void ReInitRounds()
  {
    int i;
    jjround = 0x80000001;
    for (i = 63; i-- > 0;)
      jjrounds[i] = 0x80000000;
  }
  
  /** Reinitialise parser. */
  public void ReInit(SimpleCharStream stream, int lexState)
  {
    ReInit(stream);
    SwitchTo(lexState);
  }
  
  /** Switch to specified lex state. */
  public void SwitchTo(int lexState)
  {
    if (lexState >= 9 || lexState < 0)
      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
    else
      curLexState = lexState;
  }
  
  protected Token jjFillToken()
  {
    final Token t;
    final String curTokenImage;
    final int beginLine;
    final int endLine;
    final int beginColumn;
    final int endColumn;
    String im = jjstrLiteralImages[jjmatchedKind];
    curTokenImage = (im == null) ? input_stream.GetImage() : im;
    beginLine = input_stream.getBeginLine();
    beginColumn = input_stream.getBeginColumn();
    endLine = input_stream.getEndLine();
    endColumn = input_stream.getEndColumn();
    t = Token.newToken(jjmatchedKind, curTokenImage);
    
    t.beginLine = beginLine;
    t.endLine = endLine;
    t.beginColumn = beginColumn;
    t.endColumn = endColumn;
    
    return t;
  }
  
  int curLexState = 0;
  int defaultLexState = 0;
  int jjnewStateCnt;
  int jjround;
  int jjmatchedPos;
  int jjmatchedKind;
  
  /** Get the next Token. */
  public Token getNextToken() 
  {
    Token specialToken = null;
    Token matchedToken;
    int curPos = 0;
    
    EOFLoop :
    for (;;)
    {
      try
      {
        curChar = input_stream.BeginToken();
      }
      catch(java.io.IOException e)
      {
        jjmatchedKind = 0;
        matchedToken = jjFillToken();
        matchedToken.specialToken = specialToken;
        CommonTokenAction(matchedToken);
        return matchedToken;
      }
      image = jjimage;
      image.setLength(0);
      jjimageLen = 0;
      
      for (;;)
      {
        switch(curLexState)
        {
        case 0:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_0();
          if (jjmatchedPos == 0 && jjmatchedKind > 5)
          {
            jjmatchedKind = 5;
          }
          break;
        case 1:
          try { input_stream.backup(0);
            while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
              curChar = input_stream.BeginToken();
          }
          catch (java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_1();
          break;
        case 2:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_2();
          if (jjmatchedPos == 0 && jjmatchedKind > 22)
          {
            jjmatchedKind = 22;
          }
          break;
        case 3:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_3();
          break;
        case 4:
          try { input_stream.backup(0);
            while (curChar <= 32 && (0x100003200L & (1L << curChar)) != 0L)
              curChar = input_stream.BeginToken();
          }
          catch (java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_4();
          break;
        case 5:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_5();
          if (jjmatchedPos == 0 && jjmatchedKind > 25)
          {
            jjmatchedKind = 25;
          }
          break;
        case 6:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_6();
          if (jjmatchedPos == 0 && jjmatchedKind > 25)
          {
            jjmatchedKind = 25;
          }
          break;
        case 7:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_7();
          if (jjmatchedPos == 0 && jjmatchedKind > 140)
          {
            jjmatchedKind = 140;
          }
          break;
        case 8:
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_8();
          if (jjmatchedPos == 0 && jjmatchedKind > 140)
          {
            jjmatchedKind = 140;
          }
          break;
        }
        if (jjmatchedKind != 0x7fffffff)
        {
          if (jjmatchedPos + 1 < curPos)
            input_stream.backup(curPos - jjmatchedPos - 1);
          if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
          {
            matchedToken = jjFillToken();
            matchedToken.specialToken = specialToken;
            if (jjnewLexState[jjmatchedKind] != -1)
              curLexState = jjnewLexState[jjmatchedKind];
            CommonTokenAction(matchedToken);
            return matchedToken;
          }
          else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
          {
            if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
            {
              matchedToken = jjFillToken();
              if (specialToken == null)
                specialToken = matchedToken;
              else
              {
                matchedToken.specialToken = specialToken;
                specialToken = (specialToken.next = matchedToken);
              }
              SkipLexicalActions(matchedToken);
            }
            else
              SkipLexicalActions(null);
            if (jjnewLexState[jjmatchedKind] != -1)
              curLexState = jjnewLexState[jjmatchedKind];
            continue EOFLoop;
          }
          jjimageLen += jjmatchedPos + 1;
          if (jjnewLexState[jjmatchedKind] != -1)
            curLexState = jjnewLexState[jjmatchedKind];
          curPos = 0;
          jjmatchedKind = 0x7fffffff;
          try {
            curChar = input_stream.readChar();
            continue;
          }
          catch (java.io.IOException e1) { }
        }
        int error_line = input_stream.getEndLine();
        int error_column = input_stream.getEndColumn();
        String error_after = null;
        boolean EOFSeen = false;
        try { input_stream.readChar(); input_stream.backup(1); }
        catch (java.io.IOException e1) {
          EOFSeen = true;
          error_after = curPos <= 1 ? "" : input_stream.GetImage();
          if (curChar == '\n' || curChar == '\r') {
            error_line++;
            error_column = 0;
          }
          else
            error_column++;
        }
        if (!EOFSeen) {
          input_stream.backup(1);
          error_after = curPos <= 1 ? "" : input_stream.GetImage();
        }
        throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
      }
    }
  }
  
  void SkipLexicalActions(Token matchedToken)
  {
    switch(jjmatchedKind)
    {
    case 19 :
      image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
      input_stream.backup(1);
      break;
      default :
      break;
    }
  }
  private void jjCheckNAdd(int state)
  {
    if (jjrounds[state] != jjround)
    {
      jjstateSet[jjnewStateCnt++] = state;
      jjrounds[state] = jjround;
    }
  }
  private void jjAddStates(int start, int end)
  {
    do {
      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
    } while (start++ != end);
  }
  private void jjCheckNAddTwoStates(int state1, int state2)
  {
    jjCheckNAdd(state1);
    jjCheckNAdd(state2);
  }
  
  private void jjCheckNAddStates(int start, int end)
  {
    do {
      jjCheckNAdd(jjnextStates[start]);
    } while (start++ != end);
  }
  
  // funa edit
  // 変数で利用して良い文字かどうかを判定する
  private static boolean isVarChar(char c) {
    if( 
      ( c<='\u007e' )   // 英数字
    || ( c=='\u00a5' )  // \記号
    || ( c=='\u203e' )  // ~記号
    )
    {
      return false;
    } else if ( c>='\uff61' && c<='\uff9f' ) { // 半角カナ
      return true;
    } else {
      return true;
    }
  }
  
  // funa edit
  // 正直、何の文字を探しているかは不明・・・。
  private static boolean checkChar(long flag, long l, char c) {
    if (c >= 128) {
      return false;
    }
    return (flag & l) == 0L;
  }
  
}
