package org.nfunk.jep;

import java.io.IOException;
import java.io.PrintStream;

public class ParserTokenManager implements ParserConstants {
  public PrintStream debugStream = System.out;
  
  static final long[] jjbitVec0 = new long[] { -2L, -1L, -1L, -1L };
  
  static final long[] jjbitVec2 = new long[] { 0L, 0L, -1L, -1L };
  
  static final long[] jjbitVec3 = new long[] { 2301339413881290750L, -16384L, 4294967295L, 432345564227567616L };
  
  static final long[] jjbitVec4 = new long[] { 0L, 0L, 0L, -36028797027352577L };
  
  static final long[] jjbitVec5 = new long[] { 0L, -1L, -1L, -1L };
  
  static final long[] jjbitVec6 = new long[] { -1L, -1L, 65535L, 0L };
  
  static final long[] jjbitVec7 = new long[] { -1L, -1L, 0L, 0L };
  
  static final long[] jjbitVec8 = new long[] { 70368744177663L, 0L, 0L, 0L };
  
  static final int[] jjnextStates = new int[] { 
      14, 15, 17, 25, 26, 27, 32, 33, 13, 18, 
      6, 7, 9, 21, 23, 3, 4, 30, 31, 34, 
      35 };
  
  public static final String[] jjstrLiteralImages = new String[] { 
      "", null, null, null, null, null, null, null, null, null, 
      null, null, null, null, null, null, null, null, "=", ";", 
      ",", ">", "<", "==", "<=", ">=", "!=", "&&", "||", "+", 
      "-", "*", ".", "/", "%", "!", "^", "^^", "[", "]", 
      "(", ")" };
  
  public static final String[] lexStateNames = new String[] { "NO_DOT_IN_IDENTIFIERS", "DEFAULT" };
  
  public static final int[] jjnewLexState = new int[] { 
      -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 };
  
  static final long[] jjtoToken = new long[] { 4398046288513L };
  
  static final long[] jjtoSkip = new long[] { 126L };
  
  protected JavaCharStream input_stream;
  
  private final int[] jjrounds = new int[36];
  
  private final int[] jjstateSet = new int[72];
  
  protected char curChar;
  
  int curLexState = 1;
  
  int defaultLexState = 1;
  
  int jjnewStateCnt;
  
  int jjround;
  
  int jjmatchedPos;
  
  int jjmatchedKind;
  
  public void setDebugStream(PrintStream paramPrintStream) {
    this.debugStream = paramPrintStream;
  }
  
  private final int jjStopStringLiteralDfa_1(int paramInt, long paramLong) {
    switch (paramInt) {
      case 0:
        return ((paramLong & 0x100000000L) != 0L) ? 1 : (((paramLong & 0x200000000L) != 0L) ? 13 : -1);
    } 
    return -1;
  }
  
  private final int jjStartNfa_1(int paramInt, long paramLong) {
    return jjMoveNfa_1(jjStopStringLiteralDfa_1(paramInt, paramLong), paramInt + 1);
  }
  
  private final int jjStopAtPos(int paramInt1, int paramInt2) {
    this.jjmatchedKind = paramInt2;
    this.jjmatchedPos = paramInt1;
    return paramInt1 + 1;
  }
  
  private final int jjStartNfaWithStates_1(int paramInt1, int paramInt2, int paramInt3) {
    this.jjmatchedKind = paramInt2;
    this.jjmatchedPos = paramInt1;
    try {
      this.curChar = this.input_stream.readChar();
    } catch (IOException iOException) {
      return paramInt1 + 1;
    } 
    return jjMoveNfa_1(paramInt3, paramInt1 + 1);
  }
  
  private final int jjMoveStringLiteralDfa0_1() {
    switch (this.curChar) {
      case '!':
        this.jjmatchedKind = 35;
        return jjMoveStringLiteralDfa1_1(67108864L);
      case '%':
        return jjStopAtPos(0, 34);
      case '&':
        return jjMoveStringLiteralDfa1_1(134217728L);
      case '(':
        return jjStopAtPos(0, 40);
      case ')':
        return jjStopAtPos(0, 41);
      case '*':
        return jjStopAtPos(0, 31);
      case '+':
        return jjStopAtPos(0, 29);
      case ',':
        return jjStopAtPos(0, 20);
      case '-':
        return jjStopAtPos(0, 30);
      case '.':
        return jjStartNfaWithStates_1(0, 32, 1);
      case '/':
        return jjStartNfaWithStates_1(0, 33, 13);
      case ';':
        return jjStopAtPos(0, 19);
      case '<':
        this.jjmatchedKind = 22;
        return jjMoveStringLiteralDfa1_1(16777216L);
      case '=':
        this.jjmatchedKind = 18;
        return jjMoveStringLiteralDfa1_1(8388608L);
      case '>':
        this.jjmatchedKind = 21;
        return jjMoveStringLiteralDfa1_1(33554432L);
      case '[':
        return jjStopAtPos(0, 38);
      case ']':
        return jjStopAtPos(0, 39);
      case '^':
        this.jjmatchedKind = 36;
        return jjMoveStringLiteralDfa1_1(137438953472L);
      case '|':
        return jjMoveStringLiteralDfa1_1(268435456L);
    } 
    return jjMoveNfa_1(0, 0);
  }
  
  private final int jjMoveStringLiteralDfa1_1(long paramLong) {
    try {
      this.curChar = this.input_stream.readChar();
    } catch (IOException iOException) {
      jjStopStringLiteralDfa_1(0, paramLong);
      return 1;
    } 
    switch (this.curChar) {
      case '&':
        if ((paramLong & 0x8000000L) != 0L)
          return jjStopAtPos(1, 27); 
        break;
      case '=':
        if ((paramLong & 0x800000L) != 0L)
          return jjStopAtPos(1, 23); 
        if ((paramLong & 0x1000000L) != 0L)
          return jjStopAtPos(1, 24); 
        if ((paramLong & 0x2000000L) != 0L)
          return jjStopAtPos(1, 25); 
        if ((paramLong & 0x4000000L) != 0L)
          return jjStopAtPos(1, 26); 
        break;
      case '^':
        if ((paramLong & 0x2000000000L) != 0L)
          return jjStopAtPos(1, 37); 
        break;
      case '|':
        if ((paramLong & 0x10000000L) != 0L)
          return jjStopAtPos(1, 28); 
        break;
    } 
    return jjStartNfa_1(0, paramLong);
  }
  
  private final void jjCheckNAdd(int paramInt) {
    if (this.jjrounds[paramInt] != this.jjround) {
      this.jjstateSet[this.jjnewStateCnt++] = paramInt;
      this.jjrounds[paramInt] = this.jjround;
    } 
  }
  
  private final void jjAddStates(int paramInt1, int paramInt2) {
    do {
      this.jjstateSet[this.jjnewStateCnt++] = jjnextStates[paramInt1];
    } while (paramInt1++ != paramInt2);
  }
  
  private final void jjCheckNAddTwoStates(int paramInt1, int paramInt2) {
    jjCheckNAdd(paramInt1);
    jjCheckNAdd(paramInt2);
  }
  
  private final void jjCheckNAddStates(int paramInt1, int paramInt2) {
    do {
      jjCheckNAdd(jjnextStates[paramInt1]);
    } while (paramInt1++ != paramInt2);
  }
  
  private final void jjCheckNAddStates(int paramInt) {
    jjCheckNAdd(jjnextStates[paramInt]);
    jjCheckNAdd(jjnextStates[paramInt + 1]);
  }
  
  private final int jjMoveNfa_1(int paramInt1, int paramInt2) {
    int i = 0;
    this.jjnewStateCnt = 36;
    int j = 1;
    this.jjstateSet[0] = paramInt1;
    int k = Integer.MAX_VALUE;
    while (true) {
      if (++this.jjround == Integer.MAX_VALUE)
        ReInitRounds(); 
      if (this.curChar < '@') {
        long l = 1L << this.curChar;
        do {
          switch (this.jjstateSet[--j]) {
            case 13:
              if (this.curChar == '*') {
                jjCheckNAddTwoStates(19, 20);
                break;
              } 
              if (this.curChar == '/')
                jjCheckNAddStates(0, 2); 
              break;
            case 0:
              if ((0x3FF000000000000L & l) != 0L) {
                if (k > 7)
                  k = 7; 
                jjCheckNAddStates(3, 7);
                break;
              } 
              if (this.curChar == '/') {
                jjAddStates(8, 9);
                break;
              } 
              if (this.curChar == '$') {
                if (k > 12)
                  k = 12; 
                jjCheckNAdd(11);
                break;
              } 
              if (this.curChar == '"') {
                jjCheckNAddStates(10, 12);
                break;
              } 
              if (this.curChar == '.')
                jjCheckNAdd(1); 
              break;
            case 1:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(1, 2);
              break;
            case 3:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(4); 
              break;
            case 4:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(4);
              break;
            case 5:
              if (this.curChar == '"')
                jjCheckNAddStates(10, 12); 
              break;
            case 6:
              if ((0xFFFFFFFBFFFFDBFFL & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 8:
              if ((0x8400000000L & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 9:
              if (this.curChar == '"' && k > 11)
                k = 11; 
              break;
            case 10:
              if (this.curChar != '$')
                break; 
              if (k > 12)
                k = 12; 
              jjCheckNAdd(11);
              break;
            case 11:
              if ((0x3FF401000000000L & l) == 0L)
                break; 
              if (k > 12)
                k = 12; 
              jjCheckNAdd(11);
              break;
            case 12:
              if (this.curChar == '/')
                jjAddStates(8, 9); 
              break;
            case 14:
              if ((0xFFFFFFFFFFFFDBFFL & l) != 0L)
                jjCheckNAddStates(0, 2); 
              break;
            case 15:
              if ((0x2400L & l) != 0L && k > 5)
                k = 5; 
              break;
            case 16:
              if (this.curChar == '\n' && k > 5)
                k = 5; 
              break;
            case 17:
              if (this.curChar == '\r')
                this.jjstateSet[this.jjnewStateCnt++] = 16; 
              break;
            case 18:
              if (this.curChar == '*')
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 19:
              if ((0xFFFFFBFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 20:
              if (this.curChar == '*')
                jjAddStates(13, 14); 
              break;
            case 21:
              if ((0xFFFF7FFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(22, 20); 
              break;
            case 22:
              if ((0xFFFFFBFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(22, 20); 
              break;
            case 23:
              if (this.curChar == '/' && k > 6)
                k = 6; 
              break;
            case 24:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 7)
                k = 7; 
              jjCheckNAddStates(3, 7);
              break;
            case 25:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 7)
                k = 7; 
              jjCheckNAdd(25);
              break;
            case 26:
              if ((0x3FF000000000000L & l) != 0L)
                jjCheckNAddTwoStates(26, 27); 
              break;
            case 27:
              if (this.curChar != '.')
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(28, 29);
              break;
            case 28:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(28, 29);
              break;
            case 30:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(31); 
              break;
            case 31:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(31);
              break;
            case 32:
              if ((0x3FF000000000000L & l) != 0L)
                jjCheckNAddTwoStates(32, 33); 
              break;
            case 34:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(35); 
              break;
            case 35:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(35);
              break;
          } 
        } while (j != i);
      } else if (this.curChar < '') {
        long l = 1L << (this.curChar & 0x3F);
        do {
          switch (this.jjstateSet[--j]) {
            case 0:
            case 11:
              if ((0x7FFFFFE87FFFFFEL & l) == 0L)
                break; 
              if (k > 12)
                k = 12; 
              jjCheckNAdd(11);
              break;
            case 2:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(15, 16); 
              break;
            case 6:
              if ((0xFFFFFFFFEFFFFFFFL & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 7:
              if (this.curChar == '\\')
                this.jjstateSet[this.jjnewStateCnt++] = 8; 
              break;
            case 8:
              if ((0x14404410000000L & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 14:
              jjAddStates(0, 2);
              break;
            case 19:
              jjCheckNAddTwoStates(19, 20);
              break;
            case 21:
            case 22:
              jjCheckNAddTwoStates(22, 20);
              break;
            case 29:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(17, 18); 
              break;
            case 33:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(19, 20); 
              break;
          } 
        } while (j != i);
      } else {
        int m = this.curChar >> 8;
        int n = m >> 6;
        long l1 = 1L << (m & 0x3F);
        int i1 = (this.curChar & 0xFF) >> 6;
        long l2 = 1L << (this.curChar & 0x3F);
        do {
          switch (this.jjstateSet[--j]) {
            case 0:
            case 11:
              if (!jjCanMove_1(m, n, i1, l1, l2))
                break; 
              if (k > 12)
                k = 12; 
              jjCheckNAdd(11);
              break;
            case 6:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjAddStates(10, 12); 
              break;
            case 14:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjAddStates(0, 2); 
              break;
            case 19:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 21:
            case 22:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjCheckNAddTwoStates(22, 20); 
              break;
          } 
        } while (j != i);
      } 
      if (k != Integer.MAX_VALUE) {
        this.jjmatchedKind = k;
        this.jjmatchedPos = paramInt2;
        k = Integer.MAX_VALUE;
      } 
      paramInt2++;
      if ((j = this.jjnewStateCnt) == (i = 36 - (this.jjnewStateCnt = i)))
        return paramInt2; 
      try {
        this.curChar = this.input_stream.readChar();
      } catch (IOException iOException) {
        return paramInt2;
      } 
    } 
  }
  
  private final int jjStopStringLiteralDfa_0(int paramInt, long paramLong) {
    switch (paramInt) {
      case 0:
        return ((paramLong & 0x100000000L) != 0L) ? 1 : (((paramLong & 0x200000000L) != 0L) ? 13 : -1);
    } 
    return -1;
  }
  
  private final int jjStartNfa_0(int paramInt, long paramLong) {
    return jjMoveNfa_0(jjStopStringLiteralDfa_0(paramInt, paramLong), paramInt + 1);
  }
  
  private final int jjStartNfaWithStates_0(int paramInt1, int paramInt2, int paramInt3) {
    this.jjmatchedKind = paramInt2;
    this.jjmatchedPos = paramInt1;
    try {
      this.curChar = this.input_stream.readChar();
    } catch (IOException iOException) {
      return paramInt1 + 1;
    } 
    return jjMoveNfa_0(paramInt3, paramInt1 + 1);
  }
  
  private final int jjMoveStringLiteralDfa0_0() {
    switch (this.curChar) {
      case '!':
        this.jjmatchedKind = 35;
        return jjMoveStringLiteralDfa1_0(67108864L);
      case '%':
        return jjStopAtPos(0, 34);
      case '&':
        return jjMoveStringLiteralDfa1_0(134217728L);
      case '(':
        return jjStopAtPos(0, 40);
      case ')':
        return jjStopAtPos(0, 41);
      case '*':
        return jjStopAtPos(0, 31);
      case '+':
        return jjStopAtPos(0, 29);
      case ',':
        return jjStopAtPos(0, 20);
      case '-':
        return jjStopAtPos(0, 30);
      case '.':
        return jjStartNfaWithStates_0(0, 32, 1);
      case '/':
        return jjStartNfaWithStates_0(0, 33, 13);
      case ';':
        return jjStopAtPos(0, 19);
      case '<':
        this.jjmatchedKind = 22;
        return jjMoveStringLiteralDfa1_0(16777216L);
      case '=':
        this.jjmatchedKind = 18;
        return jjMoveStringLiteralDfa1_0(8388608L);
      case '>':
        this.jjmatchedKind = 21;
        return jjMoveStringLiteralDfa1_0(33554432L);
      case '[':
        return jjStopAtPos(0, 38);
      case ']':
        return jjStopAtPos(0, 39);
      case '^':
        this.jjmatchedKind = 36;
        return jjMoveStringLiteralDfa1_0(137438953472L);
      case '|':
        return jjMoveStringLiteralDfa1_0(268435456L);
    } 
    return jjMoveNfa_0(0, 0);
  }
  
  private final int jjMoveStringLiteralDfa1_0(long paramLong) {
    try {
      this.curChar = this.input_stream.readChar();
    } catch (IOException iOException) {
      jjStopStringLiteralDfa_0(0, paramLong);
      return 1;
    } 
    switch (this.curChar) {
      case '&':
        if ((paramLong & 0x8000000L) != 0L)
          return jjStopAtPos(1, 27); 
        break;
      case '=':
        if ((paramLong & 0x800000L) != 0L)
          return jjStopAtPos(1, 23); 
        if ((paramLong & 0x1000000L) != 0L)
          return jjStopAtPos(1, 24); 
        if ((paramLong & 0x2000000L) != 0L)
          return jjStopAtPos(1, 25); 
        if ((paramLong & 0x4000000L) != 0L)
          return jjStopAtPos(1, 26); 
        break;
      case '^':
        if ((paramLong & 0x2000000000L) != 0L)
          return jjStopAtPos(1, 37); 
        break;
      case '|':
        if ((paramLong & 0x10000000L) != 0L)
          return jjStopAtPos(1, 28); 
        break;
    } 
    return jjStartNfa_0(0, paramLong);
  }
  
  private final int jjMoveNfa_0(int paramInt1, int paramInt2) {
    int i = 0;
    this.jjnewStateCnt = 36;
    int j = 1;
    this.jjstateSet[0] = paramInt1;
    int k = Integer.MAX_VALUE;
    while (true) {
      if (++this.jjround == Integer.MAX_VALUE)
        ReInitRounds(); 
      if (this.curChar < '@') {
        long l = 1L << this.curChar;
        do {
          switch (this.jjstateSet[--j]) {
            case 13:
              if (this.curChar == '*') {
                jjCheckNAddTwoStates(19, 20);
                break;
              } 
              if (this.curChar == '/')
                jjCheckNAddStates(0, 2); 
              break;
            case 0:
              if ((0x3FF000000000000L & l) != 0L) {
                if (k > 7)
                  k = 7; 
                jjCheckNAddStates(3, 7);
                break;
              } 
              if (this.curChar == '/') {
                jjAddStates(8, 9);
                break;
              } 
              if (this.curChar == '$') {
                if (k > 15)
                  k = 15; 
                jjCheckNAdd(11);
                break;
              } 
              if (this.curChar == '"') {
                jjCheckNAddStates(10, 12);
                break;
              } 
              if (this.curChar == '.')
                jjCheckNAdd(1); 
              break;
            case 1:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(1, 2);
              break;
            case 3:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(4); 
              break;
            case 4:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(4);
              break;
            case 5:
              if (this.curChar == '"')
                jjCheckNAddStates(10, 12); 
              break;
            case 6:
              if ((0xFFFFFFFBFFFFDBFFL & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 8:
              if ((0x8400000000L & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 9:
              if (this.curChar == '"' && k > 11)
                k = 11; 
              break;
            case 10:
              if (this.curChar != '$')
                break; 
              if (k > 15)
                k = 15; 
              jjCheckNAdd(11);
              break;
            case 11:
              if ((0x3FF001000000000L & l) == 0L)
                break; 
              if (k > 15)
                k = 15; 
              jjCheckNAdd(11);
              break;
            case 12:
              if (this.curChar == '/')
                jjAddStates(8, 9); 
              break;
            case 14:
              if ((0xFFFFFFFFFFFFDBFFL & l) != 0L)
                jjCheckNAddStates(0, 2); 
              break;
            case 15:
              if ((0x2400L & l) != 0L && k > 5)
                k = 5; 
              break;
            case 16:
              if (this.curChar == '\n' && k > 5)
                k = 5; 
              break;
            case 17:
              if (this.curChar == '\r')
                this.jjstateSet[this.jjnewStateCnt++] = 16; 
              break;
            case 18:
              if (this.curChar == '*')
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 19:
              if ((0xFFFFFBFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 20:
              if (this.curChar == '*')
                jjAddStates(13, 14); 
              break;
            case 21:
              if ((0xFFFF7FFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(22, 20); 
              break;
            case 22:
              if ((0xFFFFFBFFFFFFFFFFL & l) != 0L)
                jjCheckNAddTwoStates(22, 20); 
              break;
            case 23:
              if (this.curChar == '/' && k > 6)
                k = 6; 
              break;
            case 24:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 7)
                k = 7; 
              jjCheckNAddStates(3, 7);
              break;
            case 25:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 7)
                k = 7; 
              jjCheckNAdd(25);
              break;
            case 26:
              if ((0x3FF000000000000L & l) != 0L)
                jjCheckNAddTwoStates(26, 27); 
              break;
            case 27:
              if (this.curChar != '.')
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(28, 29);
              break;
            case 28:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAddTwoStates(28, 29);
              break;
            case 30:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(31); 
              break;
            case 31:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(31);
              break;
            case 32:
              if ((0x3FF000000000000L & l) != 0L)
                jjCheckNAddTwoStates(32, 33); 
              break;
            case 34:
              if ((0x280000000000L & l) != 0L)
                jjCheckNAdd(35); 
              break;
            case 35:
              if ((0x3FF000000000000L & l) == 0L)
                break; 
              if (k > 9)
                k = 9; 
              jjCheckNAdd(35);
              break;
          } 
        } while (j != i);
      } else if (this.curChar < '') {
        long l = 1L << (this.curChar & 0x3F);
        do {
          switch (this.jjstateSet[--j]) {
            case 0:
            case 11:
              if ((0x7FFFFFE87FFFFFEL & l) == 0L)
                break; 
              if (k > 15)
                k = 15; 
              jjCheckNAdd(11);
              break;
            case 2:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(15, 16); 
              break;
            case 6:
              if ((0xFFFFFFFFEFFFFFFFL & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 7:
              if (this.curChar == '\\')
                this.jjstateSet[this.jjnewStateCnt++] = 8; 
              break;
            case 8:
              if ((0x14404410000000L & l) != 0L)
                jjCheckNAddStates(10, 12); 
              break;
            case 14:
              jjAddStates(0, 2);
              break;
            case 19:
              jjCheckNAddTwoStates(19, 20);
              break;
            case 21:
            case 22:
              jjCheckNAddTwoStates(22, 20);
              break;
            case 29:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(17, 18); 
              break;
            case 33:
              if ((0x2000000020L & l) != 0L)
                jjAddStates(19, 20); 
              break;
          } 
        } while (j != i);
      } else {
        int m = this.curChar >> 8;
        int n = m >> 6;
        long l1 = 1L << (m & 0x3F);
        int i1 = (this.curChar & 0xFF) >> 6;
        long l2 = 1L << (this.curChar & 0x3F);
        do {
          switch (this.jjstateSet[--j]) {
            case 0:
            case 11:
              if (!jjCanMove_1(m, n, i1, l1, l2))
                break; 
              if (k > 15)
                k = 15; 
              jjCheckNAdd(11);
              break;
            case 6:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjAddStates(10, 12); 
              break;
            case 14:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjAddStates(0, 2); 
              break;
            case 19:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjCheckNAddTwoStates(19, 20); 
              break;
            case 21:
            case 22:
              if (jjCanMove_0(m, n, i1, l1, l2))
                jjCheckNAddTwoStates(22, 20); 
              break;
          } 
        } while (j != i);
      } 
      if (k != Integer.MAX_VALUE) {
        this.jjmatchedKind = k;
        this.jjmatchedPos = paramInt2;
        k = Integer.MAX_VALUE;
      } 
      paramInt2++;
      if ((j = this.jjnewStateCnt) == (i = 36 - (this.jjnewStateCnt = i)))
        return paramInt2; 
      try {
        this.curChar = this.input_stream.readChar();
      } catch (IOException iOException) {
        return paramInt2;
      } 
    } 
  }
  
  private static final boolean jjCanMove_0(int paramInt1, int paramInt2, int paramInt3, long paramLong1, long paramLong2) {
    switch (paramInt1) {
      case 0:
        return ((jjbitVec2[paramInt3] & paramLong2) != 0L);
    } 
    return ((jjbitVec0[paramInt2] & paramLong1) != 0L);
  }
  
  private static final boolean jjCanMove_1(int paramInt1, int paramInt2, int paramInt3, long paramLong1, long paramLong2) {
    switch (paramInt1) {
      case 0:
        return ((jjbitVec4[paramInt3] & paramLong2) != 0L);
      case 48:
        return ((jjbitVec5[paramInt3] & paramLong2) != 0L);
      case 49:
        return ((jjbitVec6[paramInt3] & paramLong2) != 0L);
      case 51:
        return ((jjbitVec7[paramInt3] & paramLong2) != 0L);
      case 61:
        return ((jjbitVec8[paramInt3] & paramLong2) != 0L);
    } 
    return ((jjbitVec3[paramInt2] & paramLong1) != 0L);
  }
  
  public ParserTokenManager(JavaCharStream paramJavaCharStream) {
    this.input_stream = paramJavaCharStream;
  }
  
  public ParserTokenManager(JavaCharStream paramJavaCharStream, int paramInt) {
    this(paramJavaCharStream);
    SwitchTo(paramInt);
  }
  
  public void ReInit(JavaCharStream paramJavaCharStream) {
    this.jjmatchedPos = this.jjnewStateCnt = 0;
    this.curLexState = this.defaultLexState;
    this.input_stream = paramJavaCharStream;
    ReInitRounds();
  }
  
  private final void ReInitRounds() {
    this.jjround = -2147483647;
    int i = 36;
    while (i-- > 0)
      this.jjrounds[i] = Integer.MIN_VALUE; 
  }
  
  public void ReInit(JavaCharStream paramJavaCharStream, int paramInt) {
    ReInit(paramJavaCharStream);
    SwitchTo(paramInt);
  }
  
  public void SwitchTo(int paramInt) {
    if (paramInt >= 2 || paramInt < 0)
      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + paramInt + ". State unchanged.", 2); 
    this.curLexState = paramInt;
  }
  
  protected Token jjFillToken() {
    Token token = Token.newToken(this.jjmatchedKind);
    token.kind = this.jjmatchedKind;
    String str = jjstrLiteralImages[this.jjmatchedKind];
    token.image = (str == null) ? this.input_stream.GetImage() : str;
    token.beginLine = this.input_stream.getBeginLine();
    token.beginColumn = this.input_stream.getBeginColumn();
    token.endLine = this.input_stream.getEndLine();
    token.endColumn = this.input_stream.getEndColumn();
    return token;
  }
  
  public Token getNextToken() {
    // Byte code:
    //   0: aconst_null
    //   1: astore_2
    //   2: iconst_0
    //   3: istore #4
    //   5: aload_0
    //   6: aload_0
    //   7: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   10: invokevirtual BeginToken : ()C
    //   13: putfield curChar : C
    //   16: goto -> 33
    //   19: astore #5
    //   21: aload_0
    //   22: iconst_0
    //   23: putfield jjmatchedKind : I
    //   26: aload_0
    //   27: invokevirtual jjFillToken : ()Lorg/nfunk/jep/Token;
    //   30: astore_3
    //   31: aload_3
    //   32: areturn
    //   33: aload_0
    //   34: getfield curLexState : I
    //   37: lookupswitch default -> 209, 0 -> 64, 1 -> 138
    //   64: aload_0
    //   65: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   68: iconst_0
    //   69: invokevirtual backup : (I)V
    //   72: aload_0
    //   73: getfield curChar : C
    //   76: bipush #32
    //   78: if_icmpgt -> 110
    //   81: ldc2_w 4294977024
    //   84: lconst_1
    //   85: aload_0
    //   86: getfield curChar : C
    //   89: lshl
    //   90: land
    //   91: lconst_0
    //   92: lcmp
    //   93: ifeq -> 110
    //   96: aload_0
    //   97: aload_0
    //   98: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   101: invokevirtual BeginToken : ()C
    //   104: putfield curChar : C
    //   107: goto -> 72
    //   110: goto -> 118
    //   113: astore #5
    //   115: goto -> 5
    //   118: aload_0
    //   119: ldc 2147483647
    //   121: putfield jjmatchedKind : I
    //   124: aload_0
    //   125: iconst_0
    //   126: putfield jjmatchedPos : I
    //   129: aload_0
    //   130: invokespecial jjMoveStringLiteralDfa0_0 : ()I
    //   133: istore #4
    //   135: goto -> 209
    //   138: aload_0
    //   139: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   142: iconst_0
    //   143: invokevirtual backup : (I)V
    //   146: aload_0
    //   147: getfield curChar : C
    //   150: bipush #32
    //   152: if_icmpgt -> 184
    //   155: ldc2_w 4294977024
    //   158: lconst_1
    //   159: aload_0
    //   160: getfield curChar : C
    //   163: lshl
    //   164: land
    //   165: lconst_0
    //   166: lcmp
    //   167: ifeq -> 184
    //   170: aload_0
    //   171: aload_0
    //   172: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   175: invokevirtual BeginToken : ()C
    //   178: putfield curChar : C
    //   181: goto -> 146
    //   184: goto -> 192
    //   187: astore #5
    //   189: goto -> 5
    //   192: aload_0
    //   193: ldc 2147483647
    //   195: putfield jjmatchedKind : I
    //   198: aload_0
    //   199: iconst_0
    //   200: putfield jjmatchedPos : I
    //   203: aload_0
    //   204: invokespecial jjMoveStringLiteralDfa0_1 : ()I
    //   207: istore #4
    //   209: aload_0
    //   210: getfield jjmatchedKind : I
    //   213: ldc 2147483647
    //   215: if_icmpeq -> 329
    //   218: aload_0
    //   219: getfield jjmatchedPos : I
    //   222: iconst_1
    //   223: iadd
    //   224: iload #4
    //   226: if_icmpge -> 245
    //   229: aload_0
    //   230: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   233: iload #4
    //   235: aload_0
    //   236: getfield jjmatchedPos : I
    //   239: isub
    //   240: iconst_1
    //   241: isub
    //   242: invokevirtual backup : (I)V
    //   245: getstatic org/nfunk/jep/ParserTokenManager.jjtoToken : [J
    //   248: aload_0
    //   249: getfield jjmatchedKind : I
    //   252: bipush #6
    //   254: ishr
    //   255: laload
    //   256: lconst_1
    //   257: aload_0
    //   258: getfield jjmatchedKind : I
    //   261: bipush #63
    //   263: iand
    //   264: lshl
    //   265: land
    //   266: lconst_0
    //   267: lcmp
    //   268: ifeq -> 302
    //   271: aload_0
    //   272: invokevirtual jjFillToken : ()Lorg/nfunk/jep/Token;
    //   275: astore_3
    //   276: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I
    //   279: aload_0
    //   280: getfield jjmatchedKind : I
    //   283: iaload
    //   284: iconst_m1
    //   285: if_icmpeq -> 300
    //   288: aload_0
    //   289: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I
    //   292: aload_0
    //   293: getfield jjmatchedKind : I
    //   296: iaload
    //   297: putfield curLexState : I
    //   300: aload_3
    //   301: areturn
    //   302: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I
    //   305: aload_0
    //   306: getfield jjmatchedKind : I
    //   309: iaload
    //   310: iconst_m1
    //   311: if_icmpeq -> 5
    //   314: aload_0
    //   315: getstatic org/nfunk/jep/ParserTokenManager.jjnewLexState : [I
    //   318: aload_0
    //   319: getfield jjmatchedKind : I
    //   322: iaload
    //   323: putfield curLexState : I
    //   326: goto -> 5
    //   329: aload_0
    //   330: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   333: invokevirtual getEndLine : ()I
    //   336: istore #5
    //   338: aload_0
    //   339: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   342: invokevirtual getEndColumn : ()I
    //   345: istore #6
    //   347: aconst_null
    //   348: astore #7
    //   350: iconst_0
    //   351: istore #8
    //   353: aload_0
    //   354: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   357: invokevirtual readChar : ()C
    //   360: pop
    //   361: aload_0
    //   362: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   365: iconst_1
    //   366: invokevirtual backup : (I)V
    //   369: goto -> 427
    //   372: astore #9
    //   374: iconst_1
    //   375: istore #8
    //   377: iload #4
    //   379: iconst_1
    //   380: if_icmpgt -> 388
    //   383: ldc ''
    //   385: goto -> 395
    //   388: aload_0
    //   389: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   392: invokevirtual GetImage : ()Ljava/lang/String;
    //   395: astore #7
    //   397: aload_0
    //   398: getfield curChar : C
    //   401: bipush #10
    //   403: if_icmpeq -> 415
    //   406: aload_0
    //   407: getfield curChar : C
    //   410: bipush #13
    //   412: if_icmpne -> 424
    //   415: iinc #5, 1
    //   418: iconst_0
    //   419: istore #6
    //   421: goto -> 427
    //   424: iinc #6, 1
    //   427: iload #8
    //   429: ifne -> 460
    //   432: aload_0
    //   433: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   436: iconst_1
    //   437: invokevirtual backup : (I)V
    //   440: iload #4
    //   442: iconst_1
    //   443: if_icmpgt -> 451
    //   446: ldc ''
    //   448: goto -> 458
    //   451: aload_0
    //   452: getfield input_stream : Lorg/nfunk/jep/JavaCharStream;
    //   455: invokevirtual GetImage : ()Ljava/lang/String;
    //   458: astore #7
    //   460: new org/nfunk/jep/TokenMgrError
    //   463: dup
    //   464: iload #8
    //   466: aload_0
    //   467: getfield curLexState : I
    //   470: iload #5
    //   472: iload #6
    //   474: aload #7
    //   476: aload_0
    //   477: getfield curChar : C
    //   480: iconst_0
    //   481: invokespecial <init> : (ZIIILjava/lang/String;CI)V
    //   484: athrow
    // Exception table:
    //   from	to	target	type
    //   5	16	19	java/io/IOException
    //   64	110	113	java/io/IOException
    //   138	184	187	java/io/IOException
    //   353	369	372	java/io/IOException
  }
}
