/* Generated By:JavaCC: Do not edit this line. PantanalTokenManager.java */

public class PantanalTokenManager implements PantanalConstants
{
  protected static final String jjadd_escapes(String str) {
    String retval = "";
    char ch;
    for (int i = 0; i < str.length(); i++) {
      if ((ch = str.charAt(i)) == 0) continue;
      if (ch == '\b') {
        retval += "\\b";
      } else if (ch == '\t') {
        retval += "\\t";
      } else if (ch == '\n') {
        retval += "\\n";
      } else if (ch == '\f') {
        retval += "\\f";
      } else if (ch == '\r') {
        retval += "\\r";
      } else if (ch == '\"') {
        retval += "\\\"";
      } else if (ch == '\'') {
        retval += "\\\'";
      } else if (ch == '\\') {
        retval += "\\\\";
      } else if (ch < 0x20 || ch > 0x7e) {
        String s = "0000" + Integer.toString(ch, 16);
        retval += "\\u" + s.substring(s.length() - 4, s.length());
      } else {
        retval += ch;
      }
    }
    return retval;
  }

static private final void jjMoveNfa_0(int[] oldStates, int[] newStates)
{
   int j, k;
   MainLoop :
   for (;;)
   {
      if (curChar < 64)
      {
         int i = jjnewStateCnt;
         jjnewStateCnt = 0;
         jjround++;
         long l = 1L << curChar;
         do
         {
            switch(oldStates[--i])
            {
               case 0:
                  if ((0x3ff000000000000L & l) != 0L)
                  {
                     if (jjcurKind > 4)
                        jjcurKind = 4;
                     newStates[jjnewStateCnt + 0] = 0;
                     jjnewStateCnt += 1;
                     return;
                  }
                  else continue;
               case 1:
                  if ((0x840000000000L & l) != 0L)
                  {
                     if (jjcurKind > 5)
                        jjcurKind = 5;
                     return;
                  }
                  else continue;
               case 2:
                  if ((0x280000000000L & l) != 0L)
                  {
                     if (jjcurKind > 6)
                        jjcurKind = 6;
                     return;
                  }
                  else continue;
               default : continue;
            }
         } while(i != 0);
      }
      else if (curChar < 128)
      {
   jjnewStateCnt = 0;
   return;
      }
      else
      {
         jjnewStateCnt = 0;
         return;
      }
      return;
   }
}
static int[] StopStringLiteralDfa_0(int pos, long active0)
{
   switch (pos)
   {
      default : 
         return null;
   }
}
static void jjStartNfa_0(int pos, long active0)
{
   if ((jjstartStateSet = StopStringLiteralDfa_0(pos, active0)) != null)
   {
      jjnewStateCnt = jjstartStateSet.length;
      jjMoveNfa_0(jjstartStateSet, jjstateSet2);
      if (jjcurKind != 2147483647)
      {
         matchedToken.kind = jjcurKind;
         jjmatchedPos = pos + 1;
         jjcurKind = 2147483647;
      }
   }
   return;
}
static long jjnewActive_00 = 0L, jjoldActive_00 = 0L;
static private final void jjMoveStringLiteralDfa0_0() throws java.io.IOException
{
   ReturnLoop:
   for (;;)
   {
    MainLoop:
    for (;;)
    {
         switch(curChar)
         {
            case 41: 
               matchedToken.kind = 9;
               break ReturnLoop;
            case 40: 
               matchedToken.kind = 8;
               break ReturnLoop;
            case 32: 
               matchedToken.kind = 1;
               break ReturnLoop;
            case 116: 
               jjoldActive_00 = 0x800L;
               break;
            case 13: 
               matchedToken.kind = 3;
               break ReturnLoop;
            case 10: 
               matchedToken.kind = 7;
               break ReturnLoop;
            case 9: 
               matchedToken.kind = 2;
               break ReturnLoop;
            case 105: 
               jjoldActive_00 = 0x400L;
               break;
            case 101: 
               jjoldActive_00 = 0x1000L;
               break;
            default : 
               curPos =  1;
               if (curChar < 128)
                  if ((jjstartStateSet = jjinitStates_0[curChar]) == null)
                     return;
               else 
                  jjstartStateSet = jjallInitStates_0;
               jjnewStateCnt = jjstartStateSet.length;
               jjMoveNfa_0(jjstartStateSet, jjstateSet2);
               if (jjcurKind != 2147483647)
               {
                  matchedToken.kind = jjcurKind;
                  jjcurKind = 2147483647;
               }
               return;
         }
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) {
            StopStringLiteralDfa_0(0, jjoldActive_00); 
            curPos = 1;
            throw e;
         }
         jjMoveStringLiteralDfa1_0();
         return;
    }
   }
   curPos = 1;
   return;
}
static private final void jjMoveStringLiteralDfa1_0() throws java.io.IOException
{
   ReturnLoop:
   for (;;)
   {
    MainLoop:
    for (;;)
    {
      StartNfaLoop:
      for (;;)
      { 
         switch(curChar)
         {
            case 108: 
               if (((jjnewActive_00 = jjoldActive_00 & 0x1000L)) == 0L)
                  break StartNfaLoop;
               break;
            case 104: 
               if (((jjnewActive_00 = jjoldActive_00 & 0x800L)) == 0L)
                  break StartNfaLoop;
               break;
            case 102: 
               if ((jjoldActive_00 & 0x400L) != 0L)
               {
                  matchedToken.kind = 10;
                  break ReturnLoop;
               }
               break StartNfaLoop;
            default : 
               break StartNfaLoop;
         }
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) {
            StopStringLiteralDfa_0(1, jjnewActive_00); 
            curPos = 2;
            throw e;
         }
         jjMoveStringLiteralDfa2_0();
         return;
      }
      jjStartNfa_0(0, jjoldActive_00); 
      curPos = 2;
      return;
    }
   }
   jjmatchedPos = 1;
   curPos = 2;
   return;
}
static private final void jjMoveStringLiteralDfa2_0() throws java.io.IOException
{
   ReturnLoop:
   for (;;)
   {
    MainLoop:
    for (;;)
    {
      StartNfaLoop:
      for (;;)
      { 
         switch(curChar)
         {
            case 115: 
               if (((jjoldActive_00 = jjnewActive_00 & 0x1000L)) == 0L)
                  break StartNfaLoop;
               break;
            case 101: 
               if (((jjoldActive_00 = jjnewActive_00 & 0x800L)) == 0L)
                  break StartNfaLoop;
               break;
            default : 
               break StartNfaLoop;
         }
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) {
            StopStringLiteralDfa_0(2, jjoldActive_00); 
            curPos = 3;
            throw e;
         }
         jjMoveStringLiteralDfa3_0();
         return;
      }
      jjStartNfa_0(1, jjnewActive_00); 
      curPos = 3;
      return;
    }
   }
}
static private final void jjMoveStringLiteralDfa3_0() throws java.io.IOException
{
   ReturnLoop:
   for (;;)
   {
    MainLoop:
    for (;;)
    {
      StartNfaLoop:
      for (;;)
      { 
         switch(curChar)
         {
            case 110: 
               if ((jjoldActive_00 & 0x800L) != 0L)
               {
                  matchedToken.kind = 11;
                  break ReturnLoop;
               }
               break StartNfaLoop;
            case 101: 
               if ((jjoldActive_00 & 0x1000L) != 0L)
               {
                  matchedToken.kind = 12;
                  break ReturnLoop;
               }
               break StartNfaLoop;
            default : 
               break StartNfaLoop;
         }
      }
      jjStartNfa_0(2, jjoldActive_00); 
      curPos = 4;
      return;
    }
   }
   jjmatchedPos = 3;
   curPos = 4;
   return;
}
static final int[] jjstates0 = { 0, };
static final int[] jjallInitStates_0 = { 0, 1, 2, };
static final int[] jjstates1 = { 1, };
static final int[] jjstates2 = { 2, };
static final int[][] jjinitStates_0 = {
jjallInitStates_0, 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, jjstates1, jjstates2, null, jjstates2, 
null, jjstates1, jjstates0, jjstates0, jjstates0, 
jjstates0, jjstates0, jjstates0, jjstates0, jjstates0, 
jjstates0, jjstates0, 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, };

public static final String[] jjstrLiteralImages = {
null, null, null, null, null, null, null, "\12", "\50", "\51", "\151\146", 
"\164\150\145\156", "\145\154\163\145", };
public static final String[] lexStateNames = {
   "DEFAULT", 
};
static final long[] jjtoToken = 
{
0x1ff0L,
};
static final long[] jjtoSkip = 
{
0xeL,
};
static private ASCII_CharStream input_stream;
static private int[] jjrounds = new int[3];
static private int[] jjstateSet1 = new int[3];
static private int[] jjstateSet2 = new int[3];
static private int[] jjnextStates;
static int curPos;
static protected char curChar;
static int jjcurKind = 2147483647;
static PantanalTokenManager jjme;
public PantanalTokenManager(ASCII_CharStream stream)
{
if (input_stream != null)
{
   System.err.println("ERROR: Second call to constructor of static lexer.  You must");
   System.err.println("       either use ReInit() or set the JavaCC option STATIC to false");
   System.err.println("       during lexer generation.");
   throw new Error();
}
input_stream = stream;
jjme = this;
}
public PantanalTokenManager(ASCII_CharStream stream, int lexState)
{
if (input_stream != null)
{
   System.err.println("ERROR: Second call to constructor of static lexer.  You must");
   System.err.println("       either use ReInit() or set the JavaCC option STATIC to false");
   System.err.println("       during lexer generation.");
   throw new Error();
}
input_stream = stream;
jjme = this;
   if (lexState >= 1 || lexState < 0)
   {
      System.out.println("Error: Ignoring invalid lexical state : " + lexState + ". Starting lexer in DEFAULT state.");
      curLexState = defaultLexState;
   }
   else
      curLexState = lexState;
}
static public void ReInit(ASCII_CharStream stream)
{
int i;
jjcurKind = 2147483647;
curPos = jjmatchedPos = jjnewStateCnt = jjround = 0;
jjstartStateSet = null;
curChar = (char)0;
jjEOFSeen = false;
curLexState = defaultLexState;
input_stream = stream;
for (i = 3; i-- > 0;)
   jjrounds[i] = 0;
}
static public void ReInit(ASCII_CharStream stream, int lexState)
{
int i;
jjcurKind = 2147483647;
curPos = jjmatchedPos = jjnewStateCnt = jjround = 0;
jjstartStateSet = null;
curChar = (char)0;
jjEOFSeen = false;
   if (lexState >= 1 || lexState < 0)
   {
      System.out.println("Error: Ignoring invalid lexical state : " + lexState + ". Reinitialzing lexer in DEFAULT state.");
      curLexState = defaultLexState;
   }
   else
      curLexState = lexState;
input_stream = stream;
for (i = 3; i-- > 0;)
   jjrounds[i] = 0;
}
static public void SwitchTo(int lexState)
{
   if (lexState >= 1 || lexState < 0)
      System.out.println("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.");
   else
      curLexState = lexState;
}


static int curLexState = 0;
static int defaultLexState = 0;
static int jjnewStateCnt;
static int jjround;
static private boolean jjEOFSeen = false;
static int[] jjtmpStates = jjstateSet1;
static int jjmatchedPos;
static Token matchedToken;
static Token jjspecialToken;
static private int[] jjstartStateSet;

static public Token getNextToken() throws ParseError
{
  matchedToken = new Token();

  EOFLoop : for (;;)
  {   
   try   
   {     
      curChar = input_stream.BeginToken();
   }     
   catch(java.io.IOException e)
   {        
      matchedToken.endLine = matchedToken.beginLine = input_stream.getBeginLine();
      matchedToken.endColumn = matchedToken.beginColumn = input_stream.getBeginColumn();
      matchedToken.kind = 0;
      matchedToken.image = "";
      return matchedToken;
   }

   try
   {
    for (;;)
    {
      matchedToken.kind = 2147483647;
      jjmatchedPos = 0;
      jjMoveStringLiteralDfa0_0();
      while (jjnewStateCnt != 0)
      {
         curChar = input_stream.readChar();
         jjMoveNfa_0(jjstateSet1 = jjstateSet2, jjstateSet2 = jjtmpStates);
         jjtmpStates = jjstateSet1;
         if (jjcurKind != 2147483647)
         {
            matchedToken.kind = jjcurKind;
            jjcurKind = 2147483647;
            jjmatchedPos = curPos++;
         }
         else
            curPos++;
      }

      if (matchedToken.kind != 2147483647)
      {
         if (jjmatchedPos + 1 < curPos)
            input_stream.backup(curPos - jjmatchedPos - 1);

         if ((jjtoToken[matchedToken.kind >> 6] &
             (1L << (matchedToken.kind & 077))) != 0L)
         {
            if ((matchedToken.image = jjstrLiteralImages[matchedToken.kind]) == null)
               matchedToken.image = input_stream.GetImage();
            matchedToken.beginLine = input_stream.getBeginLine();
            matchedToken.beginColumn = input_stream.getBeginColumn();
            matchedToken.endLine = input_stream.getEndLine();
            matchedToken.endColumn = input_stream.getEndColumn();
            return matchedToken;
         }
         else
         {
            continue EOFLoop;
         }
      }
      else
      {
         jjme.error_line = input_stream.getEndLine();
         jjme.error_column = input_stream.getEndColumn();
         input_stream.backup(1);
         jjme.error_after = curPos <= 1 ? "" : jjadd_escapes(input_stream.GetImage());
         jjme.LexicalError();

         throw new ParseError();
      }
    }
   }
   catch (java.io.IOException e)
   {
      switch(curLexState)
      {
         default : break;
      }
      if (matchedToken.kind != 2147483647 && matchedToken.kind != 0)
      {
         if (jjmatchedPos + 1 < curPos)
            input_stream.backup(curPos - jjmatchedPos - 1);

         if ((jjtoToken[matchedToken.kind >> 6] &
             (1L << (matchedToken.kind & 077))) != 0L)
         {
            if ((matchedToken.image = jjstrLiteralImages[matchedToken.kind]) == null)
               matchedToken.image = input_stream.GetImage();
            matchedToken.beginLine = input_stream.getBeginLine();
            matchedToken.beginColumn = input_stream.getBeginColumn();
            matchedToken.endLine = input_stream.getEndLine();
            matchedToken.endColumn = input_stream.getEndColumn();
            return matchedToken;
         }
         else
         {
            continue EOFLoop;
         }
      }

      jjme.error_line = input_stream.getEndLine();
      jjme.error_column = input_stream.getEndColumn();
      input_stream.backup(1);
      jjEOFSeen = true;
      jjme.error_after = curPos <= 1 ? "" : jjadd_escapes(input_stream.GetImage());
      jjme.LexicalError();

      throw new ParseError();
   }
  }
}

protected int error_line, error_column;
protected String error_after;
protected void LexicalError()
{
   System.err.println("Lexical error at line " +
        error_line + ", column " +
        error_column + ".  Encountered: " +
        (jjEOFSeen ? "<EOF>" : ("\"" + jjadd_escapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
        "after : \"" + jjme.error_after + "\"");
}
}
