2009-11-18 20:00:29 -06:00
/* Generated By:JavaCC: Do not edit this line. ParserTokenManager.java */
package edu.utexas.cs345.jdblisp.parser ;
2009-11-19 09:56:52 -06:00
import edu.utexas.cs345.jdblisp.* ;
2009-11-18 20:00:29 -06:00
/** Token Manager. */
public class ParserTokenManager implements ParserConstants
{
/** Debug output. */
public static java . io . PrintStream debugStream = System . out ;
/** Set debug output. */
public static void setDebugStream ( java . io . PrintStream ds ) { debugStream = ds ; }
private static final int jjStopStringLiteralDfa_0 ( int pos , long active0 )
{
switch ( pos )
{
default :
return - 1 ;
}
}
private static final int jjStartNfa_0 ( int pos , long active0 )
{
return jjMoveNfa_0 ( jjStopStringLiteralDfa_0 ( pos , active0 ) , pos + 1 ) ;
}
static private int jjStopAtPos ( int pos , int kind )
{
jjmatchedKind = kind ;
jjmatchedPos = pos ;
return pos + 1 ;
}
static private int jjMoveStringLiteralDfa0_0 ( )
{
switch ( curChar )
{
case 10 :
jjmatchedKind = 4 ;
return jjMoveStringLiteralDfa1_0 ( 0x20L ) ;
case 40 :
return jjStopAtPos ( 0 , 6 ) ;
case 41 :
return jjStopAtPos ( 0 , 7 ) ;
default :
return jjMoveNfa_0 ( 0 , 0 ) ;
}
}
static private int jjMoveStringLiteralDfa1_0 ( long active0 )
{
try { curChar = input_stream . readChar ( ) ; }
catch ( java . io . IOException e ) {
jjStopStringLiteralDfa_0 ( 0 , active0 ) ;
return 1 ;
}
switch ( curChar )
{
case 13 :
if ( ( active0 & 0x20L ) ! = 0L )
return jjStopAtPos ( 1 , 5 ) ;
break ;
default :
break ;
}
return jjStartNfa_0 ( 0 , active0 ) ;
}
static private int jjMoveNfa_0 ( int startState , int curPos )
{
int startsAt = 0 ;
2009-11-20 13:59:40 -06:00
jjnewStateCnt = 9 ;
2009-11-18 20:00:29 -06:00
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 ( ( 0x3ff000000000000L & l ) ! = 0L )
{
if ( kind > 8 )
kind = 8 ;
jjCheckNAddTwoStates ( 1 , 2 ) ;
}
else if ( ( 0x2000ac0000000000L & l ) ! = 0L )
{
if ( kind > 10 )
kind = 10 ;
2009-11-20 13:59:40 -06:00
jjCheckNAddTwoStates ( 7 , 8 ) ;
2009-11-18 20:00:29 -06:00
}
else if ( curChar = = 34 )
jjAddStates ( 0 , 1 ) ;
if ( ( 0x280000000000L & l ) ! = 0L )
jjCheckNAdd ( 1 ) ;
break ;
case 1 :
if ( ( 0x3ff000000000000L & l ) = = 0L )
break ;
if ( kind > 8 )
kind = 8 ;
jjCheckNAddTwoStates ( 1 , 2 ) ;
break ;
case 2 :
if ( curChar = = 46 )
jjCheckNAdd ( 3 ) ;
break ;
case 3 :
if ( ( 0x3ff000000000000L & l ) = = 0L )
break ;
if ( kind > 8 )
kind = 8 ;
jjCheckNAdd ( 3 ) ;
break ;
case 4 :
if ( curChar = = 34 )
jjAddStates ( 0 , 1 ) ;
break ;
case 6 :
if ( curChar = = 34 & & kind > 9 )
kind = 9 ;
break ;
case 7 :
if ( ( 0x2000ac0000000000L & l ) = = 0L )
break ;
if ( kind > 10 )
kind = 10 ;
2009-11-20 13:59:40 -06:00
jjCheckNAddTwoStates ( 7 , 8 ) ;
break ;
case 8 :
if ( ( 0x23ffac0000000000L & l ) ! = 0L & & kind > 10 )
kind = 10 ;
2009-11-18 20:00:29 -06:00
break ;
default : break ;
}
} while ( i ! = startsAt ) ;
}
else if ( curChar < 128 )
{
long l = 1L < < ( curChar & 077 ) ;
do
{
switch ( jjstateSet [ - - i ] )
{
case 0 :
case 7 :
if ( ( 0x7fffffe87fffffeL & l ) = = 0L )
break ;
if ( kind > 10 )
kind = 10 ;
2009-11-20 13:59:40 -06:00
jjCheckNAddTwoStates ( 7 , 8 ) ;
2009-11-18 20:00:29 -06:00
break ;
case 5 :
if ( ( 0x7fffffe87fffffeL & l ) ! = 0L )
jjAddStates ( 0 , 1 ) ;
break ;
2009-11-20 13:59:40 -06:00
case 8 :
if ( ( 0x7fffffe87fffffeL & l ) ! = 0L & & kind > 10 )
kind = 10 ;
break ;
2009-11-18 20:00:29 -06:00
default : break ;
}
} while ( i ! = startsAt ) ;
}
else
{
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 ;
2009-11-20 13:59:40 -06:00
if ( ( i = jjnewStateCnt ) = = ( startsAt = 9 - ( jjnewStateCnt = startsAt ) ) )
2009-11-18 20:00:29 -06:00
return curPos ;
try { curChar = input_stream . readChar ( ) ; }
catch ( java . io . IOException e ) { return curPos ; }
}
}
static final int [ ] jjnextStates = {
5 , 6 ,
} ;
/** Token literal values. */
public static final String [ ] jjstrLiteralImages = {
" " , null , null , null , null , null , " \ 50 " , " \ 51 " , null , null , null , } ;
/** Lexer state names. */
public static final String [ ] lexStateNames = {
" DEFAULT " ,
} ;
static final long [ ] jjtoToken = {
0x7c1L ,
} ;
static final long [ ] jjtoSkip = {
0x3eL ,
} ;
static protected SimpleCharStream input_stream ;
2009-11-20 13:59:40 -06:00
static private final int [ ] jjrounds = new int [ 9 ] ;
static private final int [ ] jjstateSet = new int [ 18 ] ;
2009-11-18 20:00:29 -06:00
static protected char curChar ;
/** Constructor. */
public ParserTokenManager ( SimpleCharStream stream ) {
if ( input_stream ! = null )
throw new TokenMgrError ( " ERROR: Second call to constructor of static lexer. You must use ReInit() to initialize the static variables. " , TokenMgrError . STATIC_LEXER_ERROR ) ;
input_stream = stream ;
}
/** Constructor. */
public ParserTokenManager ( SimpleCharStream stream , int lexState ) {
this ( stream ) ;
SwitchTo ( lexState ) ;
}
/** Reinitialise parser. */
static public void ReInit ( SimpleCharStream stream )
{
jjmatchedPos = jjnewStateCnt = 0 ;
curLexState = defaultLexState ;
input_stream = stream ;
ReInitRounds ( ) ;
}
static private void ReInitRounds ( )
{
int i ;
jjround = 0x80000001 ;
2009-11-20 13:59:40 -06:00
for ( i = 9 ; i - - > 0 ; )
2009-11-18 20:00:29 -06:00
jjrounds [ i ] = 0x80000000 ;
}
/** Reinitialise parser. */
static public void ReInit ( SimpleCharStream stream , int lexState )
{
ReInit ( stream ) ;
SwitchTo ( lexState ) ;
}
/** Switch to specified lex state. */
static public void SwitchTo ( int lexState )
{
if ( lexState > = 1 | | lexState < 0 )
throw new TokenMgrError ( " Error: Ignoring invalid lexical state : " + lexState + " . State unchanged. " , TokenMgrError . INVALID_LEXICAL_STATE ) ;
else
curLexState = lexState ;
}
static 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 ;
}
static int curLexState = 0 ;
static int defaultLexState = 0 ;
static int jjnewStateCnt ;
static int jjround ;
static int jjmatchedPos ;
static int jjmatchedKind ;
/** Get the next Token. */
public static Token getNextToken ( )
{
Token matchedToken ;
int curPos = 0 ;
EOFLoop :
for ( ; ; )
{
try
{
curChar = input_stream . BeginToken ( ) ;
}
catch ( java . io . IOException e )
{
jjmatchedKind = 0 ;
matchedToken = jjFillToken ( ) ;
return matchedToken ;
}
try { input_stream . backup ( 0 ) ;
while ( curChar < = 32 & & ( 0x100002200L & ( 1L < < curChar ) ) ! = 0L )
curChar = input_stream . BeginToken ( ) ;
}
catch ( java . io . IOException e1 ) { continue EOFLoop ; }
jjmatchedKind = 0x7fffffff ;
jjmatchedPos = 0 ;
curPos = jjMoveStringLiteralDfa0_0 ( ) ;
if ( jjmatchedKind ! = 0x7fffffff )
{
if ( jjmatchedPos + 1 < curPos )
input_stream . backup ( curPos - jjmatchedPos - 1 ) ;
if ( ( jjtoToken [ jjmatchedKind > > 6 ] & ( 1L < < ( jjmatchedKind & 077 ) ) ) ! = 0L )
{
matchedToken = jjFillToken ( ) ;
return matchedToken ;
}
else
{
continue EOFLoop ;
}
}
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 ) ;
}
}
static private void jjCheckNAdd ( int state )
{
if ( jjrounds [ state ] ! = jjround )
{
jjstateSet [ jjnewStateCnt + + ] = state ;
jjrounds [ state ] = jjround ;
}
}
static private void jjAddStates ( int start , int end )
{
do {
jjstateSet [ jjnewStateCnt + + ] = jjnextStates [ start ] ;
} while ( start + + ! = end ) ;
}
static private void jjCheckNAddTwoStates ( int state1 , int state2 )
{
jjCheckNAdd ( state1 ) ;
jjCheckNAdd ( state2 ) ;
}
}