Skip to content
ADQLParserTokenManager.java 46.5 KiB
Newer Older
/* Generated By:JavaCC: Do not edit this line. ADQLParserTokenManager.java */
package adql.parser;
import java.util.Stack;
import java.util.Vector;
import java.util.ArrayList;
import java.util.Collection;
import java.io.FileReader;
import java.io.IOException;
import adql.db.exception.UnresolvedIdentifiersException;
import adql.parser.IdentifierItems.IdentifierItem;
import adql.parser.ADQLQueryFactory.JoinType;
import adql.query.*;
import adql.query.from.*;
import adql.query.constraint.*;
import adql.query.operand.*;
import adql.query.operand.function.*;
import adql.query.operand.function.geometry.*;
import adql.query.operand.function.geometry.GeometryFunction.GeometryValue;
import adql.translator.PostgreSQLTranslator;
import adql.translator.TranslationException;

/** Token Manager. */
public class ADQLParserTokenManager implements ADQLParserConstants {
	/** Debug output. */
	public java.io.PrintStream debugStream = System.out;
	/** Set debug output. */
	public void setDebugStream(java.io.PrintStream ds){
		debugStream = ds;
	}
	private final int jjStopStringLiteralDfa_3(int pos, long active0, long active1){
		switch(pos){
			default:
				return -1;
		}
	}
	private final int jjStartNfa_3(int pos, long active0, long active1){
		return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0, active1), pos + 1);
	}
	private int jjStopAtPos(int pos, int kind){
		jjmatchedKind = kind;
		jjmatchedPos = pos;
		return pos + 1;
	}
	private int jjMoveStringLiteralDfa0_3(){
		switch(curChar){
			case 34:
				return jjStartNfaWithStates_3(0, 96, 1);
			default:
				return jjMoveNfa_3(0, 0);
		}
	}
	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);
	}
	static final long[] jjbitVec0 = {0x0L,0x0L,0xffffffffffffffffL,0xffffffffffffffffL};
	private int jjMoveNfa_3(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 ((0xfffffffbffffffffL & l) != 0L){
								if (kind > 95)
									kind = 95;
							}else if (curChar == 34)
								jjstateSet[jjnewStateCnt++] = 1;
							break;
						case 1:
							if (curChar == 34 && kind > 95)
								kind = 95;
							break;
						case 2:
							if (curChar == 34)
								jjstateSet[jjnewStateCnt++] = 1;
							break;
						default:
							break;
					}
				}while(i != startsAt);
			}else if (curChar < 128){
				long l = 1L << (curChar & 077);
				do{
					switch(jjstateSet[--i]){
						case 0:
							kind = 95;
							break;
						default:
							break;
					}
				}while(i != startsAt);
			}else{
				int i2 = (curChar & 0xff) >> 6;
				long l2 = 1L << (curChar & 077);
				do{
					switch(jjstateSet[--i]){
						case 0:
							if ((jjbitVec0[i2] & l2) != 0L && kind > 95)
								kind = 95;
							break;
						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_0(int pos, long active0, long active1){
		switch(pos){
			case 0:
				if ((active0 & 0xefff1ffdffb40000L) != 0L || (active1 & 0xf0fff4L) != 0L){
					jjmatchedKind = 97;
					return 37;
				}
				if ((active0 & 0x1000a00200400000L) != 0L || (active1 & 0xf0002L) != 0L){
					jjmatchedKind = 97;
					return 16;
				}
				if ((active0 & 0x10L) != 0L)
					return 38;
				if ((active0 & 0x400000000000L) != 0L || (active1 & 0x9L) != 0L){
					jjmatchedKind = 97;
					return 13;
				}
				if ((active0 & 0xc000L) != 0L)
					return 3;
				if ((active0 & 0x200L) != 0L)
					return 19;
				return -1;
			case 1:
				if ((active0 & 0xf7ffceebbeb40000L) != 0L || (active1 & 0xfdfdfeL) != 0L){
					if (jjmatchedPos != 1){
						jjmatchedKind = 97;
						jjmatchedPos = 1;
					}
					return 37;
				}
				if ((active0 & 0x800311441400000L) != 0L || (active1 & 0x20200L) != 0L)
					return 37;
				if ((active1 & 0x1L) != 0L){
					if (jjmatchedPos != 1){
						jjmatchedKind = 97;
						jjmatchedPos = 1;
					}
					return 12;
				}
				return -1;
			case 2:
				if ((active1 & 0x1L) != 0L){
					if (jjmatchedPos != 2){
						jjmatchedKind = 97;
						jjmatchedPos = 2;
					}
					return 11;
				}
				if ((active0 & 0x17a00a00100000L) != 0L || (active1 & 0xf001d2L) != 0L)
					return 37;
				if ((active0 & 0xffe85ee1bfa40000L) != 0L || (active1 & 0xffc2cL) != 0L){
					if (jjmatchedPos != 2){
						jjmatchedKind = 97;
						jjmatchedPos = 2;
					}
					return 37;
				}
				return -1;
			case 3:
				if ((active0 & 0xefe81e4187840000L) != 0L || (active1 & 0xac2cL) != 0L){
					if (jjmatchedPos != 3){
						jjmatchedKind = 97;
						jjmatchedPos = 3;
					}
					return 37;
				}
				if ((active0 & 0x100040a038200000L) != 0L || (active1 & 0xf5000L) != 0L)
					return 37;
				if ((active1 & 0x80L) != 0L){
					if (jjmatchedPos != 3){
						jjmatchedKind = 97;
						jjmatchedPos = 3;
					}
					return 21;
				}
				if ((active1 & 0x1L) != 0L){
					if (jjmatchedPos != 3){
						jjmatchedKind = 97;
						jjmatchedPos = 3;
					}
					return 10;
				}
				return -1;
			case 4:
				if ((active0 & 0xef601e4000840000L) != 0L || (active1 & 0x880dL) != 0L){
					jjmatchedKind = 97;
					jjmatchedPos = 4;
					return 37;
				}
				if ((active0 & 0x88000187000000L) != 0L || (active1 & 0x2420L) != 0L)
					return 37;
				if ((active1 & 0x80080L) != 0L)
					return 21;
				return -1;
			case 5:
				if ((active0 & 0x2400a0000040000L) != 0L)
					return 37;
				if ((active0 & 0x6000000000000000L) != 0L)
					return 21;
				if ((active0 & 0x8d20004000800000L) != 0L || (active1 & 0x880dL) != 0L){
					jjmatchedKind = 97;
					jjmatchedPos = 5;
					return 37;
				}
				if ((active0 & 0x140000000000L) != 0L){
					if (jjmatchedPos < 4){
						jjmatchedKind = 97;
						jjmatchedPos = 4;
					}
					return -1;
				}
				return -1;
			case 6:
				if ((active0 & 0x8c20000000000000L) != 0L || (active1 & 0x8001L) != 0L){
					jjmatchedKind = 97;
					jjmatchedPos = 6;
					return 37;
				}
				if ((active0 & 0x100004000800000L) != 0L || (active1 & 0x80cL) != 0L)
					return 37;
				if ((active0 & 0x140000000000L) != 0L){
					if (jjmatchedPos < 4){
						jjmatchedKind = 97;
						jjmatchedPos = 4;
					}
					return -1;
				}
				return -1;
			case 7:
				if ((active0 & 0x800000000000000L) != 0L){
					jjmatchedKind = 97;
					jjmatchedPos = 7;
					return 37;
				}
				if ((active0 & 0x8420000000000000L) != 0L || (active1 & 0x8001L) != 0L)
					return 37;
				if ((active0 & 0x140000000000L) != 0L){
					if (jjmatchedPos < 4){
						jjmatchedKind = 97;
						jjmatchedPos = 4;
					}
					return -1;
				}
				return -1;
			case 8:
				if ((active0 & 0x800000000000000L) != 0L){
					jjmatchedKind = 97;
					jjmatchedPos = 8;
					return 37;
				}
				return -1;
			default:
				return -1;
		}
	}
	private final int jjStartNfa_0(int pos, long active0, long active1){
		return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
	}
	private int jjMoveStringLiteralDfa0_0(){
		switch(curChar){
			case 34:
				return jjStopAtPos(0, 94);
			case 39:
				return jjStopAtPos(0, 91);
			case 40:
				return jjStopAtPos(0, 2);
			case 41:
				return jjStopAtPos(0, 3);
			case 42:
				return jjStopAtPos(0, 10);
			case 43:
				return jjStopAtPos(0, 8);
			case 44:
				return jjStopAtPos(0, 5);
			case 45:
				return jjStartNfaWithStates_0(0, 9, 19);
			case 46:
				return jjStartNfaWithStates_0(0, 4, 38);
			case 47:
				return jjStopAtPos(0, 11);
			case 59:
				return jjStopAtPos(0, 6);
			case 60:
				jjmatchedKind = 14;
				return jjMoveStringLiteralDfa1_0(0x8000L, 0x0L);
			case 61:
				return jjStopAtPos(0, 12);
			case 62:
				jjmatchedKind = 16;
				return jjMoveStringLiteralDfa1_0(0x20000L, 0x0L);
			case 65:
			case 97:
				return jjMoveStringLiteralDfa1_0(0x1000a00200400000L, 0xf0002L);
			case 66:
			case 98:
				return jjMoveStringLiteralDfa1_0(0x10004000000000L, 0x0L);
			case 67:
			case 99:
				return jjMoveStringLiteralDfa1_0(0xe468000000000000L, 0x300004L);
			case 68:
			case 100:
				return jjMoveStringLiteralDfa1_0(0x400000000000L, 0x9L);
			case 69:
			case 101:
				return jjMoveStringLiteralDfa1_0(0x20000000000L, 0x10L);
			case 70:
			case 102:
				return jjMoveStringLiteralDfa1_0(0x10200000L, 0x20L);
			case 71:
			case 103:
				return jjMoveStringLiteralDfa1_0(0x40000000000L, 0x0L);
			case 72:
			case 104:
				return jjMoveStringLiteralDfa1_0(0x80000000000L, 0x0L);
			case 73:
			case 105:
				return jjMoveStringLiteralDfa1_0(0x800011001000000L, 0x0L);
			case 74:
			case 106:
				return jjMoveStringLiteralDfa1_0(0x20000000L, 0x0L);
			case 76:
			case 108:
				return jjMoveStringLiteralDfa1_0(0x8008000000L, 0xc0L);
			case 77:
			case 109:
				return jjMoveStringLiteralDfa1_0(0x3000000000000L, 0x100L);
			case 78:
			case 110:
				return jjMoveStringLiteralDfa1_0(0x2800800000L, 0x0L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa1_0(0x100442000000L, 0x0L);
			case 80:
			case 112:
				return jjMoveStringLiteralDfa1_0(0x180000000000000L, 0x600L);
			case 82:
			case 114:
				return jjMoveStringLiteralDfa1_0(0x200000004000000L, 0x3800L);
			case 83:
			case 115:
				return jjMoveStringLiteralDfa1_0(0x4000000040000L, 0x404000L);
			case 84:
			case 116:
				return jjMoveStringLiteralDfa1_0(0x100000L, 0x808000L);
			case 85:
			case 117:
				return jjMoveStringLiteralDfa1_0(0x80000000L, 0x0L);
			case 87:
			case 119:
				return jjMoveStringLiteralDfa1_0(0x100000000L, 0x0L);
			case 124:
				return jjMoveStringLiteralDfa1_0(0x80L, 0x0L);
			default:
				return jjMoveNfa_0(0, 0);
		}
	}
	private int jjMoveStringLiteralDfa1_0(long active0, long active1){
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(0, active0, active1);
			return 1;
		}
		switch(curChar){
			case 61:
				if ((active0 & 0x8000L) != 0L)
					return jjStopAtPos(1, 15);
				else if ((active0 & 0x20000L) != 0L)
					return jjStopAtPos(1, 17);
				break;
			case 65:
			case 97:
				return jjMoveStringLiteralDfa2_0(active0, 0x1080000800000L, active1, 0x801800L);
			case 66:
			case 98:
				return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x2L);
			case 67:
			case 99:
				return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10000L);
			case 69:
			case 101:
				return jjMoveStringLiteralDfa2_0(active0, 0x220404008040000L, active1, 0xcL);
			case 72:
			case 104:
				return jjMoveStringLiteralDfa2_0(active0, 0x100000000L, active1, 0L);
			case 73:
			case 105:
				if ((active1 & 0x200L) != 0L)
					return jjStartNfaWithStates_0(1, 73, 37);
				return jjMoveStringLiteralDfa2_0(active0, 0x42008004000000L, active1, 0x400001L);
			case 76:
			case 108:
				return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x20L);
			case 78:
			case 110:
				if ((active0 & 0x40000000L) != 0L)
					return jjStartNfaWithStates_0(1, 30, 37);
				else if ((active0 & 0x10000000000L) != 0L){
					jjmatchedKind = 40;
					jjmatchedPos = 1;
				}
				return jjMoveStringLiteralDfa2_0(active0, 0x800000201000000L, active1, 0L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa2_0(active0, 0xe598000820100000L, active1, 0x3025c0L);
			case 81:
			case 113:
				return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4000L);
			case 82:
			case 114:
				if ((active0 & 0x400000000L) != 0L){
					jjmatchedKind = 34;
					jjmatchedPos = 1;
				}
				return jjMoveStringLiteralDfa2_0(active0, 0x1000140000200000L, active1, 0x8000L);
			case 83:
			case 115:
				if ((active0 & 0x400000L) != 0L){
					jjmatchedKind = 22;
					jjmatchedPos = 1;
				}else if ((active0 & 0x1000000000L) != 0L)
					return jjStartNfaWithStates_0(1, 36, 37);
				return jjMoveStringLiteralDfa2_0(active0, 0x200080000000L, active1, 0x20000L);
			case 84:
			case 116:
				return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xc0000L);
			case 85:
			case 117:
				return jjMoveStringLiteralDfa2_0(active0, 0x4002012000000L, active1, 0L);
			case 86:
			case 118:
				return jjMoveStringLiteralDfa2_0(active0, 0x800000000000L, active1, 0L);
			case 88:
			case 120:
				return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L, active1, 0x10L);
			case 124:
				if ((active0 & 0x80L) != 0L)
					return jjStopAtPos(1, 7);
				break;
			default:
				break;
		}
		return jjStartNfa_0(0, active0, active1);
	}
	private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(0, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(1, active0, active1);
			return 2;
		}
		switch(curChar){
			case 65:
			case 97:
				return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0xc0000L);
			case 67:
			case 99:
				if ((active0 & 0x200000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 45, 37);
				break;
			case 68:
			case 100:
				if ((active0 & 0x200000000L) != 0L)
					return jjStartNfaWithStates_0(2, 33, 37);
				else if ((active1 & 0x100L) != 0L)
					return jjStartNfaWithStates_0(2, 72, 37);
				return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L, active1, 0x800L);
			case 69:
			case 101:
				return jjMoveStringLiteralDfa3_0(active0, 0x1000000100000000L, active1, 0L);
			case 70:
			case 102:
				return jjMoveStringLiteralDfa3_0(active0, 0x8000000L, active1, 0L);
			case 71:
			case 103:
				if ((active0 & 0x800000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 47, 37);
				else if ((active1 & 0x40L) != 0L){
					jjmatchedKind = 70;
					jjmatchedPos = 2;
				}
				return jjMoveStringLiteralDfa3_0(active0, 0x200000004000000L, active1, 0x88L);
			case 73:
			case 105:
				return jjMoveStringLiteralDfa3_0(active0, 0x800200a0000000L, active1, 0x20004L);
			case 75:
			case 107:
				return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L, active1, 0L);
			case 76:
			case 108:
				return jjMoveStringLiteralDfa3_0(active0, 0x100002010040000L, active1, 0L);
			case 77:
			case 109:
				if ((active0 & 0x4000000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 50, 37);
				break;
			case 78:
			case 110:
				if ((active0 & 0x2000000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 49, 37);
				else if ((active1 & 0x400000L) != 0L)
					return jjStartNfaWithStates_0(2, 86, 37);
				else if ((active1 & 0x800000L) != 0L)
					return jjStartNfaWithStates_0(2, 87, 37);
				return jjMoveStringLiteralDfa3_0(active0, 0x420000001000000L, active1, 0x1000L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa3_0(active0, 0xe000040000200000L, active1, 0x10020L);
			case 80:
			case 112:
				if ((active0 & 0x100000L) != 0L)
					return jjStartNfaWithStates_0(2, 20, 37);
				else if ((active1 & 0x10L) != 0L)
					return jjStartNfaWithStates_0(2, 68, 37);
				break;
			case 82:
			case 114:
				return jjMoveStringLiteralDfa3_0(active0, 0x40000000000000L, active1, 0x4000L);
			case 83:
			case 115:
				if ((active1 & 0x2L) != 0L)
					return jjStartNfaWithStates_0(2, 65, 37);
				else if ((active1 & 0x100000L) != 0L)
					return jjStartNfaWithStates_0(2, 84, 37);
				return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0x1L);
			case 84:
			case 116:
				if ((active0 & 0x800000000L) != 0L)
					return jjStartNfaWithStates_0(2, 35, 37);
				else if ((active1 & 0x200000L) != 0L)
					return jjStartNfaWithStates_0(2, 85, 37);
				return jjMoveStringLiteralDfa3_0(active0, 0x800004002800000L, active1, 0L);
			case 85:
			case 117:
				return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000L, active1, 0xa000L);
			case 86:
			case 118:
				return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L, active1, 0L);
			case 87:
			case 119:
				return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x400L);
			case 88:
			case 120:
				if ((active0 & 0x1000000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 48, 37);
				else if ((active0 & 0x10000000000000L) != 0L)
					return jjStartNfaWithStates_0(2, 52, 37);
				break;
			default:
				break;
		}
		return jjStartNfa_0(1, active0, active1);
	}
	private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(1, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(2, active0, active1);
			return 3;
		}
		switch(curChar){
			case 49:
				return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x80L);
			case 65:
			case 97:
				if ((active0 & 0x1000000000000000L) != 0L)
					return jjStartNfaWithStates_0(3, 60, 37);
				break;
			case 67:
			case 99:
				if ((active0 & 0x400000000000L) != 0L)
					return jjStartNfaWithStates_0(3, 46, 37);
				return jjMoveStringLiteralDfa4_0(active0, 0x40000000000000L, active1, 0L);
			case 68:
			case 100:
				if ((active1 & 0x1000L) != 0L)
					return jjStartNfaWithStates_0(3, 76, 37);
				break;
			case 69:
			case 101:
				if ((active0 & 0x8000000000L) != 0L)
					return jjStartNfaWithStates_0(3, 39, 37);
				return jjMoveStringLiteralDfa4_0(active0, 0x800100003040000L, active1, 0x400L);
			case 72:
			case 104:
				return jjMoveStringLiteralDfa4_0(active0, 0x4000000L, active1, 0L);
			case 73:
			case 105:
				return jjMoveStringLiteralDfa4_0(active0, 0x200080000000000L, active1, 0x800L);
			case 76:
			case 108:
				if ((active0 & 0x10000000L) != 0L)
					return jjStartNfaWithStates_0(3, 28, 37);
				else if ((active0 & 0x2000000000L) != 0L)
					return jjStartNfaWithStates_0(3, 37, 37);
				return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x4L);
			case 77:
			case 109:
				if ((active0 & 0x200000L) != 0L)
					return jjStartNfaWithStates_0(3, 21, 37);
				break;
			case 78:
			case 110:
				if ((active0 & 0x20000000L) != 0L)
					return jjStartNfaWithStates_0(3, 29, 37);
				else if ((active1 & 0x20000L) != 0L)
					return jjStartNfaWithStates_0(3, 81, 37);
				else if ((active1 & 0x40000L) != 0L){
					jjmatchedKind = 82;
					jjmatchedPos = 3;
				}
				return jjMoveStringLiteralDfa4_0(active0, 0x88000080000000L, active1, 0x8a000L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20L);
			case 82:
			case 114:
				return jjMoveStringLiteralDfa4_0(active0, 0xe000000100000000L, active1, 0x8L);
			case 83:
			case 115:
				if ((active1 & 0x10000L) != 0L)
					return jjStartNfaWithStates_0(3, 80, 37);
				return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L, active1, 0L);
			case 84:
			case 116:
				if ((active0 & 0x8000000L) != 0L)
					return jjStartNfaWithStates_0(3, 27, 37);
				else if ((active1 & 0x4000L) != 0L)
					return jjStartNfaWithStates_0(3, 78, 37);
				return jjMoveStringLiteralDfa4_0(active0, 0x420000000000000L, active1, 0x1L);
			case 85:
			case 117:
				return jjMoveStringLiteralDfa4_0(active0, 0x40000800000L, active1, 0L);
			case 87:
			case 119:
				return jjMoveStringLiteralDfa4_0(active0, 0x4000000000L, active1, 0L);
			case 89:
			case 121:
				return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0L);
			default:
				break;
		}
		return jjStartNfa_0(2, active0, active1);
	}
	private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(2, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(3, active0, active1);
			return 4;
		}
		switch(curChar){
			case 48:
				if ((active1 & 0x80L) != 0L)
					return jjStartNfaWithStates_0(4, 71, 21);
				break;
			case 50:
				if ((active1 & 0x80000L) != 0L)
					return jjStartNfaWithStates_0(4, 83, 21);
				break;
			case 65:
			case 97:
				return jjMoveStringLiteralDfa5_0(active0, 0x400000000000000L, active1, 0x801L);
			case 67:
			case 99:
				return jjMoveStringLiteralDfa5_0(active0, 0x40000L, active1, 0x8000L);
			case 68:
			case 100:
				if ((active1 & 0x2000L) != 0L)
					return jjStartNfaWithStates_0(4, 77, 37);
				return jjMoveStringLiteralDfa5_0(active0, 0xe000000000000000L, active1, 0L);
			case 69:
			case 101:
				if ((active0 & 0x100000000L) != 0L)
					return jjStartNfaWithStates_0(4, 32, 37);
				return jjMoveStringLiteralDfa5_0(active0, 0x4000000000L, active1, 0x8L);
			case 71:
			case 103:
				if ((active0 & 0x80000000L) != 0L)
					return jjStartNfaWithStates_0(4, 31, 37);
				return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L, active1, 0L);
			case 73:
			case 105:
				return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L);
			case 76:
			case 108:
				return jjMoveStringLiteralDfa5_0(active0, 0x40000000000000L, active1, 0L);
			case 78:
			case 110:
				return jjMoveStringLiteralDfa5_0(active0, 0x80000000000L, active1, 0L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa5_0(active0, 0x200000000000000L, active1, 0L);
			case 80:
			case 112:
				return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L, active1, 0L);
			case 82:
			case 114:
				if ((active0 & 0x1000000L) != 0L)
					return jjStartNfaWithStates_0(4, 24, 37);
				else if ((active0 & 0x2000000L) != 0L)
					return jjStartNfaWithStates_0(4, 25, 37);
				else if ((active1 & 0x20L) != 0L)
					return jjStartNfaWithStates_0(4, 69, 37);
				else if ((active1 & 0x400L) != 0L)
					return jjStartNfaWithStates_0(4, 74, 37);
				return jjMoveStringLiteralDfa5_0(active0, 0x820100000800000L, active1, 0L);
			case 84:
			case 116:
				if ((active0 & 0x4000000L) != 0L)
					return jjStartNfaWithStates_0(4, 26, 37);
				else if ((active0 & 0x8000000000000L) != 0L)
					return jjStartNfaWithStates_0(4, 51, 37);
				else if ((active0 & 0x80000000000000L) != 0L)
					return jjStartNfaWithStates_0(4, 55, 37);
				return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L, active1, 0L);
			default:
				break;
		}
		return jjStartNfa_0(3, active0, active1);
	}
	private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(3, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(4, active0, active1);
			return 5;
		}
		switch(curChar){
			case 32:
				return jjMoveStringLiteralDfa6_0(active0, 0x140000000000L, active1, 0L);
			case 49:
				if ((active0 & 0x2000000000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 61, 21);
				break;
			case 50:
				if ((active0 & 0x4000000000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 62, 21);
				break;
			case 65:
			case 97:
				return jjMoveStringLiteralDfa6_0(active0, 0x800000L, active1, 0x8000L);
			case 69:
			case 101:
				if ((active0 & 0x40000000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 54, 37);
				return jjMoveStringLiteralDfa6_0(active0, 0x4000000000L, active1, 0x8L);
			case 71:
			case 103:
				if ((active0 & 0x80000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 43, 37);
				break;
			case 73:
			case 105:
				return jjMoveStringLiteralDfa6_0(active0, 0x400000000000000L, active1, 0L);
			case 78:
			case 110:
				if ((active0 & 0x200000000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 57, 37);
				return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x805L);
			case 79:
			case 111:
				return jjMoveStringLiteralDfa6_0(active0, 0x120000000000000L, active1, 0L);
			case 83:
			case 115:
				if ((active0 & 0x20000000000L) != 0L)
					return jjStartNfaWithStates_0(5, 41, 37);
				return jjMoveStringLiteralDfa6_0(active0, 0x8800000000000000L, active1, 0L);
			case 84:
			case 116:
				if ((active0 & 0x40000L) != 0L)
					return jjStartNfaWithStates_0(5, 18, 37);
				break;
			default:
				break;
		}
		return jjStartNfa_0(4, active0, active1);
	}

	private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(4, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(5, active0, active1);
			return 6;
		}
		switch(curChar){
			case 66:
			case 98:
				return jjMoveStringLiteralDfa7_0(active0, 0x140000000000L, active1, 0L);
			case 67:
			case 99:
				return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x1L);
			case 69:
			case 101:
				return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0L);
			case 71:
			case 103:
				if ((active1 & 0x4L) != 0L)
					return jjStartNfaWithStates_0(6, 66, 37);
				break;
			case 73:
			case 105:
				return jjMoveStringLiteralDfa7_0(active0, 0x20000000000000L, active1, 0L);
			case 76:
			case 108:
				if ((active0 & 0x800000L) != 0L)
					return jjStartNfaWithStates_0(6, 23, 37);
				break;
			case 78:
			case 110:
				if ((active0 & 0x4000000000L) != 0L)
					return jjStartNfaWithStates_0(6, 38, 37);
				else if ((active0 & 0x100000000000000L) != 0L)
					return jjStartNfaWithStates_0(6, 56, 37);
				return jjMoveStringLiteralDfa7_0(active0, 0x400000000000000L, active1, 0L);
			case 83:
			case 115:
				if ((active1 & 0x8L) != 0L)
					return jjStartNfaWithStates_0(6, 67, 37);
				else if ((active1 & 0x800L) != 0L)
					return jjStartNfaWithStates_0(6, 75, 37);
				break;
			case 84:
			case 116:
				return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x8000L);
			case 89:
			case 121:
				return jjMoveStringLiteralDfa7_0(active0, 0x8000000000000000L, active1, 0L);
			default:
				break;
		}
		return jjStartNfa_0(5, active0, active1);
	}

	private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(5, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(6, active0, active1);
			return 7;
		}
		switch(curChar){
			case 67:
			case 99:
				return jjMoveStringLiteralDfa8_0(active0, 0x800000000000000L, active1, 0L);
			case 68:
			case 100:
				if ((active0 & 0x20000000000000L) != 0L)
					return jjStartNfaWithStates_0(7, 53, 37);
				break;
			case 69:
			case 101:
				if ((active1 & 0x1L) != 0L)
					return jjStartNfaWithStates_0(7, 64, 37);
				else if ((active1 & 0x8000L) != 0L)
					return jjStartNfaWithStates_0(7, 79, 37);
				break;
			case 83:
			case 115:
				if ((active0 & 0x400000000000000L) != 0L)
					return jjStartNfaWithStates_0(7, 58, 37);
				else if ((active0 & 0x8000000000000000L) != 0L)
					return jjStartNfaWithStates_0(7, 63, 37);
				break;
			case 89:
			case 121:
				if ((active0 & 0x40000000000L) != 0L)
					return jjStopAtPos(7, 42);
				else if ((active0 & 0x100000000000L) != 0L)
					return jjStopAtPos(7, 44);
				break;
			default:
				break;
		}
		return jjStartNfa_0(6, active0, active1);
	}

	private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1){
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(6, old0, old1);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(7, active0, 0L);
			return 8;
		}
		switch(curChar){
			case 84:
			case 116:
				return jjMoveStringLiteralDfa9_0(active0, 0x800000000000000L);
			default:
				break;
		}
		return jjStartNfa_0(7, active0, 0L);
	}

	private int jjMoveStringLiteralDfa9_0(long old0, long active0){
		if (((active0 &= old0)) == 0L)
			return jjStartNfa_0(7, old0, 0L);
		try{
			curChar = input_stream.readChar();
		}catch(java.io.IOException e){
			jjStopStringLiteralDfa_0(8, active0, 0L);
			return 9;
		}
		switch(curChar){
			case 83:
			case 115:
				if ((active0 & 0x800000000000000L) != 0L)
					return jjStartNfaWithStates_0(9, 59, 37);
				break;
			default:
				break;
		}
		return jjStartNfa_0(8, active0, 0L);
	}

	private int jjStartNfaWithStates_0(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_0(state, pos + 1);
	}

	private int jjMoveNfa_0(int startState, int curPos){
		int startsAt = 0;
		jjnewStateCnt = 37;
		int i = 1;
		jjstateSet[0] = startState;
		int kind = 0x7fffffff;
		for(;;){