/* Generated By:JJTree&JavaCC: Do not edit this line. WolfSQLParser.java */
package hiro.yoshioka.ast.sql.oracle;

import hiro.yoshioka.ast.sql.AbsSQLParser;
import hiro.yoshioka.ast.sql.AbsSimpleNode;
import hiro.yoshioka.ast.sql.IToken;
import hiro.yoshioka.ast.sql.NodeInfomation;
import hiro.yoshioka.ast.sql.util.ASTAssist;
import hiro.yoshioka.sql.resource.DBExprColumn;
import hiro.yoshioka.sql.resource.IDBColumn;
import hiro.yoshioka.sql.resource.IDBTable;
import hiro.yoshioka.sql.resource.TmpSelectionDBSchema;
import hiro.yoshioka.sql.resource.TmpSelectionDBTable;
import hiro.yoshioka.util.StringUtil;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class WolfSQLParser extends AbsSQLParser/* @bgen(jjtree) */implements
		WolfSQLParserTreeConstants, WolfSQLParserConstants {/* @bgen(jjtree) */
	protected JJTWolfSQLParserState jjtree = new JJTWolfSQLParserState();
	/** LastTableIdentifier */
	private IDBTable fc_table;

	public static void main(String args[]) {
		System.out.println("Reading from standard input...");
		WolfSQLParser parser = null;
		if (args.length == 0) {
			parser = new WolfSQLParser(System.in);
		} else if (args.length == 1) {
			try {
				parser = new WolfSQLParser(new java.io.FileInputStream(args[0]));
			} catch (java.io.FileNotFoundException e) {
				return;
			}
		} else {
			return;
		}
		if (parser.parse()) {
			parser.getRoot().dump(">>");
			System.out.println("Thank you.");
		} else {
			System.out.println("Oops.");
			((Throwable) parser._INTERNAL_EXCEPTION).printStackTrace();
		}
	}

	public boolean parse() {
		fOpen = false;
		try {
			fc_table = null;
			_INTERNAL_EXCEPTION = null;
			Start();
		} catch (ParseException e) {
			_INTERNAL_EXCEPTION = e;
		}
		return !hasException();
	}

	public boolean hasException() {
		return _INTERNAL_EXCEPTION != null;
	}

	public Iterator getExpectedTokens() {
		if (_INTERNAL_EXCEPTION == null) {
			return null;
		}

		return _INTERNAL_EXCEPTION.getExpectedTokenIterator();
	}

	public AbsSimpleNode getRoot() {
		return (AbsSimpleNode) jjtree.rootNode();
	}

	public boolean nodeCreated() {
		if (jjtree.nodeCreated()) {
			try {
				jjtree.rootNode();
				return true;
			} catch (ArrayIndexOutOfBoundsException e) {
			}
		}
		return false;
	}

	private void skipTo(Throwable e, int[] kinds) {
		if (e instanceof ParseException) {
			_INTERNAL_EXCEPTION = (ParseException) e;
			try {
				setErrorTokenInNode();
			} catch (Exception e1) {
			}
		} else {
			fLogger.debug("No ParserException... " + e.getClass());
		}
		Token t = null;
		t = getToken(1);
		out: while (true) {
			for (int i = 0; i < kinds.length; i++) {
				if (kinds[i] == t.kind || t.kind == EOF
						|| (fOpen && t.kind == CLOSEPAREN)) {
					break out;
				}
			}
			fLogger.debug("SKIP [" + t.image + "] AT[" + t.beginLine + "/"
					+ t.beginColumn + "]");
			getNextToken();
			t = getToken(1);
		}
	}

	private void skipTo(Throwable e, int kind) {
		skipTo(e, new int[] { kind });
	}

	private void writeMissingLog(String message) {
		Token t = getToken(0);
		fLogger.debug("--MISSING " + message + "-- AT[" + t.beginLine + "/"
				+ t.beginColumn + "]");
	}

	private void skipToFrom(Throwable e) {
		skipTo(e, FROM);
	}

	private void skipToOpen(Throwable e) {
		skipTo(e, OPENPAREN);
	}

	private void skipToClose(Throwable e) {
		skipTo(e, CLOSEPAREN);
	}

	private ASTAssist nextIdentifierMaybeThisTokens(int[] kinds) {
		Token t = getToken(1);
		if (t.kind != IDENTIFIER) {
			return null;
		}
		return nextIdentifierMaybeThisTokens(t, kinds);
	}

	private ASTAssist nextIdentifierMaybeThisTokens(Token t, int[] kinds) {
		String str = null;
		if (t != null) {
			str = t.image.toUpperCase();
		}
		List list = new ArrayList();
		for (int i = 0; i < kinds.length; i++) {
			String exp = tokenImage[kinds[i]].replaceAll(
					StringUtil.DOUBLE_QUOTE_STRING, StringUtil.EMPTY_STRING);
			if (str == null || exp.startsWith(str)) {
				if (kinds[i] == GROUP || kinds[i] == ORDER) {
					exp += " BY";
				}
				list.add(exp);
			}
		}

		if (list.size() > 0) {
			return new ASTAssist(list);
		}
		return null;
	}

	private void printTokens(String head, int tokenCount) {
		StringBuffer buf = new StringBuffer();
		buf.append(head);
		buf.append("LK:[");
		try {
			for (int i = 0; i < tokenCount; i++) {
				buf.append(getToken(i + 1)).append("/");
			}
		} catch (Throwable e) {
		}
		buf.setLength(buf.length() - 1);
		buf.append("]");
		fLogger.debug(buf.toString());
	}

	private void skipToEnd(Throwable e) {
		if (e instanceof ParseException) {
			_INTERNAL_EXCEPTION = (ParseException) e;
			setErrorTokenInNode();
		} else {
			fLogger.debug("No ParserException... " + e.getClass());
		}
		try {
			Token t = null;
			t = getToken(1);
			while ((t.kind != EOF) && (t.kind != SEMICOLON)) {
				getNextToken();
				t = getToken(1);
			}
		} catch (Throwable e1) {
		}
	}

	private void skipToEnd() {
		try {
			Token t = null;
			t = getToken(1);
			while ((t.kind != EOF) && (t.kind != END)) {
				getNextToken();
				t = getToken(1);
			}
		} catch (Throwable e1) {
		}
	}

	private String printToken(Token t) {
		return "This Token[" + t.image + "][" + t.beginLine + "/"
				+ t.beginColumn + "]";
	}

	private void setErrorTokenInNode() {
		SimpleNode sn = ((SimpleNode) jjtree.peekNode());
		if (sn != null) {
			sn.fInfomation = new NodeInfomation(_INTERNAL_EXCEPTION);
		}
	}

	final public void Start() throws ParseException {
		trace_call("Start");
		try {
			/* @bgen(jjtree) Start */
			ASTStart jjtn000 = new ASTStart(this, JJTSTART);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case EXPLAIN:
					ExplainPlan();
					break;
				default:
					jj_la1[0] = jj_gen;
					;
				}
				label_1: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SELECT:
					case INSERT:
					case UPDATE:
					case DELETE:
					case OPENPAREN:
						DML();
						break;
					case ALTER:
					case CREATE:
					case DROP:
					case TRUNCATE:
					case GRANT:
					case REVOKE:
						DDL();
						break;
					case COMMENT:
					case ANALYZE:
						DOL();
						break;
					default:
						jj_la1[1] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SEMICOLON:
						jj_consume_token(SEMICOLON);
						break;
					default:
						jj_la1[2] = jj_gen;
						;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SELECT:
					case INSERT:
					case UPDATE:
					case DELETE:
					case COMMENT:
					case ALTER:
					case CREATE:
					case DROP:
					case ANALYZE:
					case TRUNCATE:
					case GRANT:
					case REVOKE:
					case OPENPAREN:
						;
						break;
					default:
						jj_la1[3] = jj_gen;
						break label_1;
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Start");
		}
	}

	final public void ExplainPlan() throws ParseException {
		trace_call("ExplainPlan");
		try {
			/* @bgen(jjtree) ExplainPlan */
			ASTExplainPlan jjtn000 = new ASTExplainPlan(this, JJTEXPLAINPLAN);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(EXPLAIN);
				if (jj_2_1(2)) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ANALYZE:
						jj_consume_token(ANALYZE);
						break;
					case PLAN:
						jj_consume_token(PLAN);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SET:
							jj_consume_token(SET);
							tableIdentifier();
							jj_consume_token(EQUAL);
							Literal();
							break;
						default:
							jj_la1[4] = jj_gen;
							;
						}
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case INTO:
							jj_consume_token(INTO);
							if (getToken(2).kind == DOT) {
								tableIDDot();
							} else {
								;
							}
							tableIdentifier();
							break;
						default:
							jj_la1[5] = jj_gen;
							;
						}
						jj_consume_token(FOR);
						break;
					default:
						jj_la1[6] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				} else {
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ExplainPlan");
		}
	}

	final public void DML() throws ParseException {
		trace_call("DML");
		try {
			/* @bgen(jjtree) DML */
			ASTDML jjtn000 = new ASTDML(this, JJTDML);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SELECT:
				case OPENPAREN:
					SelectBase();
					break;
				case UPDATE:
					UpdateStatement();
					break;
				case DELETE:
					DeleteStatement();
					break;
				case INSERT:
					InsertStatement();
					break;
				default:
					jj_la1[7] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DML");
		}
	}

	final public void DDL() throws ParseException {
		trace_call("DDL");
		try {
			/* @bgen(jjtree) DDL */
			ASTDDL jjtn000 = new ASTDDL(this, JJTDDL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ALTER:
					Alter();
					break;
				case CREATE:
					Create();
					break;
				case DROP:
					Drop();
					break;
				case TRUNCATE:
					Truncate();
					break;
				case GRANT:
					Grant();
					break;
				case REVOKE:
					Revoke();
					break;
				default:
					jj_la1[8] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DDL");
		}
	}

	final public void DOL() throws ParseException {
		trace_call("DOL");
		try {
			/* @bgen(jjtree) DOL */
			ASTDOL jjtn000 = new ASTDOL(this, JJTDOL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ANALYZE:
					Analyze();
					break;
				case COMMENT:
					Comment();
					break;
				default:
					jj_la1[9] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DOL");
		}
	}

	final public void Analyze() throws ParseException {
		trace_call("Analyze");
		try {
			/* @bgen(jjtree) Analyze */
			ASTAnalyze jjtn000 = new ASTAnalyze(this, JJTANALYZE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(ANALYZE);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TABLE:
					jj_consume_token(TABLE);
					break;
				case INDEX:
					jj_consume_token(INDEX);
					break;
				case CLUSTER:
					jj_consume_token(CLUSTER);
					break;
				default:
					jj_la1[10] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				if (jj_2_2(2)) {
					tableIDDot();
				} else {
					;
				}
				tableIdentifier();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMPUTE:
					jj_consume_token(COMPUTE);
					jj_consume_token(STATISTICS);
					break;
				case ESTIMATE:
					jj_consume_token(ESTIMATE);
					jj_consume_token(STATISTICS);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SAMPLE:
						jj_consume_token(SAMPLE);
						jj_consume_token(INTEGER_LITERAL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case ROWS:
							jj_consume_token(ROWS);
							break;
						case PERCENT:
							jj_consume_token(PERCENT);
							break;
						default:
							jj_la1[11] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[12] = jj_gen;
						;
					}
					break;
				default:
					jj_la1[13] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Analyze");
		}
	}

	final public void Comment() throws ParseException {
		trace_call("Comment");
		try {
			/* @bgen(jjtree) Comment */
			ASTComment jjtn000 = new ASTComment(this, JJTCOMMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(COMMENT);
				jj_consume_token(ON);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TABLE:
					jj_consume_token(TABLE);
					try {
						if (jj_2_3(2)) {
							tableIDDot();
						} else {
							;
						}
						tableIdentifier();
					} catch (Throwable e) {
						fLogger.debug("--MISSING Column()  AT Comment--");
						jjtn000.setAssist(new ASTAssist(
								ASTAssist.ASSIST_COLUMN, e));
						skipToEnd(e);
					}
					break;
				case COLUMN:
					jj_consume_token(COLUMN);
					SchemaTableColumn();
					break;
				default:
					jj_la1[14] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(IS);
				jj_consume_token(CHARACTER_LITERAL);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Comment");
		}
	}

	// ------------------------------------------------------------------------------
	// CREATE STATEMENTE
	// ------------------------------------------------------------------------------
	final public void Create() throws ParseException {
		trace_call("Create");
		try {
			/* @bgen(jjtree) Create */
			ASTCreate jjtn000 = new ASTCreate(this, JJTCREATE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(CREATE);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OR:
					jj_consume_token(OR);
					jj_consume_token(REPLACE);
					break;
				default:
					jj_la1[15] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case GLOBAL:
				case TABLE:
					CreateTable();
					break;
				case USER:
					CreateUser();
					break;
				case TRIGGER:
					CreateTrigger();
					break;
				case PROCEDURE:
					CreateProcedure();
					break;
				case FUNCTION:
					CreateFunction();
					break;
				default:
					jj_la1[16] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Create");
		}
	}

	final public void Drop() throws ParseException {
		trace_call("Drop");
		try {
			/* @bgen(jjtree) Drop */
			ASTDrop jjtn000 = new ASTDrop(this, JJTDROP);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(DROP);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TABLE:
					jj_consume_token(TABLE);
					break;
				case INDEX:
					jj_consume_token(INDEX);
					break;
				case SEQUENCE:
					jj_consume_token(SEQUENCE);
					break;
				case SCHEMA:
					jj_consume_token(SCHEMA);
					break;
				case TRIGGER:
					jj_consume_token(TRIGGER);
					break;
				case USER:
					jj_consume_token(USER);
					break;
				case VIEW:
					jj_consume_token(VIEW);
					break;
				case FUNCTION:
					jj_consume_token(FUNCTION);
					break;
				case PROCEDURE:
					jj_consume_token(PROCEDURE);
					break;
				default:
					jj_la1[17] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case IF:
					jj_consume_token(IF);
					jj_consume_token(EXISTS);
					break;
				default:
					jj_la1[18] = jj_gen;
					;
				}
				if (jj_2_4(2)) {
					IDDot();
				} else {
					;
				}
				Identifier();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CASCADE:
				case RESTRICT:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CASCADE:
						jj_consume_token(CASCADE);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case CONSTRAINTS:
							jj_consume_token(CONSTRAINTS);
							break;
						default:
							jj_la1[19] = jj_gen;
							;
						}
						break;
					case RESTRICT:
						jj_consume_token(RESTRICT);
						break;
					default:
						jj_la1[20] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[21] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Drop");
		}
	}

	final public void Truncate() throws ParseException {
		trace_call("Truncate");
		try {
			/* @bgen(jjtree) Truncate */
			ASTTruncate jjtn000 = new ASTTruncate(this, JJTTRUNCATE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(TRUNCATE);
				jj_consume_token(TABLE);
				if (jj_2_5(2)) {
					IDDot();
				} else {
					;
				}
				tableIdentifier();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Truncate");
		}
	}

	final public void Grant() throws ParseException {
		trace_call("Grant");
		try {
			/* @bgen(jjtree) Grant */
			ASTGrant jjtn000 = new ASTGrant(this, JJTGRANT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(GRANT);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DBA_DDL:
				case ADMIN:
				case RESOURCE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ADMIN:
						jj_consume_token(ADMIN);
						break;
					case DBA_DDL:
						jj_consume_token(DBA_DDL);
						break;
					case RESOURCE:
						jj_consume_token(RESOURCE);
						break;
					default:
						jj_la1[22] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				case SELECT:
				case INSERT:
				case UPDATE:
				case DELETE:
				case REFERENCES:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case INSERT:
						jj_consume_token(INSERT);
						break;
					case DELETE:
						jj_consume_token(DELETE);
						break;
					case UPDATE:
						jj_consume_token(UPDATE);
						break;
					case SELECT:
						jj_consume_token(SELECT);
						break;
					case REFERENCES:
						jj_consume_token(REFERENCES);
						break;
					default:
						jj_la1[23] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(ON);
					Identifier();
					break;
				default:
					jj_la1[24] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(TO);
				Identifier();
				label_2: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[25] = jj_gen;
						break label_2;
					}
					jj_consume_token(COMMA);
					Identifier();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Grant");
		}
	}

	final public void Revoke() throws ParseException {
		trace_call("Revoke");
		try {
			/* @bgen(jjtree) Revoke */
			ASTRevoke jjtn000 = new ASTRevoke(this, JJTREVOKE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(REVOKE);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DBA_DDL:
				case ADMIN:
				case RESOURCE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ADMIN:
						jj_consume_token(ADMIN);
						break;
					case DBA_DDL:
						jj_consume_token(DBA_DDL);
						break;
					case RESOURCE:
						jj_consume_token(RESOURCE);
						break;
					default:
						jj_la1[26] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				case SELECT:
				case INSERT:
				case UPDATE:
				case DELETE:
				case REFERENCES:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case INSERT:
						jj_consume_token(INSERT);
						break;
					case DELETE:
						jj_consume_token(DELETE);
						break;
					case UPDATE:
						jj_consume_token(UPDATE);
						break;
					case SELECT:
						jj_consume_token(SELECT);
						break;
					case REFERENCES:
						jj_consume_token(REFERENCES);
						break;
					default:
						jj_la1[27] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(ON);
					Identifier();
					break;
				default:
					jj_la1[28] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(FROM);
				Identifier();
				label_3: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[29] = jj_gen;
						break label_3;
					}
					jj_consume_token(COMMA);
					Identifier();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Revoke");
		}
	}

	final public void CreateTrigger() throws ParseException {
		trace_call("CreateTrigger");
		try {
			/* @bgen(jjtree) CreateTrigger */
			ASTCreateTrigger jjtn000 = new ASTCreateTrigger(this,
					JJTCREATETRIGGER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(TRIGGER);
				try {
					if (jj_2_6(2)) {
						IDDot();
					} else {
						;
					}
					Identifier();
				} catch (Throwable e) {
					writeMissingLog("Identifier IN Create Trigger()");
					skipToOpen(e);
				}
				try {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case BEFORE:
						jj_consume_token(BEFORE);
						break;
					case AFTER:
						jj_consume_token(AFTER);
						break;
					case INSTED:
						jj_consume_token(INSTED);
						jj_consume_token(OF);
						break;
					default:
						jj_la1[30] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					Dml_eventClause();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case WHEN:
						jj_consume_token(WHEN);
						jj_consume_token(OPENPAREN);
						Condition();
						jj_consume_token(CLOSEPAREN);
						break;
					default:
						jj_la1[31] = jj_gen;
						;
					}
					Sub_program_body();
				} catch (Throwable e) {
					writeMissingLog("Missing IN Sub_program_body()");
					skipToEnd(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CreateTrigger");
		}
	}

	final public void Dml_eventClause() throws ParseException {
		trace_call("Dml_eventClause");
		try {
			/* @bgen(jjtree) Dml_eventClause */
			ASTDml_eventClause jjtn000 = new ASTDml_eventClause(this,
					JJTDML_EVENTCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				Dml_eventClauseUnit1();
				label_4: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OR:
						;
						break;
					default:
						jj_la1[32] = jj_gen;
						break label_4;
					}
					jj_consume_token(OR);
					Dml_eventClauseUnit1();
				}
				jj_consume_token(ON);
				if (jj_2_7(2)) {
					IDDot();
				} else {
					;
				}
				Identifier();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case FOR:
					jj_consume_token(FOR);
					jj_consume_token(EACH);
					jj_consume_token(ROW);
					break;
				default:
					jj_la1[33] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Dml_eventClause");
		}
	}

	final public void Dml_eventClauseUnit1() throws ParseException {
		trace_call("Dml_eventClauseUnit1");
		try {
			/* @bgen(jjtree) Dml_eventClauseUnit1 */
			ASTDml_eventClauseUnit1 jjtn000 = new ASTDml_eventClauseUnit1(this,
					JJTDML_EVENTCLAUSEUNIT1);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DELETE:
					jj_consume_token(DELETE);
					break;
				case INSERT:
					jj_consume_token(INSERT);
					break;
				case UPDATE:
					jj_consume_token(UPDATE);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OF:
						jj_consume_token(OF);
						Identifier();
						label_5: while (true) {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case COMMA:
								;
								break;
							default:
								jj_la1[34] = jj_gen;
								break label_5;
							}
							jj_consume_token(COMMA);
							Identifier();
						}
						break;
					default:
						jj_la1[35] = jj_gen;
						;
					}
					break;
				default:
					jj_la1[36] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Dml_eventClauseUnit1");
		}
	}

	final public void CreateFunction() throws ParseException {
		trace_call("CreateFunction");
		try {
			/* @bgen(jjtree) CreateFunction */
			ASTCreateFunction jjtn000 = new ASTCreateFunction(this,
					JJTCREATEFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(FUNCTION);
				try {
					if (jj_2_8(2)) {
						IDDot();
					} else {
						;
					}
					tableIdentifier();
				} catch (Throwable e) {
					writeMissingLog("Identifier IN Create Function()");
					skipToOpen(e);
				}
				try {
					RelationalListWithIO();
					jj_consume_token(RETURN);
					jj_consume_token(COLUMN_TYPE);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case IS:
						jj_consume_token(IS);
						break;
					case AS:
						jj_consume_token(AS);
						break;
					default:
						jj_la1[37] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					Sub_program_body();
					jj_consume_token(RETURN);
					Expr();
					jj_consume_token(SEMICOLON);
				} catch (Throwable e) {
					writeMissingLog("Missing IN Sub_program_body()");
					skipToEnd(e);
				}
				jj_consume_token(END);
				jj_consume_token(SEMICOLON);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CreateFunction");
		}
	}

	final public void CreateProcedure() throws ParseException {
		trace_call("CreateProcedure");
		try {
			/* @bgen(jjtree) CreateProcedure */
			ASTCreateProcedure jjtn000 = new ASTCreateProcedure(this,
					JJTCREATEPROCEDURE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(PROCEDURE);
				try {
					if (jj_2_9(2)) {
						IDDot();
					} else {
						;
					}
					tableIdentifier();
				} catch (Throwable e) {
					writeMissingLog("Identifier IN Create Procedure()");
					skipToOpen(e);
				}
				try {
					RelationalListWithIO();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case IS:
						jj_consume_token(IS);
						break;
					case AS:
						jj_consume_token(AS);
						break;
					default:
						jj_la1[38] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					Sub_program_body();
				} catch (Throwable e) {
					writeMissingLog("Missing IN Sub_program_body()");
					skipToEnd(e);
				}
				jj_consume_token(END);
				jj_consume_token(SEMICOLON);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CreateProcedure");
		}
	}

	final public void Sub_program_body() throws ParseException {
		trace_call("Sub_program_body");
		try {
			/* @bgen(jjtree) Sub_program_body */
			ASTSub_program_body jjtn000 = new ASTSub_program_body(this,
					JJTSUB_PROGRAM_BODY);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_10(2)) {
					AssignmentStatements();
				} else {
					;
				}
				jj_consume_token(BEGIN);
				label_6: while (true) {
					if (jj_2_11(1)) {
						PLSQLStatement();
					} else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case FOR:
							LoopStatement();
							break;
						default:
							jj_la1[39] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
					if (jj_2_12(2)) {
						;
					} else {
						break label_6;
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Sub_program_body");
		}
	}

	final public void PLSQLStatement() throws ParseException {
		trace_call("PLSQLStatement");
		try {
			/* @bgen(jjtree) PLSQLStatement */
			ASTPLSQLStatement jjtn000 = new ASTPLSQLStatement(this,
					JJTPLSQLSTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_13(4)) {
					DML();
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ALTER:
					case CREATE:
					case DROP:
					case TRUNCATE:
					case GRANT:
					case REVOKE:
						DDL();
						break;
					case COMMENT:
					case ANALYZE:
						DOL();
						break;
					default:
						jj_la1[40] = jj_gen;
						if (jj_2_14(1)) {
							AssignmentExpr();
						} else {
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
				}
				jj_consume_token(SEMICOLON);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("PLSQLStatement");
		}
	}

	final public void AssignmentExpr() throws ParseException {
		trace_call("AssignmentExpr");
		try {
			/* @bgen(jjtree) AssignmentExpr */
			ASTAssignmentExpr jjtn000 = new ASTAssignmentExpr(this,
					JJTASSIGNMENTEXPR);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_15(3)) {
					Identifier();
					jj_consume_token(ASSIGN);
				} else {
					;
				}
				Expr();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AssignmentExpr");
		}
	}

	final public void LoopStatement() throws ParseException {
		trace_call("LoopStatement");
		try {
			/* @bgen(jjtree) LoopStatement */
			ASTLoopStatement jjtn000 = new ASTLoopStatement(this,
					JJTLOOPSTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(FOR);
				Identifier();
				jj_consume_token(IN);
				NumberLiteral();
				jj_consume_token(341);
				NumberLiteral();
				jj_consume_token(LOOP);
				try {
					label_7: while (true) {
						PLSQLStatement();
						if (jj_2_16(2)) {
							;
						} else {
							break label_7;
						}
					}
				} catch (Throwable e) {
					e.printStackTrace();
					writeMissingLog("plsqlstatement IN Create()");
					skipTo(e, new int[] { END });
				}
				jj_consume_token(END);
				jj_consume_token(LOOP);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("LoopStatement");
		}
	}

	final public void AssignmentStatements() throws ParseException {
		trace_call("AssignmentStatements");
		try {
			/* @bgen(jjtree) AssignmentStatements */
			ASTAssignmentStatements jjtn000 = new ASTAssignmentStatements(this,
					JJTASSIGNMENTSTATEMENTS);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DECLARE:
					jj_consume_token(DECLARE);
					break;
				default:
					jj_la1[41] = jj_gen;
					;
				}
				label_8: while (true) {
					AssignmentStatementSub();
					if (jj_2_17(1)) {
						;
					} else {
						break label_8;
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AssignmentStatements");
		}
	}

	final public void AssignmentStatementSub() throws ParseException {
		trace_call("AssignmentStatementSub");
		try {
			/* @bgen(jjtree) AssignmentStatementSub */
			ASTAssignmentStatementSub jjtn000 = new ASTAssignmentStatementSub(
					this, JJTASSIGNMENTSTATEMENTSUB);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				SchemaTableColumn();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COLUMN_TYPE:
					FullType();
					break;
				default:
					jj_la1[42] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ASSIGN:
					jj_consume_token(ASSIGN);
					Expr();
					break;
				default:
					jj_la1[43] = jj_gen;
					;
				}
				jj_consume_token(SEMICOLON);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AssignmentStatementSub");
		}
	}

	final public void CreateTable() throws ParseException {
		trace_call("CreateTable");
		try {
			/* @bgen(jjtree) CreateTable */
			ASTCreateTable jjtn000 = new ASTCreateTable(this, JJTCREATETABLE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case GLOBAL:
					jj_consume_token(GLOBAL);
					jj_consume_token(TEMPORARY);
					break;
				default:
					jj_la1[44] = jj_gen;
					;
				}
				jj_consume_token(TABLE);
				try {
					if (jj_2_18(2)) {
						IDDot();
					} else {
						;
					}
					tableIdentifier();
				} catch (Throwable e) {
					writeMissingLog("Identifier IN Create()");
					skipToOpen(e);
				}
				RelationalList();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ON:
					jj_consume_token(ON);
					jj_consume_token(COMMIT);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DELETE:
						jj_consume_token(DELETE);
						break;
					case PRESERVE:
						jj_consume_token(PRESERVE);
						break;
					default:
						jj_la1[45] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(ROWS);
					break;
				default:
					jj_la1[46] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case STORAGE:
				case TABLESPACE:
				case CLUSTER:
				case PCTFREE:
				case PCTUSED:
				case INITRANS:
				case MAXTRANS:
				case LOGGING:
				case NOLOGGING:
				case ORGANIZATION:
				case COMPRESS:
				case NOCOMPRESS:
					PhysicalPropertiesClause();
					break;
				default:
					jj_la1[47] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CACHE:
				case NOCACHE:
					TablePropertiesClause();
					break;
				default:
					jj_la1[48] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CreateTable");
		}
	}

	final public void TablePropertiesClause() throws ParseException {
		trace_call("TablePropertiesClause");
		try {
			/* @bgen(jjtree) TablePropertiesClause */
			ASTTablePropertiesClause jjtn000 = new ASTTablePropertiesClause(
					this, JJTTABLEPROPERTIESCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CACHE:
					jj_consume_token(CACHE);
					break;
				case NOCACHE:
					jj_consume_token(NOCACHE);
					break;
				default:
					jj_la1[49] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("TablePropertiesClause");
		}
	}

	final public void PhysicalPropertiesClause() throws ParseException {
		trace_call("PhysicalPropertiesClause");
		try {
			/* @bgen(jjtree) PhysicalPropertiesClause */
			ASTPhysicalPropertiesClause jjtn000 = new ASTPhysicalPropertiesClause(
					this, JJTPHYSICALPROPERTIESCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case STORAGE:
				case TABLESPACE:
				case PCTFREE:
				case PCTUSED:
				case INITRANS:
				case MAXTRANS:
				case LOGGING:
				case NOLOGGING:
				case COMPRESS:
				case NOCOMPRESS:
					label_9: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case STORAGE:
						case TABLESPACE:
						case PCTFREE:
						case PCTUSED:
						case INITRANS:
						case MAXTRANS:
						case LOGGING:
						case NOLOGGING:
							SegmentAttributesClause();
							break;
						case COMPRESS:
						case NOCOMPRESS:
							TableCompressionClause();
							break;
						default:
							jj_la1[50] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case STORAGE:
						case TABLESPACE:
						case PCTFREE:
						case PCTUSED:
						case INITRANS:
						case MAXTRANS:
						case LOGGING:
						case NOLOGGING:
						case COMPRESS:
						case NOCOMPRESS:
							;
							break;
						default:
							jj_la1[51] = jj_gen;
							break label_9;
						}
					}
					break;
				case ORGANIZATION:
					jj_consume_token(ORGANIZATION);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case HEAP:
						jj_consume_token(HEAP);
						label_10: while (true) {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case STORAGE:
							case TABLESPACE:
							case PCTFREE:
							case PCTUSED:
							case INITRANS:
							case MAXTRANS:
							case LOGGING:
							case NOLOGGING:
							case COMPRESS:
							case NOCOMPRESS:
								;
								break;
							default:
								jj_la1[52] = jj_gen;
								break label_10;
							}
							if (jj_2_19(2)) {
								SegmentAttributesClause();
							} else {
								switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
								case COMPRESS:
								case NOCOMPRESS:
									TableCompressionClause();
									break;
								default:
									jj_la1[53] = jj_gen;
									jj_consume_token(-1);
									throw new ParseException();
								}
							}
						}
						break;
					case INDEX:
						jj_consume_token(INDEX);
						label_11: while (true) {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case STORAGE:
							case TABLESPACE:
							case PCTFREE:
							case PCTTHRESHOLD:
							case PCTUSED:
							case INITRANS:
							case MAXTRANS:
							case LOGGING:
							case NOLOGGING:
							case COMPRESS:
							case NOCOMPRESS:
								;
								break;
							default:
								jj_la1[54] = jj_gen;
								break label_11;
							}
							if (jj_2_20(2)) {
								SegmentAttributesClause();
							} else {
								switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
								case PCTTHRESHOLD:
								case COMPRESS:
								case NOCOMPRESS:
									IndexOrgTableClause();
									break;
								default:
									jj_la1[55] = jj_gen;
									jj_consume_token(-1);
									throw new ParseException();
								}
							}
						}
						break;
					default:
						jj_la1[56] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				case CLUSTER:
					jj_consume_token(CLUSTER);
					tableIdentifier();
					jj_consume_token(OPENPAREN);
					tableIdentifier();
					label_12: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[57] = jj_gen;
							break label_12;
						}
						jj_consume_token(COMMA);
						tableIdentifier();
					}
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[58] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("PhysicalPropertiesClause");
		}
	}

	final public void IndexOrgTableClause() throws ParseException {
		trace_call("IndexOrgTableClause");
		try {
			/* @bgen(jjtree) IndexOrgTableClause */
			ASTIndexOrgTableClause jjtn000 = new ASTIndexOrgTableClause(this,
					JJTINDEXORGTABLECLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PCTTHRESHOLD:
					jj_consume_token(PCTTHRESHOLD);
					NumberLiteral();
					break;
				case COMPRESS:
				case NOCOMPRESS:
					TableCompressionClause();
					break;
				default:
					jj_la1[59] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("IndexOrgTableClause");
		}
	}

	final public void TableCompressionClause() throws ParseException {
		trace_call("TableCompressionClause");
		try {
			/* @bgen(jjtree) TableCompressionClause */
			ASTTableCompressionClause jjtn000 = new ASTTableCompressionClause(
					this, JJTTABLECOMPRESSIONCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMPRESS:
					jj_consume_token(COMPRESS);
					NumberLiteral();
					break;
				case NOCOMPRESS:
					jj_consume_token(NOCOMPRESS);
					break;
				default:
					jj_la1[60] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("TableCompressionClause");
		}
	}

	final public void SegmentAttributesClause() throws ParseException {
		trace_call("SegmentAttributesClause");
		try {
			/* @bgen(jjtree) SegmentAttributesClause */
			ASTSegmentAttributesClause jjtn000 = new ASTSegmentAttributesClause(
					this, JJTSEGMENTATTRIBUTESCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case STORAGE:
				case PCTFREE:
				case PCTUSED:
				case INITRANS:
				case MAXTRANS:
					PhysicalAttributesClause();
					break;
				case LOGGING:
				case NOLOGGING:
					LoggingClause();
					break;
				case TABLESPACE:
					jj_consume_token(TABLESPACE);
					tableIdentifier();
					break;
				default:
					jj_la1[61] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SegmentAttributesClause");
		}
	}

	final public void CreateUser() throws ParseException {
		trace_call("CreateUser");
		try {
			/* @bgen(jjtree) CreateUser */
			ASTCreateUser jjtn000 = new ASTCreateUser(this, JJTCREATEUSER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(USER);
				tableIdentifier();
				jj_consume_token(IDENTIFIED);
				jj_consume_token(BY);
				Identifier();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CreateUser");
		}
	}

	final public void RelationalList() throws ParseException {
		trace_call("RelationalList");
		try {
			/* @bgen(jjtree) RelationalList */
			ASTRelationalList jjtn000 = new ASTRelationalList(this,
					JJTRELATIONALLIST);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(OPENPAREN);
				try {
					RelationalProperties();
					label_13: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[62] = jj_gen;
							break label_13;
						}
						jj_consume_token(COMMA);
						RelationalProperties();
					}
				} catch (Throwable e) {
					writeMissingLog("RelationalProperties IN RelationalList()");
					skipToClose(e);
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RelationalList");
		}
	}

	final public void RelationalListWithIO() throws ParseException {
		trace_call("RelationalListWithIO");
		try {
			/* @bgen(jjtree) RelationalListWithIO */
			ASTRelationalListWithIO jjtn000 = new ASTRelationalListWithIO(this,
					JJTRELATIONALLISTWITHIO);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(OPENPAREN);
				try {
					RelationalPropertiesIO();
					label_14: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[63] = jj_gen;
							break label_14;
						}
						jj_consume_token(COMMA);
						RelationalPropertiesIO();
					}
				} catch (Throwable e) {
					writeMissingLog("RelationalPropertiesWithIO IN RelationalList()");
					skipToClose(e);
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RelationalListWithIO");
		}
	}

	final public void RelationalPropertiesIO() throws ParseException {
		trace_call("RelationalPropertiesIO");
		try {
			/* @bgen(jjtree) RelationalPropertiesIO */
			ASTRelationalPropertiesIO jjtn000 = new ASTRelationalPropertiesIO(
					this, JJTRELATIONALPROPERTIESIO);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				tableIdentifier();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case IN:
					jj_consume_token(IN);
					break;
				default:
					jj_la1[64] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OUT:
					jj_consume_token(OUT);
					break;
				default:
					jj_la1[65] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOCOPY:
					jj_consume_token(NOCOPY);
					break;
				default:
					jj_la1[66] = jj_gen;
					;
				}
				jj_consume_token(COLUMN_TYPE);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RelationalPropertiesIO");
		}
	}

	final public void RelationalProperties() throws ParseException {
		trace_call("RelationalProperties");
		try {
			/* @bgen(jjtree) RelationalProperties */
			ASTRelationalProperties jjtn000 = new ASTRelationalProperties(this,
					JJTRELATIONALPROPERTIES);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			printTokens("RelationalProperties>", 7);
			try {
				if (jj_2_21(3)) {
					DefineColumn();
					printTokens("hogehoge>", 7);
					label_15: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case NOT:
						case NULL:
						case CHECK:
						case PRIMARY:
						case REFERENCES:
						case UNIQUE:
							;
							break;
						default:
							jj_la1[67] = jj_gen;
							break label_15;
						}
						ColumnConstraint();
					}
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CHECK:
					case CONSTRAINT:
					case FOREIGN:
					case PRIMARY:
					case UNIQUE:
						TableConstraint();
						break;
					default:
						jj_la1[68] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RelationalProperties");
		}
	}

	final public void TableConstraint() throws ParseException {
		trace_call("TableConstraint");
		try {
			/* @bgen(jjtree) TableConstraint */
			ASTTableConstraint jjtn000 = new ASTTableConstraint(this,
					JJTTABLECONSTRAINT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CONSTRAINT:
					jj_consume_token(CONSTRAINT);
					tableIdentifier();
					break;
				default:
					jj_la1[69] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PRIMARY:
				case UNIQUE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case UNIQUE:
						jj_consume_token(UNIQUE);
						break;
					case PRIMARY:
						jj_consume_token(PRIMARY);
						jj_consume_token(KEY);
						break;
					default:
						jj_la1[70] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					tableIdentifier();
					label_16: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[71] = jj_gen;
							break label_16;
						}
						jj_consume_token(COMMA);
						tableIdentifier();
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case FOREIGN:
					ForeignKeyClause();
					break;
				case CHECK:
					jj_consume_token(CHECK);
					break;
				default:
					jj_la1[72] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
				case USING:
				case ENABLE:
				case DISABLE:
				case DEFERRABLE:
					ConstraintState();
					break;
				default:
					jj_la1[73] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("TableConstraint");
		}
	}

	final public void ColumnConstraint() throws ParseException {
		trace_call("ColumnConstraint");
		try {
			/* @bgen(jjtree) ColumnConstraint */
			ASTColumnConstraint jjtn000 = new ASTColumnConstraint(this,
					JJTCOLUMNCONSTRAINT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
				case NULL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case NOT:
						jj_consume_token(NOT);
						break;
					default:
						jj_la1[74] = jj_gen;
						;
					}
					jj_consume_token(NULL);
					break;
				case UNIQUE:
					jj_consume_token(UNIQUE);
					break;
				case PRIMARY:
					jj_consume_token(PRIMARY);
					jj_consume_token(KEY);
					break;
				case REFERENCES:
					ReferencesClause();
					break;
				case CHECK:
					jj_consume_token(CHECK);
					break;
				default:
					jj_la1[75] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				label_17: while (true) {
					if (jj_2_22(3)) {
						;
					} else {
						break label_17;
					}
					ConstraintState();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ColumnConstraint");
		}
	}

	final public void ForeignKeyClause() throws ParseException {
		trace_call("ForeignKeyClause");
		try {
			/* @bgen(jjtree) ForeignKeyClause */
			ASTForeignKeyClause jjtn000 = new ASTForeignKeyClause(this,
					JJTFOREIGNKEYCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(FOREIGN);
				jj_consume_token(KEY);
				jj_consume_token(OPENPAREN);
				tableIdentifier();
				label_18: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[76] = jj_gen;
						break label_18;
					}
					jj_consume_token(COMMA);
					tableIdentifier();
				}
				jj_consume_token(CLOSEPAREN);
				ReferencesClause();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ForeignKeyClause");
		}
	}

	final public void ConstraintState() throws ParseException {
		trace_call("ConstraintState");
		try {
			/* @bgen(jjtree) ConstraintState */
			ASTConstraintState jjtn000 = new ASTConstraintState(this,
					JJTCONSTRAINTSTATE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ENABLE:
					jj_consume_token(ENABLE);
					break;
				case DISABLE:
					jj_consume_token(DISABLE);
					break;
				case NOT:
				case DEFERRABLE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case NOT:
						jj_consume_token(NOT);
						break;
					default:
						jj_la1[77] = jj_gen;
						;
					}
					jj_consume_token(DEFERRABLE);
					break;
				case USING:
					UsingIndexClause();
					break;
				default:
					jj_la1[78] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConstraintState");
		}
	}

	final public void UsingIndexClause() throws ParseException {
		trace_call("UsingIndexClause");
		try {
			/* @bgen(jjtree) UsingIndexClause */
			ASTUsingIndexClause jjtn000 = new ASTUsingIndexClause(this,
					JJTUSINGINDEXCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(USING);
				jj_consume_token(INDEX);
				label_19: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DEFAULT2:
					case STORAGE:
					case TABLESPACE:
					case PCTFREE:
					case PCTUSED:
					case INITRANS:
					case MAXTRANS:
					case LOGGING:
					case NOLOGGING:
						;
						break;
					default:
						jj_la1[79] = jj_gen;
						break label_19;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case STORAGE:
					case PCTFREE:
					case PCTUSED:
					case INITRANS:
					case MAXTRANS:
						PhysicalAttributesClause();
						break;
					case LOGGING:
					case NOLOGGING:
						LoggingClause();
						break;
					case DEFAULT2:
					case TABLESPACE:
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case TABLESPACE:
							jj_consume_token(TABLESPACE);
							tableIdentifier();
							break;
						case DEFAULT2:
							jj_consume_token(DEFAULT2);
							break;
						default:
							jj_la1[80] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[81] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("UsingIndexClause");
		}
	}

	final public void PhysicalAttributesClause() throws ParseException {
		trace_call("PhysicalAttributesClause");
		try {
			/* @bgen(jjtree) PhysicalAttributesClause */
			ASTPhysicalAttributesClause jjtn000 = new ASTPhysicalAttributesClause(
					this, JJTPHYSICALATTRIBUTESCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PCTFREE:
					jj_consume_token(PCTFREE);
					NumberLiteral();
					break;
				case PCTUSED:
					jj_consume_token(PCTUSED);
					NumberLiteral();
					break;
				case INITRANS:
					jj_consume_token(INITRANS);
					NumberLiteral();
					break;
				case MAXTRANS:
					jj_consume_token(MAXTRANS);
					NumberLiteral();
					break;
				case STORAGE:
					StorageClause();
					break;
				default:
					jj_la1[82] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("PhysicalAttributesClause");
		}
	}

	final public void LoggingClause() throws ParseException {
		trace_call("LoggingClause");
		try {
			/* @bgen(jjtree) LoggingClause */
			ASTLoggingClause jjtn000 = new ASTLoggingClause(this,
					JJTLOGGINGCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LOGGING:
					jj_consume_token(LOGGING);
					break;
				case NOLOGGING:
					jj_consume_token(NOLOGGING);
					break;
				default:
					jj_la1[83] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("LoggingClause");
		}
	}

	final public void StorageClause() throws ParseException {
		trace_call("StorageClause");
		try {
			/* @bgen(jjtree) StorageClause */
			ASTStorageClause jjtn000 = new ASTStorageClause(this,
					JJTSTORAGECLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(STORAGE);
				jj_consume_token(OPENPAREN);
				label_20: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case INITIAL:
						jj_consume_token(INITIAL);
						Size();
						break;
					case NEXT:
						jj_consume_token(NEXT);
						Size();
						break;
					case MINEXTENTS:
						jj_consume_token(MINEXTENTS);
						NumberLiteral();
						break;
					case MAXEXTENTS:
						jj_consume_token(MAXEXTENTS);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case INTEGER_LITERAL:
							NumberLiteral();
							break;
						case UNLIMITED:
							jj_consume_token(UNLIMITED);
							break;
						default:
							jj_la1[84] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					case PCTINCREASE:
						jj_consume_token(PCTINCREASE);
						NumberLiteral();
						break;
					case FREELIST:
						jj_consume_token(FREELIST);
						jj_consume_token(GROUPS);
						NumberLiteral();
						break;
					case FREELISTS:
						jj_consume_token(FREELISTS);
						NumberLiteral();
						break;
					case OPTIMAL:
						jj_consume_token(OPTIMAL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case INTEGER_LITERAL:
						case NULL:
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case INTEGER_LITERAL:
								NumberLiteral();
								break;
							case NULL:
								jj_consume_token(NULL);
								break;
							default:
								jj_la1[85] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
							break;
						default:
							jj_la1[86] = jj_gen;
							;
						}
						break;
					case BUFFER_POOL:
						jj_consume_token(BUFFER_POOL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case KEEP:
							jj_consume_token(KEEP);
							break;
						case RECYCLE:
							jj_consume_token(RECYCLE);
							break;
						case DEFAULT2:
							jj_consume_token(DEFAULT2);
							break;
						default:
							jj_la1[87] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[88] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case FREELISTS:
					case INITIAL:
					case MINEXTENTS:
					case MAXEXTENTS:
					case NEXT:
					case PCTINCREASE:
					case FREELIST:
					case OPTIMAL:
					case BUFFER_POOL:
						;
						break;
					default:
						jj_la1[89] = jj_gen;
						break label_20;
					}
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("StorageClause");
		}
	}

	final public void Size() throws ParseException {
		trace_call("Size");
		try {
			/* @bgen(jjtree) Size */
			ASTSize jjtn000 = new ASTSize(this, JJTSIZE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SIZE_LITERAL:
					jj_consume_token(SIZE_LITERAL);
					break;
				case INTEGER_LITERAL:
					NumberLiteral();
					break;
				default:
					jj_la1[90] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Size");
		}
	}

	// ------------------------------------------------------------------------------
	// ALTER STATEMENTE
	// ------------------------------------------------------------------------------
	final public void Alter() throws ParseException {
		trace_call("Alter");
		try {
			/* @bgen(jjtree) Alter */
			ASTAlter jjtn000 = new ASTAlter(this, JJTALTER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(ALTER);
				try {
					if (jj_2_23(2)) {
						AlterTable();
					} else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SESSION:
						case CLOSE:
							AlterSession();
							break;
						default:
							jj_la1[91] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
				} catch (Throwable e) {
					writeMissingLog(" IN ALTER()");
					skipToEnd(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Alter");
		}
	}

	final public void AlterSession() throws ParseException {
		trace_call("AlterSession");
		try {
			/* @bgen(jjtree) AlterSession */
			ASTAlterSession jjtn000 = new ASTAlterSession(this, JJTALTERSESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SESSION:
					jj_consume_token(SESSION);
					AlterSessionSetClause();
					break;
				case CLOSE:
					jj_consume_token(CLOSE);
					jj_consume_token(DATABASE);
					jj_consume_token(LINK);
					tableIdentifier();
					break;
				default:
					jj_la1[92] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AlterSession");
		}
	}

	final public void AlterSessionSetClause() throws ParseException {
		trace_call("AlterSessionSetClause");
		try {
			/* @bgen(jjtree) AlterSessionSetClause */
			ASTAlterSessionSetClause jjtn000 = new ASTAlterSessionSetClause(
					this, JJTALTERSESSIONSETCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(SET);
				label_21: while (true) {
					tableIdentifier();
					jj_consume_token(EQUAL);
					Expr();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case IDENTIFIER:
					case STRING_LITERAL:
						;
						break;
					default:
						jj_la1[93] = jj_gen;
						break label_21;
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AlterSessionSetClause");
		}
	}

	final public void AlterTable() throws ParseException {
		trace_call("AlterTable");
		try {
			/* @bgen(jjtree) AlterTable */
			ASTAlterTable jjtn000 = new ASTAlterTable(this, JJTALTERTABLE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			String schema = null;
			String tname = null;
			IDBTable table = null;
			try {
				jj_consume_token(TABLE);
				try {
					if (jj_2_24(2)) {
						schema = tableIDDot();
					} else {
						;
					}
					tname = tableIdentifier();
					if (hasDBRoot()) {
						jjtn000.addTable(fDBRoot.getTable(schema, tname));
					}
					if (table == null) {
						table = new TmpSelectionDBTable();
						table.setName(tname);
						jjtn000.addTable(table);
					}
					try {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case RENAME:
						case MINIMIZE:
						case NOMINIMIZE:
							AlterSimple();
							break;
						case ADD:
						case MODIFY:
							AlterMulti();
							break;
						default:
							jj_la1[94] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
					} catch (Throwable e) {
						writeMissingLog("AlterTableChangeDetail IN ALTER()");
						skipToEnd(e);
					}
				} catch (Throwable e) {
					writeMissingLog("CompletionTable IN ALTER()");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE, e));
					skipToEnd(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AlterTable");
		}
	}

	// ------------------------------------------------------------------------------
	// ALTER DETAL
	// ------------------------------------------------------------------------------
	final public void AlterSimple() throws ParseException {
		trace_call("AlterSimple");
		try {
			/* @bgen(jjtree) AlterSimple */
			ASTAlterSimple jjtn000 = new ASTAlterSimple(this, JJTALTERSIMPLE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case RENAME:
					jj_consume_token(RENAME);
					jj_consume_token(TO);
					tableIdentifier();
					break;
				case MINIMIZE:
				case NOMINIMIZE:
					RecordsPerBlockClause();
					break;
				default:
					jj_la1[95] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AlterSimple");
		}
	}

	final public void RecordsPerBlockClause() throws ParseException {
		trace_call("RecordsPerBlockClause");
		try {
			/* @bgen(jjtree) RecordsPerBlockClause */
			ASTRecordsPerBlockClause jjtn000 = new ASTRecordsPerBlockClause(
					this, JJTRECORDSPERBLOCKCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case MINIMIZE:
					jj_consume_token(MINIMIZE);
					break;
				case NOMINIMIZE:
					jj_consume_token(NOMINIMIZE);
					break;
				default:
					jj_la1[96] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(RECORDS_PER_BLOCK);
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RecordsPerBlockClause");
		}
	}

	final public void AlterMulti() throws ParseException {
		trace_call("AlterMulti");
		try {
			/* @bgen(jjtree) AlterMulti */
			ASTAlterMulti jjtn000 = new ASTAlterMulti(this, JJTALTERMULTI);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				label_22: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ADD:
						jj_consume_token(ADD);
						if (jj_2_25(3)) {
							jj_consume_token(OPENPAREN);
							AddColumnOptions();
							jj_consume_token(CLOSEPAREN);
						} else {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case IDENTIFIER:
							case STRING_LITERAL:
								AddColumnOptions();
								break;
							default:
								jj_la1[97] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
						}
						break;
					case MODIFY:
						jj_consume_token(MODIFY);
						jj_consume_token(OPENPAREN);
						ModifyColumnOptions();
						jj_consume_token(CLOSEPAREN);
						break;
					default:
						jj_la1[98] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ADD:
					case MODIFY:
						;
						break;
					default:
						jj_la1[99] = jj_gen;
						break label_22;
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AlterMulti");
		}
	}

	final public void AddColumnOptions() throws ParseException {
		trace_call("AddColumnOptions");
		try {
			/* @bgen(jjtree) AddColumnOptions */
			ASTAddColumnOptions jjtn000 = new ASTAddColumnOptions(this,
					JJTADDCOLUMNOPTIONS);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				DefineColumn();
				if (jj_2_26(2)) {
					ColumnRefConstraint();
				} else {
					;
				}
				label_23: while (true) {
					if (jj_2_27(2)) {
						;
					} else {
						break label_23;
					}
					ColumnConstraint();
				}
				label_24: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[100] = jj_gen;
						break label_24;
					}
					jj_consume_token(COMMA);
					DefineColumn();
					if (jj_2_28(2)) {
						ColumnRefConstraint();
					} else {
						;
					}
					label_25: while (true) {
						if (jj_2_29(2)) {
							;
						} else {
							break label_25;
						}
						ColumnConstraint();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AddColumnOptions");
		}
	}

	final public void ModifyColumnOptions() throws ParseException {
		trace_call("ModifyColumnOptions");
		try {
			/* @bgen(jjtree) ModifyColumnOptions */
			ASTModifyColumnOptions jjtn000 = new ASTModifyColumnOptions(this,
					JJTMODIFYCOLUMNOPTIONS);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				ModifyColumnOptionsSub();
				label_26: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[101] = jj_gen;
						break label_26;
					}
					jj_consume_token(COMMA);
					ModifyColumnOptionsSub();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ModifyColumnOptions");
		}
	}

	final public void ModifyColumnOptionsSub() throws ParseException {
		trace_call("ModifyColumnOptionsSub");
		try {
			/* @bgen(jjtree) ModifyColumnOptionsSub */
			ASTModifyColumnOptionsSub jjtn000 = new ASTModifyColumnOptionsSub(
					this, JJTMODIFYCOLUMNOPTIONSSUB);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				DefineColumn();
				if (jj_2_30(2)) {
					ColumnConstraint();
				} else {
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ModifyColumnOptionsSub");
		}
	}

	// ------------------------------------------------------------------------------
	// DEFINE COLUMN
	// ------------------------------------------------------------------------------
	final public void DefineColumn() throws ParseException {
		trace_call("DefineColumn");
		try {
			/* @bgen(jjtree) DefineColumn */
			ASTDefineColumn jjtn000 = new ASTDefineColumn(this, JJTDEFINECOLUMN);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				tableIdentifier();
				FullType();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DEFAULT2:
					jj_consume_token(DEFAULT2);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case KEY:
					case FLOOR:
					case COUNT:
					case IDENTIFIER:
						Identifier();
						break;
					case INTEGER_LITERAL:
					case CHR_DEF:
					case CHARACTER_LITERAL:
					case STRING_LITERAL:
						Literal();
						break;
					default:
						jj_la1[102] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[103] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case GENERATED:
					jj_consume_token(GENERATED);
					jj_consume_token(BY);
					jj_consume_token(DEFAULT2);
					jj_consume_token(AS);
					jj_consume_token(IDENTITY);
					break;
				default:
					jj_la1[104] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DefineColumn");
		}
	}

	final public void ColumnRefConstraint() throws ParseException {
		trace_call("ColumnRefConstraint");
		try {
			/* @bgen(jjtree) ColumnRefConstraint */
			ASTColumnRefConstraint jjtn000 = new ASTColumnRefConstraint(this,
					JJTCOLUMNREFCONSTRAINT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SCOPE:
					jj_consume_token(SCOPE);
					jj_consume_token(IS);
					if (jj_2_31(2)) {
						tableIDDot();
					} else {
						;
					}
					tableIdentifier();
					break;
				case WITH:
					jj_consume_token(WITH);
					jj_consume_token(ROWID);
					break;
				case CONSTRAINT:
				case REFERENCES:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CONSTRAINT:
						jj_consume_token(CONSTRAINT);
						tableIdentifier();
						break;
					default:
						jj_la1[105] = jj_gen;
						;
					}
					ReferencesClause();
					break;
				default:
					jj_la1[106] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ColumnRefConstraint");
		}
	}

	final public void ReferencesClause() throws ParseException {
		trace_call("ReferencesClause");
		try {
			/* @bgen(jjtree) ReferencesClause */
			ASTReferencesClause jjtn000 = new ASTReferencesClause(this,
					JJTREFERENCESCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(REFERENCES);
				if (jj_2_32(2)) {
					IDDot();
				} else {
					;
				}
				tableIdentifier();
				if (jj_2_33(2)) {
					jj_consume_token(OPENPAREN);
					tableIdentifier();
					jj_consume_token(CLOSEPAREN);
				} else {
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ON:
					jj_consume_token(ON);
					jj_consume_token(DELETE);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CASCADE:
						jj_consume_token(CASCADE);
						break;
					case SET:
						jj_consume_token(SET);
						jj_consume_token(NULL);
						break;
					default:
						jj_la1[107] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[108] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ReferencesClause");
		}
	}

	/*
	 * void ConstraintState() : {} { ( <DEFERRABLE> ) // 譛ｪ螳梧�
	 * 
	 * }
	 */
	// ------------------------------------------------------------------------------
	// DEFINE COLUMN
	// ------------------------------------------------------------------------------
	final public void FullType() throws ParseException {
		trace_call("FullType");
		try {
			/* @bgen(jjtree) FullType */
			ASTFullType jjtn000 = new ASTFullType(this, JJTFULLTYPE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(COLUMN_TYPE);
				if (jj_2_34(2)) {
					jj_consume_token(OPENPAREN);
					NumberLiteral();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						jj_consume_token(COMMA);
						NumberLiteral();
						break;
					default:
						jj_la1[109] = jj_gen;
						;
					}
					jj_consume_token(CLOSEPAREN);
				} else {
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("FullType");
		}
	}

	// ------------------------------------------------------------------------------
	// SELECT STATEMENTE
	// ------------------------------------------------------------------------------
	final public IDBTable SelectBase() throws ParseException {
		trace_call("SelectBase");
		try {
			/* @bgen(jjtree) SelectBase */
			ASTSelectBase jjtn000 = new ASTSelectBase(this, JJTSELECTBASE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable ret = null;
			try {
				ret = SelectBaseAndUnion();
				if (jj_2_35(3)) {
					OrderByClause();
				} else {
					;
				}
				if (jj_2_36(3)) {
					ForUpdateClause();
				} else {
					;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return ret;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("SelectBase");
		}
	}

	final public IDBTable SelectBaseAndUnion() throws ParseException {
		trace_call("SelectBaseAndUnion");
		try {
			/* @bgen(jjtree) SelectBaseAndUnion */
			ASTSelectBaseAndUnion jjtn000 = new ASTSelectBaseAndUnion(this,
					JJTSELECTBASEANDUNION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable ret = null;
			try {
				ret = SelectSecond();
				label_27: while (true) {
					if (jj_2_37(3)) {
						;
					} else {
						break label_27;
					}
					UnionPart();
					SelectSecond();
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return ret;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("SelectBaseAndUnion");
		}
	}

	final public IDBTable Subquery() throws ParseException {
		trace_call("Subquery");
		try {
			/* @bgen(jjtree) Subquery */
			ASTSubquery jjtn000 = new ASTSubquery(this, JJTSUBQUERY);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable ret = null;
			try {
				ret = SelectBase();
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return ret;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("Subquery");
		}
	}

	final public IDBTable SelectSecond() throws ParseException {
		trace_call("SelectSecond");
		try {
			/* @bgen(jjtree) SelectSecond */
			ASTSelectSecond jjtn000 = new ASTSelectSecond(this, JJTSELECTSECOND);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable ret = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SELECT:
					ret = SelectThird();
					break;
				case OPENPAREN:
					jj_consume_token(OPENPAREN);
					ret = Subquery();
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[110] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return ret;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("SelectSecond");
		}
	}

	final public void UnionPart() throws ParseException {
		trace_call("UnionPart");
		try {
			/* @bgen(jjtree) UnionPart */
			ASTUnionPart jjtn000 = new ASTUnionPart(this, JJTUNIONPART);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case UNION:
					jj_consume_token(UNION);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ALL:
						jj_consume_token(ALL);
						break;
					default:
						jj_la1[111] = jj_gen;
						;
					}
					break;
				case INTERSECT:
					jj_consume_token(INTERSECT);
					break;
				case MINUS2:
					jj_consume_token(MINUS2);
					break;
				default:
					jj_la1[112] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("UnionPart");
		}
	}

	final public void ForUpdateClause() throws ParseException {
		trace_call("ForUpdateClause");
		try {
			/* @bgen(jjtree) ForUpdateClause */
			ASTForUpdateClause jjtn000 = new ASTForUpdateClause(this,
					JJTFORUPDATECLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(FOR);
				jj_consume_token(UPDATE);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OF:
					jj_consume_token(OF);
					ForUpdateClauseElement();
					label_28: while (true) {
						if (jj_2_38(2)) {
							;
						} else {
							break label_28;
						}
						jj_consume_token(COMMA);
						ForUpdateClauseElement();
					}
					break;
				default:
					jj_la1[113] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOWAIT:
					jj_consume_token(NOWAIT);
					break;
				default:
					jj_la1[114] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ForUpdateClause");
		}
	}

	final public void ForUpdateClauseElement() throws ParseException {
		trace_call("ForUpdateClauseElement");
		try {
			/* @bgen(jjtree) ForUpdateClauseElement */
			ASTForUpdateClauseElement jjtn000 = new ASTForUpdateClauseElement(
					this, JJTFORUPDATECLAUSEELEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_39(4)) {
					Identifier();
					jj_consume_token(DOT);
				} else {
					;
				}
				Identifier();
				jj_consume_token(DOT);
				Identifier();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ForUpdateClauseElement");
		}
	}

	final public void PreColumnsClause() throws ParseException {
		trace_call("PreColumnsClause");
		try {
			/* @bgen(jjtree) PreColumnsClause */
			ASTPreColumnsClause jjtn000 = new ASTPreColumnsClause(this,
					JJTPRECOLUMNSCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ALL:
					jj_consume_token(ALL);
					break;
				case DISTINCT:
				case UNIQUE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DISTINCT:
						jj_consume_token(DISTINCT);
						break;
					case UNIQUE:
						jj_consume_token(UNIQUE);
						break;
					default:
						jj_la1[115] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[116] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("PreColumnsClause");
		}
	}

	final public IDBTable SelectThird() throws ParseException {
		trace_call("SelectThird");
		try {
			/* @bgen(jjtree) SelectThird */
			ASTSelectThird jjtn000 = new ASTSelectThird(this, JJTSELECTTHIRD);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			int result = 0;
			int beforeDML = lastDML;
			lastDML = jjtn000.getID();
			List tList = new ArrayList();
			try {
				try {
					jj_consume_token(SELECT);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case HINT_COM_START:
						Hint();
						break;
					default:
						jj_la1[117] = jj_gen;
						;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DISTINCT:
					case ALL:
					case UNIQUE:
						PreColumnsClause();
						break;
					default:
						jj_la1[118] = jj_gen;
						;
					}
					try {
						SelectColumns(jjtn000.getTmpSelectionDBTable());
					} catch (Throwable e) {
						e.printStackTrace();
						writeMissingLog("SelectColumns IN Subquery()");
						jjtn000.setAssist(new ASTAssist(
								ASTAssist.ASSIST_COLUMN, e));
						skipToFrom(e);
					}
					try {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case INTO:
							SelectIntoStatement();
							break;
						default:
							jj_la1[119] = jj_gen;
							;
						}
					} catch (Throwable e) {
						writeMissingLog("Select into IN Subquery()");
						skipTo(e, new int[] { FROM });
					}
					try {
						result = From(tList);
					} catch (Throwable e) {
						writeMissingLog("From IN Subquery()");
						jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE,
								e));
						skipToEnd(e);
					}
					fLogger.debug(jjtn000.infomatin());
					jjtn000.addTableList(tList);
					jjtn000.fTable = result;
					if (jj_2_40(3)) {
						result = WhereClause();
						jjtn000.fWhere = result;
					} else {
						;
					}
					if (jj_2_41(3)) {
						HierarchicalQueryClause();
					} else {
						;
					}
					if (jj_2_42(2)) {
						GroupByClause();
					} else {
						;
					}
				} finally {
					lastDML = beforeDML;
					{
						if (true)
							return jjtn000.getTmpSelectionDBTable();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("SelectThird");
		}
	}

	final public void SelectIntoStatement() throws ParseException {
		trace_call("SelectIntoStatement");
		try {
			/* @bgen(jjtree) SelectIntoStatement */
			ASTSelectIntoStatement jjtn000 = new ASTSelectIntoStatement(this,
					JJTSELECTINTOSTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(INTO);
				Identifier();
				label_29: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[120] = jj_gen;
						break label_29;
					}
					jj_consume_token(COMMA);
					Identifier();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SelectIntoStatement");
		}
	}

	final public int From(List list) throws ParseException {
		trace_call("From");
		try {
			/* @bgen(jjtree) From */
			ASTFrom jjtn000 = new ASTFrom(this, JJTFROM);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			int result = ASTDefaultDML.COMPLETE;
			printTokens("from::", 6);
			try {
				jj_consume_token(FROM);
				try {
					TableRefference(list);
					label_30: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[121] = jj_gen;
							break label_30;
						}
						jj_consume_token(COMMA);
						TableRefference(list);
					}
				} catch (Throwable e) {
					e.printStackTrace();
					writeMissingLog("QueryTableExpressionClause IN From()");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE, e));
					skipTo(e, new int[] { COMMA, WHERE, ORDER, GROUP });
					result = ASTDefaultDML.FAULT;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				fLogger.debug("return[" + result + "] list  " + list);
				{
					if (true)
						return result;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("From");
		}
	}

	final public void Hint() throws ParseException {
		trace_call("Hint");
		try {
			/* @bgen(jjtree) Hint */
			ASTHint jjtn000 = new ASTHint(this, JJTHINT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(HINT_COM_START);
				jj_consume_token(HINT_COM_END);
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Hint");
		}
	}

	final public void SelectColumns(IDBTable table) throws ParseException {
		trace_call("SelectColumns");
		try {
			/* @bgen(jjtree) SelectColumns */
			ASTSelectColumns jjtn000 = new ASTSelectColumns(this,
					JJTSELECTCOLUMNS);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				try {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ASTERISK:
						jj_consume_token(ASTERISK);
						jjtree.closeNodeScope(jjtn000, true);
						jjtc000 = false;
						table.setSelectAll();
						break;
					default:
						jj_la1[123] = jj_gen;
						if (jj_2_43(1)) {
							SelectColumnsElement(table);
							System.out.println("t====" + getToken(0)
									+ getToken(1));
							label_31: while (true) {
								switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
								case COMMA:
									;
									break;
								default:
									jj_la1[122] = jj_gen;
									break label_31;
								}
								jj_consume_token(COMMA);
								SelectColumnsElement(table);
							}
						} else {
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
				} catch (Throwable e) {
					writeMissingLog("SelectColumnsElement IN SelectColumns()");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_COLUMN, e));
					skipToFrom(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SelectColumns");
		}
	}

	final public void SelectColumnsElement(IDBTable table)
			throws ParseException {
		trace_call("SelectColumnsElement");
		try {
			/* @bgen(jjtree) SelectColumnsElement */
			ASTSelectColumnsElement jjtn000 = new ASTSelectColumnsElement(this,
					JJTSELECTCOLUMNSELEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			ASTExpr nodeExpr = null;
			IDBColumn column = null;
			String alias = null;
			try {
				nodeExpr = Expr();
				column = new DBExprColumn(table, nodeExpr);
				table.putResource(Integer.toString(table.childrenNum()), column);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case INTEGER_LITERAL:
				case AS:
				case KEY:
				case FLOOR:
				case COUNT:
				case IDENTIFIER:
				case CHR_DEF:
				case CHARACTER_LITERAL:
				case STRING_LITERAL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case AS:
						jj_consume_token(AS);
						break;
					default:
						jj_la1[124] = jj_gen;
						;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case KEY:
					case FLOOR:
					case COUNT:
					case IDENTIFIER:
						alias = Identifier();
						break;
					case INTEGER_LITERAL:
					case CHR_DEF:
					case CHARACTER_LITERAL:
					case STRING_LITERAL:
						alias = Literal();
						break;
					default:
						jj_la1[125] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					column.setAlias(alias);
					break;
				default:
					jj_la1[126] = jj_gen;
					;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				try {
					if (jjtn000.getFirstToken().getSpecialToken() == null) {
						IToken t0 = null;
						for (int i = 0; i < 3; i++) {
							t0 = getToken(i);
							if (t0.getSpecialToken() != null) {
								jjtn000.getFirstToken().setSpecialToken(
										t0.getSpecialToken());
								break;
							}
						}
					}
				} catch (Throwable e) {
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SelectColumnsElement");
		}
	}

	final public void TableRefference(List list) throws ParseException {
		trace_call("TableRefference");
		try {
			/* @bgen(jjtree) TableRefference */
			ASTTableRefference jjtn000 = new ASTTableRefference(this,
					JJTTABLEREFFERENCE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable table = null;
			printTokens("TableRefference ::", 6);
			try {
				table = QueryTableExpressionClause();
				list.add(table);
				printTokens("after ::", 4);
				label_32: while (true) {
					if (jj_2_44(2)) {
						;
					} else {
						break label_32;
					}
					JoinedTable(list);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("TableRefference");
		}
	}

	final public void FlashBackClause() throws ParseException {
		trace_call("FlashBackClause");
		try {
			/* @bgen(jjtree) FlashBackClause */
			ASTFlashBackClause jjtn000 = new ASTFlashBackClause(this,
					JJTFLASHBACKCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case VERSIONS:
					jj_consume_token(VERSIONS);
					jj_consume_token(BETWEEN);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SCAN:
						jj_consume_token(SCAN);
						jjtn000.isScan = true;
						break;
					case TIMESTAMP3:
						jj_consume_token(TIMESTAMP3);
						break;
					default:
						jj_la1[127] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case MINVALUE:
						jj_consume_token(MINVALUE);
						jjtn000.isMin = true;
						break;
					default:
						jj_la1[128] = jj_gen;
						if (jj_2_45(1)) {
							Expr();
						} else {
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
					jj_consume_token(AND);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case MAXVALUE:
						jj_consume_token(MAXVALUE);
						jjtn000.isMax = true;
						break;
					default:
						jj_la1[129] = jj_gen;
						if (jj_2_46(1)) {
							Expr();
						} else {
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
					jjtree.closeNodeScope(jjtn000, true);
					jjtc000 = false;
					jjtn000.isVersion = true;
					break;
				case AS:
					jj_consume_token(AS);
					jj_consume_token(OF);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SCAN:
						jj_consume_token(SCAN);
						jjtn000.isScan = true;
						break;
					case TIMESTAMP3:
						jj_consume_token(TIMESTAMP3);
						break;
					default:
						jj_la1[130] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					Expr();
					break;
				default:
					jj_la1[131] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("FlashBackClause");
		}
	}

	final public void JoinedTable(List list) throws ParseException {
		trace_call("JoinedTable");
		try {
			/* @bgen(jjtree) JoinedTable */
			ASTJoinedTable jjtn000 = new ASTJoinedTable(this, JJTJOINEDTABLE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			printTokens("joinedTable ::", 5);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case INNER:
				case LEFT:
				case RIGHT:
				case FULL:
					JoinType();
					jj_consume_token(JOIN);
					try {
						TableRefference(list);
						try {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case ON:
								jj_consume_token(ON);
								printTokens("on ::", 4);
								Condition();
								break;
							case USING:
								jj_consume_token(USING);
								jj_consume_token(OPENPAREN);
								tableIdentifier();
								label_33: while (true) {
									switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
									case COMMA:
										;
										break;
									default:
										jj_la1[132] = jj_gen;
										break label_33;
									}
									jj_consume_token(COMMA);
									tableIdentifier();
								}
								jj_consume_token(CLOSEPAREN);
								break;
							default:
								jj_la1[133] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
						} catch (Throwable e) {
							writeMissingLog("QueryTableExpressionClause IN JoinedTable inner!()");
							skipTo(e, new int[] { COMMA, WHERE, ORDER, GROUP,
									LEFT, RIGHT, INNER });
						}
					} catch (Throwable e) {
						writeMissingLog("TableRefference IN JoinedTable()");
						jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE,
								e));
						skipTo(e, new int[] { COMMA, WHERE, ORDER, GROUP, LEFT,
								RIGHT, INNER });
					}
					break;
				case CROSS:
				case NATURAL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CROSS:
						jj_consume_token(CROSS);
						jj_consume_token(JOIN);
						break;
					case NATURAL:
						jj_consume_token(NATURAL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case INNER:
						case LEFT:
						case RIGHT:
						case FULL:
							JoinType();
							break;
						default:
							jj_la1[134] = jj_gen;
							;
						}
						jj_consume_token(JOIN);
						TableRefference(list);
						break;
					default:
						jj_la1[135] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[136] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("JoinedTable");
		}
	}

	final public void JoinType() throws ParseException {
		trace_call("JoinType");
		try {
			/* @bgen(jjtree) JoinType */
			ASTJoinType jjtn000 = new ASTJoinType(this, JJTJOINTYPE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case INNER:
					jj_consume_token(INNER);
					break;
				case LEFT:
				case RIGHT:
				case FULL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LEFT:
						jj_consume_token(LEFT);
						break;
					case RIGHT:
						jj_consume_token(RIGHT);
						break;
					case FULL:
						jj_consume_token(FULL);
						break;
					default:
						jj_la1[137] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OUTER:
						jj_consume_token(OUTER);
						break;
					default:
						jj_la1[138] = jj_gen;
						;
					}
					break;
				default:
					jj_la1[139] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("JoinType");
		}
	}

	final public IDBTable QueryTableExpressionClause() throws ParseException {
		trace_call("QueryTableExpressionClause");
		try {
			/* @bgen(jjtree) QueryTableExpressionClause */
			ASTQueryTableExpressionClause jjtn000 = new ASTQueryTableExpressionClause(
					this, JJTQUERYTABLEEXPRESSIONCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			fc_table = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SELECT:
				case OPENPAREN:
					fc_table = Subquery();
					jjtn000.fShadowTable = true;
					break;
				case IDENTIFIER:
				case STRING_LITERAL:
					if (jj_2_47(2)) {
						jjtn000.fSchemaString = tableIDDot();
					} else {
						;
					}
					jjtn000.fTableNameString = tableIdentifier();
					jjtn000.fShadowTable = false;
					fLogger.debug("hasDBRoot()=" + hasDBRoot());
					if (hasDBRoot()) {
						fc_table = fDBRoot.getTable(jjtn000.fSchemaString,
								jjtn000.fTableNameString);
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ATMARK:
						AtID();
						break;
					default:
						jj_la1[140] = jj_gen;
						;
					}
					break;
				default:
					jj_la1[141] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case AS:
				case VERSIONS:
					FlashBackClause();
					break;
				default:
					jj_la1[142] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case IDENTIFIER:
				case STRING_LITERAL:
					jjtn000.fAliasString = tableIdentifier();
					ASTAssist assist = nextIdentifierMaybeThisTokens(
							getToken(0), new int[] { WHERE, ORDER, GROUP });
					if (assist != null) {
						((SimpleNode) jjtree.peekNode()).setAssist(assist);
						// jjtThis.setAssist(assist);
					}
					break;
				default:
					jj_la1[143] = jj_gen;
					;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				if (fc_table == null) {
					if (fLogger.isDebugEnabled()) {
						fLogger.debug("table is null.." + jjtn000.fSchemaString
								+ "/" + jjtn000.fTableNameString);
					}
					if (StringUtil.isEmpty(jjtn000.fSchemaString)) {
						fc_table = new TmpSelectionDBTable();
						fc_table.setName(jjtn000.fTableNameString);
					} else {
						TmpSelectionDBSchema schema = new TmpSelectionDBSchema();
						schema.setName(jjtn000.fSchemaString);
						fc_table = new TmpSelectionDBTable(schema);
						fc_table.setName(jjtn000.fTableNameString);
						schema.putTable(fc_table);
					}
				} else {
					fLogger.debug("table is not null.." + fc_table);
				}
				addTableAlias(fc_table, jjtn000.fAliasString);
				fLogger.debug("deb.." + jjtn000.fTableNameString);
				{
					if (true)
						return fc_table;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("QueryTableExpressionClause");
		}
	}

	// ------------------------------------------------------------------------------
	// UPDATE STATEMENTE
	// ------------------------------------------------------------------------------
	final public void UpdateStatement() throws ParseException {
		trace_call("UpdateStatement");
		try {
			/* @bgen(jjtree) UpdateStatement */
			ASTUpdateStatement jjtn000 = new ASTUpdateStatement(this,
					JJTUPDATESTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable table = null;
			int beforeDML = lastDML;
			lastDML = jjtn000.getID();
			try {
				try {
					jj_consume_token(UPDATE);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case HINT_COM_START:
						Hint();
						break;
					default:
						jj_la1[144] = jj_gen;
						;
					}
					try {
						table = QueryTableExpressionClause();
						jjtn000.addTable(table);
					} catch (Throwable e) {
						writeMissingLog("QueryTableExpressionClause IN UpdateStatement()");
						jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE,
								e));
						skipToFrom(e);
					}
					SetClause();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case WHERE:
						WhereClause();
						break;
					default:
						jj_la1[145] = jj_gen;
						;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case RETURNING:
						ReturningClause();
						break;
					default:
						jj_la1[146] = jj_gen;
						;
					}
				} finally {
					lastDML = beforeDML;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("UpdateStatement");
		}
	}

	final public void SetClause() throws ParseException {
		trace_call("SetClause");
		try {
			/* @bgen(jjtree) SetClause */
			ASTSetClause jjtn000 = new ASTSetClause(this, JJTSETCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(SET);
				try {
					SetClauseElement();
					label_34: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[147] = jj_gen;
							break label_34;
						}
						jj_consume_token(COMMA);
						SetClauseElement();
					}
				} catch (Throwable e) {
					writeMissingLog("SetClauseElement IN SetClause()");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_COLUMN, e));
					if (e.getMessage().indexOf("Encountered \"WHERE") >= 0) {
						Node peek = this.jjtree.peekNode();
						if (peek != null
								&& peek instanceof ASTDefaultQueryTableExpressionClause) {
							if (fc_table != null) {
								jjtn000.addTable(fc_table);
							}
						}
					}

					skipToEnd(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SetClause");
		}
	}

	final public void SetClauseElement() throws ParseException {
		trace_call("SetClauseElement");
		try {
			/* @bgen(jjtree) SetClauseElement */
			ASTSetClauseElement jjtn000 = new ASTSetClauseElement(this,
					JJTSETCLAUSEELEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OPENPAREN:
					jj_consume_token(OPENPAREN);
					ExpressionList();
					jj_consume_token(CLOSEPAREN);
					jj_consume_token(EQUAL);
					jj_consume_token(OPENPAREN);
					Subquery();
					jj_consume_token(CLOSEPAREN);
					break;
				case IDENTIFIER:
				case STRING_LITERAL:
					tableIdentifier();
					jj_consume_token(EQUAL);
					printTokens("SetClauseElement:EQUAL >", 8);
					if (jj_2_48(2)) {
						Expr();
					} else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case OPENPAREN:
							jj_consume_token(OPENPAREN);
							Subquery();
							jj_consume_token(CLOSEPAREN);
							break;
						default:
							jj_la1[148] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
					break;
				default:
					jj_la1[149] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SetClauseElement");
		}
	}

	final public void ReturningClause() throws ParseException {
		trace_call("ReturningClause");
		try {
			/* @bgen(jjtree) ReturningClause */
			ASTReturningClause jjtn000 = new ASTReturningClause(this,
					JJTRETURNINGCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(RETURNING);
				Expr();
				label_35: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[150] = jj_gen;
						break label_35;
					}
					jj_consume_token(COMMA);
					Expr();
				}
				jj_consume_token(INTO);
				tableIdentifier();
				label_36: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[151] = jj_gen;
						break label_36;
					}
					jj_consume_token(COMMA);
					tableIdentifier();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ReturningClause");
		}
	}

	// ------------------------------------------------------------------------------
	// DELETE STATEMENTE
	// ------------------------------------------------------------------------------
	final public void DeleteStatement() throws ParseException {
		trace_call("DeleteStatement");
		try {
			/* @bgen(jjtree) DeleteStatement */
			ASTDeleteStatement jjtn000 = new ASTDeleteStatement(this,
					JJTDELETESTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			int result = 0;
			int beforeDML = lastDML;
			lastDML = jjtn000.getID();
			IDBTable table = null;
			try {
				jj_consume_token(DELETE);
				if (jj_2_49(3)) {
					Hint();
				} else {
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case FROM:
					jj_consume_token(FROM);
					break;
				default:
					jj_la1[152] = jj_gen;
					;
				}
				try {
					table = QueryTableExpressionClause();
				} catch (Throwable e) {
					e.printStackTrace();
					writeMissingLog("QueryTableExpressionClause IN From()");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE, e));
					skipTo(e, new int[] { COMMA, WHERE, ORDER, GROUP });
					result = ASTDefaultDML.FAULT;
				} finally {
					lastDML = beforeDML;
					jjtn000.addTable(table);
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case WHERE:
					WhereClause();
					break;
				default:
					jj_la1[153] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case RETURNING:
					ReturningClause();
					break;
				default:
					jj_la1[154] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DeleteStatement");
		}
	}

	// ------------------------------------------------------------------------------
	// INSERT STATEMENTE
	// ------------------------------------------------------------------------------
	final public void InsertStatement() throws ParseException {
		trace_call("InsertStatement");
		try {
			/* @bgen(jjtree) InsertStatement */
			ASTInsertStatement jjtn000 = new ASTInsertStatement(this,
					JJTINSERTSTATEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			IDBTable table = null;
			int beforeDML = lastDML;
			lastDML = jjtn000.getID();
			try {
				try {
					jj_consume_token(INSERT);
					if (jj_2_50(3)) {
						Hint();
					} else {
						;
					}
					jj_consume_token(INTO);
					try {
						table = QueryTableExpressionClause();
						jjtn000.addTable(table);
					} catch (Throwable e) {
						fLogger.debug("1--MISSING QueryTableExpressionClause()  AT UpdateStatement--");
						jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_TABLE,
								e));
						skipToFrom(e);
					}
					if (jj_2_51(3)) {
						InsertColumns();
					} else {
						;
					}
					ValueClauses();
				} finally {
					lastDML = beforeDML;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("InsertStatement");
		}
	}

	final public void InsertColumns() throws ParseException {
		trace_call("InsertColumns");
		try {
			/* @bgen(jjtree) InsertColumns */
			ASTInsertColumns jjtn000 = new ASTInsertColumns(this,
					JJTINSERTCOLUMNS);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(OPENPAREN);
				tableIdentifier();
				label_37: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[155] = jj_gen;
						break label_37;
					}
					jj_consume_token(COMMA);
					tableIdentifier();
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("InsertColumns");
		}
	}

	final public void ValueClauses() throws ParseException {
		trace_call("ValueClauses");
		try {
			/* @bgen(jjtree) ValueClauses */
			ASTValueClauses jjtn000 = new ASTValueClauses(this, JJTVALUECLAUSES);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case VALUES:
					ValueClause();
					break;
				case SELECT:
				case OPENPAREN:
					Subquery();
					break;
				default:
					jj_la1[156] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				label_38: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[157] = jj_gen;
						break label_38;
					}
					jj_consume_token(COMMA);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case VALUES:
						ValueClause();
						break;
					case SELECT:
					case OPENPAREN:
						Subquery();
						break;
					default:
						jj_la1[158] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ValueClauses");
		}
	}

	final public void ValueClause() throws ParseException {
		trace_call("ValueClause");
		try {
			/* @bgen(jjtree) ValueClause */
			ASTValueClause jjtn000 = new ASTValueClause(this, JJTVALUECLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(VALUES);
				jj_consume_token(OPENPAREN);
				try {
					if (jj_2_52(3)) {
						ExpressionList();
					} else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SELECT:
						case OPENPAREN:
							Subquery();
							break;
						default:
							jj_la1[159] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
					}
				} catch (Throwable e) {
					fLogger.debug("--Thrown Exception   AT ValueClause--", e);
					skipTo(e, new int[] { CLOSEPAREN });
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ValueClause");
		}
	}

	// ------------------------------------------------------------------------------
	// WHERE CLAUSES
	// ------------------------------------------------------------------------------
	final public int WhereClause() throws ParseException {
		trace_call("WhereClause");
		try {
			/* @bgen(jjtree) WhereClause */
			ASTWhereClause jjtn000 = new ASTWhereClause(this, JJTWHERECLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			int result = ASTDefaultDML.COMPLETE;
			try {
				jj_consume_token(WHERE);
				printTokens("WHERE >", 8);
				try {
					Condition();
				} catch (Throwable e) {
					fLogger.debug("--MISSING Where Condition  AT LOOKAHEAD--",
							e);
					// jjtThis.setAssist(new
					// ASTAssist(ASTAssist.ASSIST_COLUMN,e));
					skipTo(e, new int[] { ORDER, GROUP });
					result = ASTDefaultDML.FAULT;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				// if (result != ASTDefaultDML.FAULT) {
				// ASTAssist assist= null;
				// if (lastDML == WolfSQLParserTreeConstants.JJTSUBQUERY) {
				// assist= nextIdentifierMaybeThisTokens(null, new int[] { AND,
				// OR, GROUP, ORDER });
				// } else {
				// assist= nextIdentifierMaybeThisTokens(null, new int[] { AND,
				// OR });
				// }
				// if (assist != null) {
				// jjtThis.setAssist(assist);
				// }
				// }
				{
					if (true)
						return result;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("WhereClause");
		}
	}

	final public void HierarchicalQueryClause() throws ParseException {
		trace_call("HierarchicalQueryClause");
		try {
			/* @bgen(jjtree) HierarchicalQueryClause */
			ASTHierarchicalQueryClause jjtn000 = new ASTHierarchicalQueryClause(
					this, JJTHIERARCHICALQUERYCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_53(2)) {
					jj_consume_token(START);
					jj_consume_token(WITH);
					Condition();
				} else {
					;
				}
				jj_consume_token(CONNECT);
				jj_consume_token(BY);
				Condition();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("HierarchicalQueryClause");
		}
	}

	final public void GroupByClause() throws ParseException {
		trace_call("GroupByClause");
		try {
			/* @bgen(jjtree) GroupByClause */
			ASTGroupByClause jjtn000 = new ASTGroupByClause(this,
					JJTGROUPBYCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(GROUP);
				jj_consume_token(BY);
				if (jj_2_54(1)) {
					try {
						Expr();
						label_39: while (true) {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case COMMA:
								;
								break;
							default:
								jj_la1[160] = jj_gen;
								break label_39;
							}
							jj_consume_token(COMMA);
							Expr();
						}
					} catch (Throwable e) {
						e.printStackTrace();
						fLogger.debug("--MISSING Expr()  AT GroupByClause--");
						jjtn000.setAssist(new ASTAssist(
								ASTAssist.ASSIST_COLUMN, e));
						skipToEnd(e);
					}
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case CUBE:
					case ROLLUP:
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case CUBE:
							jj_consume_token(CUBE);
							break;
						case ROLLUP:
							jj_consume_token(ROLLUP);
							break;
						default:
							jj_la1[161] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						jj_consume_token(OPENPAREN);
						ExpressionList();
						jj_consume_token(CLOSEPAREN);
						break;
					default:
						jj_la1[162] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
				ASTAssist assist = nextIdentifierMaybeThisTokens(getToken(0),
						new int[] { HAVING, ORDER });
				if (assist != null) {
					((SimpleNode) jjtree.peekNode()).setAssist(assist);
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case HAVING:
					jj_consume_token(HAVING);
					Condition();
					break;
				default:
					jj_la1[163] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("GroupByClause");
		}
	}

	final public void OrderByClause() throws ParseException {
		trace_call("OrderByClause");
		try {
			/* @bgen(jjtree) OrderByClause */
			ASTOrderByClause jjtn000 = new ASTOrderByClause(this,
					JJTORDERBYCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(ORDER);
				jj_consume_token(BY);
				try {
					OrderByElement();
					label_40: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[164] = jj_gen;
							break label_40;
						}
						jj_consume_token(COMMA);
						OrderByElement();
					}
				} catch (Exception e) {
					e.printStackTrace();
					fLogger.debug("--MISSING OrderByElement()  AT OrderByClause--");
					jjtn000.setAssist(new ASTAssist(ASTAssist.ASSIST_COLUMN, e));
					skipToEnd(e);
				} catch (Error e) {
					e.printStackTrace();
					fLogger.debug("--MISSING OrderByElement()  AT OrderByClause--");
					skipToEnd(e);
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("OrderByClause");
		}
	}

	final public void OrderByElement() throws ParseException {
		trace_call("OrderByElement");
		try {
			/* @bgen(jjtree) OrderByElement */
			ASTOrderByElement jjtn000 = new ASTOrderByElement(this,
					JJTORDERBYELEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				Expr();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ASC:
				case DESC:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ASC:
						jj_consume_token(ASC);
						break;
					case DESC:
						jj_consume_token(DESC);
						break;
					default:
						jj_la1[165] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[166] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NULLS:
					jj_consume_token(NULLS);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case FIRST:
						jj_consume_token(FIRST);
						break;
					case LAST:
						jj_consume_token(LAST);
						break;
					default:
						jj_la1[167] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[168] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("OrderByElement");
		}
	}

	// ------------------------------------------------------------------------------
	// CONDITION
	// ------------------------------------------------------------------------------
	final public void Condition() throws ParseException {
		trace_call("Condition");
		try {
			/* @bgen(jjtree) Condition */
			ASTCondition jjtn000 = new ASTCondition(this, JJTCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				ConditionElement();
				label_41: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OR:
					case AND:
						;
						break;
					default:
						jj_la1[169] = jj_gen;
						break label_41;
					}
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case AND:
						t = jj_consume_token(AND);
						break;
					case OR:
						t = jj_consume_token(OR);
						break;
					default:
						jj_la1[170] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jjtn000.addToken(t);
					ConditionElement();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Condition");
		}
	}

	final public void ConditionElement() throws ParseException {
		trace_call("ConditionElement");
		try {
			/* @bgen(jjtree) ConditionElement */
			ASTConditionElement jjtn000 = new ASTConditionElement(this,
					JJTCONDITIONELEMENT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				try {
					if (jj_2_62(3)) {
						CompoundCondition();
						jjtree.closeNodeScope(jjtn000, true);
						jjtc000 = false;
						printTokens("CompoundCondition>", 7);
					} else if (jj_2_63(3)) {
						jj_consume_token(OPENPAREN);
						ExpressionList();
						jj_consume_token(CLOSEPAREN);
						if (jj_2_55(3)) {
							SimpleComparisonConditionList();
						} else {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case EQUAL:
							case NOTEQUAL:
							case NOTEQUAL2:
							case NOTEQUAL3:
								GroupComparisonConditionList();
								break;
							case NOT:
							case IN:
								MembershipConditionList();
								break;
							default:
								jj_la1[171] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
						}
					} else if (jj_2_64(1)) {
						Expr();
						if (jj_2_56(3)) {
							SimpleComparisonCondition();
						} else if (jj_2_57(3)) {
							GroupComparisonCondition();
						} else if (jj_2_58(2)) {
							MembershipCondition();
						} else if (jj_2_59(2)) {
							RangeCondition();
						} else if (jj_2_60(2)) {
							NULLCondition();
						} else if (jj_2_61(2)) {
							EXISTSCondition();
						} else {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case LIKE:
							case NOT:
								LIKECondition();
								break;
							default:
								jj_la1[172] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
						}
					} else {
						jj_consume_token(-1);
						throw new ParseException();
					}
				} catch (Throwable e) {
					fLogger.debug("--Thrown Exception   AT ConditionElement--",
							e);
					ASTAssist assist = nextIdentifierMaybeThisTokens(new int[] {
							ORDER, GROUP, OR, AND });
					if (assist != null) {
						fLogger.debug("--Skip--");
						getNextToken();
						assist = new ASTAssist(ASTAssist.ASSIST_COLUMN, e);
						jjtn000.setAssist(assist);
					} else {
						fLogger.debug("--ASTAssist.ASSIST_COLUMN Skip ORDER, GROUP--");
						assist = new ASTAssist(ASTAssist.ASSIST_COLUMN, e);
						((SimpleNode) jjtree.peekNode()).setAssist(assist);
						skipTo(e, new int[] { ORDER, GROUP });
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConditionElement");
		}
	}

	final public void SimpleComparisonCondition() throws ParseException {
		trace_call("SimpleComparisonCondition");
		try {
			/* @bgen(jjtree) SimpleComparisonCondition */
			ASTSimpleComparisonCondition jjtn000 = new ASTSimpleComparisonCondition(
					this, JJTSIMPLECOMPARISONCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				CompareOperator();
				ConditionR3();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SimpleComparisonCondition");
		}
	}

	final public void GroupComparisonCondition() throws ParseException {
		trace_call("GroupComparisonCondition");
		try {
			/* @bgen(jjtree) GroupComparisonCondition */
			ASTGroupComparisonCondition jjtn000 = new ASTGroupComparisonCondition(
					this, JJTGROUPCOMPARISONCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				CompareOperator();
				AnySomeAll();
				ConditionR2();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("GroupComparisonCondition");
		}
	}

	final public void MembershipCondition() throws ParseException {
		trace_call("MembershipCondition");
		try {
			/* @bgen(jjtree) MembershipCondition */
			ASTMembershipCondition jjtn000 = new ASTMembershipCondition(this,
					JJTMEMBERSHIPCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					break;
				default:
					jj_la1[173] = jj_gen;
					;
				}
				jj_consume_token(IN);
				ConditionR2();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("MembershipCondition");
		}
	}

	final public void RangeCondition() throws ParseException {
		trace_call("RangeCondition");
		try {
			/* @bgen(jjtree) RangeCondition */
			ASTRangeCondition jjtn000 = new ASTRangeCondition(this,
					JJTRANGECONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					break;
				default:
					jj_la1[174] = jj_gen;
					;
				}
				jj_consume_token(BETWEEN);
				Expr();
				jj_consume_token(AND);
				Expr();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RangeCondition");
		}
	}

	final public void NULLCondition() throws ParseException {
		trace_call("NULLCondition");
		try {
			/* @bgen(jjtree) NULLCondition */
			ASTNULLCondition jjtn000 = new ASTNULLCondition(this,
					JJTNULLCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(IS);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					break;
				default:
					jj_la1[175] = jj_gen;
					;
				}
				jj_consume_token(NULL);
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("NULLCondition");
		}
	}

	final public void EXISTSCondition() throws ParseException {
		trace_call("EXISTSCondition");
		try {
			/* @bgen(jjtree) EXISTSCondition */
			ASTEXISTSCondition jjtn000 = new ASTEXISTSCondition(this,
					JJTEXISTSCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(EXISTS);
				jj_consume_token(OPENPAREN);
				Subquery();
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("EXISTSCondition");
		}
	}

	final public void LIKECondition() throws ParseException {
		trace_call("LIKECondition");
		try {
			/* @bgen(jjtree) LIKECondition */
			ASTLIKECondition jjtn000 = new ASTLIKECondition(this,
					JJTLIKECONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					break;
				default:
					jj_la1[176] = jj_gen;
					;
				}
				jj_consume_token(LIKE);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CHARACTER_LITERAL:
					jj_consume_token(CHARACTER_LITERAL);
					break;
				case QUESTIONMARK:
					jj_consume_token(QUESTIONMARK);
					break;
				case BIND_LITERAL:
					jj_consume_token(BIND_LITERAL);
					break;
				default:
					jj_la1[177] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ESCAPE:
					jj_consume_token(ESCAPE);
					jj_consume_token(CHARACTER_LITERAL);
					break;
				default:
					jj_la1[178] = jj_gen;
					;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("LIKECondition");
		}
	}

	final public void SimpleComparisonConditionList() throws ParseException {
		trace_call("SimpleComparisonConditionList");
		try {
			/* @bgen(jjtree) SimpleComparisonConditionList */
			ASTSimpleComparisonConditionList jjtn000 = new ASTSimpleComparisonConditionList(
					this, JJTSIMPLECOMPARISONCONDITIONLIST);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				CompareEqualableOperator();
				jj_consume_token(OPENPAREN);
				Subquery();
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SimpleComparisonConditionList");
		}
	}

	final public void GroupComparisonConditionList() throws ParseException {
		trace_call("GroupComparisonConditionList");
		try {
			/* @bgen(jjtree) GroupComparisonConditionList */
			ASTGroupComparisonConditionList jjtn000 = new ASTGroupComparisonConditionList(
					this, JJTGROUPCOMPARISONCONDITIONLIST);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				CompareEqualableOperator();
				AnySomeAll();
				ConditionR1();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("GroupComparisonConditionList");
		}
	}

	final public void MembershipConditionList() throws ParseException {
		trace_call("MembershipConditionList");
		try {
			/* @bgen(jjtree) MembershipConditionList */
			ASTMembershipConditionList jjtn000 = new ASTMembershipConditionList(
					this, JJTMEMBERSHIPCONDITIONLIST);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					break;
				default:
					jj_la1[179] = jj_gen;
					;
				}
				jj_consume_token(IN);
				ConditionR1();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("MembershipConditionList");
		}
	}

	final public void ConditionR1() throws ParseException {
		trace_call("ConditionR1");
		try {
			/* @bgen(jjtree) ConditionR1 */
			ASTConditionR1 jjtn000 = new ASTConditionR1(this, JJTCONDITIONR1);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(OPENPAREN);
				if (jj_2_65(3)) {
					Subquery();
				} else if (jj_2_66(1)) {
					ExpressionList();
				} else {
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConditionR1");
		}
	}

	final public void ConditionR2() throws ParseException {
		trace_call("ConditionR2");
		try {
			/* @bgen(jjtree) ConditionR2 */
			ASTConditionR2 jjtn000 = new ASTConditionR2(this, JJTCONDITIONR2);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_67(2)) {
					jj_consume_token(OPENPAREN);
					ExpressionList();
					jj_consume_token(CLOSEPAREN);
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OPENPAREN:
						jj_consume_token(OPENPAREN);
						Subquery();
						jj_consume_token(CLOSEPAREN);
						break;
					default:
						jj_la1[180] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConditionR2");
		}
	}

	final public void ConditionR3() throws ParseException {
		trace_call("ConditionR3");
		try {
			/* @bgen(jjtree) ConditionR3 */
			ASTConditionR3 jjtn000 = new ASTConditionR3(this, JJTCONDITIONR3);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_68(2)) {
					Expr();
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case OPENPAREN:
						jj_consume_token(OPENPAREN);
						Subquery();
						jj_consume_token(CLOSEPAREN);
						break;
					default:
						jj_la1[181] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConditionR3");
		}
	}

	final public void AnySomeAll() throws ParseException {
		trace_call("AnySomeAll");
		try {
			/* @bgen(jjtree) AnySomeAll */
			ASTAnySomeAll jjtn000 = new ASTAnySomeAll(this, JJTANYSOMEALL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ANY:
					jj_consume_token(ANY);
					break;
				case SOME:
					jj_consume_token(SOME);
					break;
				case ALL:
					jj_consume_token(ALL);
					break;
				default:
					jj_la1[182] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AnySomeAll");
		}
	}

	final public void CompoundCondition() throws ParseException {
		trace_call("CompoundCondition");
		try {
			/* @bgen(jjtree) CompoundCondition */
			ASTCompoundCondition jjtn000 = new ASTCompoundCondition(this,
					JJTCOMPOUNDCONDITION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOT:
					jj_consume_token(NOT);
					Condition();
					break;
				case OPENPAREN:
					jj_consume_token(OPENPAREN);
					Condition();
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[183] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CompoundCondition");
		}
	}

	// ------------------------------------------------------------------------------
	// EXPR
	// ------------------------------------------------------------------------------
	final public ASTExpr Expr() throws ParseException {
		trace_call("Expr");
		try {
			/* @bgen(jjtree) Expr */
			ASTExpr jjtn000 = new ASTExpr(this, JJTEXPR);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			printTokens("Expr>", 7);
			try {
				ExprComp();
				label_42: while (true) {
					if (jj_2_69(2)) {
						;
					} else {
						break label_42;
					}
					Operator();
					ExprComp();
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return jjtn000;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("Expr");
		}
	}

	final public void ExprComp() throws ParseException {
		trace_call("ExprComp");
		try {
			/* @bgen(jjtree) ExprComp */
			ASTExprComp jjtn000 = new ASTExprComp(this, JJTEXPRCOMP);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_70(2147483647)) {
					UserFunction();
				} else if (jj_2_71(3)) {
					SimpleExpression();
				} else if (jj_2_72(3)) {
					CompoundExpression();
				} else if (jj_2_73(3)) {
					BuiltInFunctionExpression();
				} else if (jj_2_74(3)) {
					DecodeExpression();
				} else if (jj_2_75(3)) {
					CaseExression();
				} else {
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ExprComp");
		}
	}

	final public void DecodeExpression() throws ParseException {
		trace_call("DecodeExpression");
		try {
			/* @bgen(jjtree) DecodeExpression */
			ASTDecodeExpression jjtn000 = new ASTDecodeExpression(this,
					JJTDECODEEXPRESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(DECODE);
				jj_consume_token(OPENPAREN);
				Expr();
				label_43: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[184] = jj_gen;
						break label_43;
					}
					jj_consume_token(COMMA);
					Expr();
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DecodeExpression");
		}
	}

	final public void ExpressionList() throws ParseException {
		trace_call("ExpressionList");
		try {
			/* @bgen(jjtree) ExpressionList */
			ASTExpressionList jjtn000 = new ASTExpressionList(this,
					JJTEXPRESSIONLIST);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				Expr();
				label_44: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[185] = jj_gen;
						break label_44;
					}
					jj_consume_token(COMMA);
					Expr();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ExpressionList");
		}
	}

	final public void UserFunction() throws ParseException {
		trace_call("UserFunction");
		try {
			/* @bgen(jjtree) UserFunction */
			ASTUserFunction jjtn000 = new ASTUserFunction(this, JJTUSERFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				SchemaTableColumn();
				jj_consume_token(OPENPAREN);
				Expr();
				label_45: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						;
						break;
					default:
						jj_la1[186] = jj_gen;
						break label_45;
					}
					jj_consume_token(COMMA);
					Expr();
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("UserFunction");
		}
	}

	final public void SimpleExpression() throws ParseException {
		trace_call("SimpleExpression");
		try {
			/* @bgen(jjtree) SimpleExpression */
			ASTSimpleExpression jjtn000 = new ASTSimpleExpression(this,
					JJTSIMPLEEXPRESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_76(1)) {
					SchemaTableColumn();
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case INTEGER_LITERAL:
					case CHR_DEF:
					case CHARACTER_LITERAL:
					case STRING_LITERAL:
						Literal();
						break;
					case NULL:
						jj_consume_token(NULL);
						break;
					default:
						jj_la1[187] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SimpleExpression");
		}
	}

	final public void SchemaTableColumn() throws ParseException {
		trace_call("SchemaTableColumn");
		try {
			/* @bgen(jjtree) SchemaTableColumn */
			ASTSchemaTableColumn jjtn000 = new ASTSchemaTableColumn(this,
					JJTSCHEMATABLECOLUMN);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ROWNUM:
				case ROWID:
				case LEVEL:
					PseudoColumn();
					break;
				default:
					jj_la1[190] = jj_gen;
					if (jj_2_77(1)) {
						try {
							if (getToken(2).kind == DOT) {
								jjtn000.fSchemaString = IDDot();
							} else {
								;
							}
							if (getToken(2).kind == DOT) {
								jjtn000.fTableNameString = IDDot();
							} else {
								;
							}
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case ASTERISK:
								t = jj_consume_token(ASTERISK);
								break;
							case CURRVAL:
								t = jj_consume_token(CURRVAL);
								break;
							case NEXTVAL:
								t = jj_consume_token(NEXTVAL);
								break;
							case QUESTIONMARK:
								t = jj_consume_token(QUESTIONMARK);
								break;
							case BIND_LITERAL:
								t = jj_consume_token(BIND_LITERAL);
								break;
							case KEY:
							case FLOOR:
							case COUNT:
							case IDENTIFIER:
								jjtn000.fColumnString = Identifier();
								break;
							default:
								jj_la1[188] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
							}
							jjtn000.fColumnToken = t;
							if (t != null) {
								jjtn000.fColumnString = t.image;
							}
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case JOINPLUS:
								jj_consume_token(JOINPLUS);
								break;
							default:
								jj_la1[189] = jj_gen;
								;
							}
						} catch (Throwable e) {
							fLogger.debug("--MISSING Column()  AT SchemaTableColumn--");
							jjtn000.setAssist(new ASTAssist(
									ASTAssist.ASSIST_COLUMN, e));
							skipTo(e, new int[] { FROM, WHERE, ORDER, GROUP });
						}
					} else {
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SchemaTableColumn");
		}
	}

	final public void AtID() throws ParseException {
		trace_call("AtID");
		try {
			/* @bgen(jjtree) AtID */
			ASTAtID jjtn000 = new ASTAtID(this, JJTATID);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(ATMARK);
				Identifier();
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AtID");
		}
	}

	final public String IDDot() throws ParseException {
		trace_call("IDDot");
		try {
			/* @bgen(jjtree) IDDot */
			ASTIDDot jjtn000 = new ASTIDDot(this, JJTIDDOT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			String text;
			try {
				text = Identifier();
				jj_consume_token(DOT);
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return text;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("IDDot");
		}
	}

	final public void PseudoColumn() throws ParseException {
		trace_call("PseudoColumn");
		try {
			/* @bgen(jjtree) PseudoColumn */
			ASTPseudoColumn jjtn000 = new ASTPseudoColumn(this, JJTPSEUDOCOLUMN);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LEVEL:
					jj_consume_token(LEVEL);
					break;
				case ROWID:
					jj_consume_token(ROWID);
					break;
				case ROWNUM:
					jj_consume_token(ROWNUM);
					break;
				default:
					jj_la1[191] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("PseudoColumn");
		}
	}

	final public void CompoundExpression() throws ParseException {
		trace_call("CompoundExpression");
		try {
			/* @bgen(jjtree) CompoundExpression */
			ASTCompoundExpression jjtn000 = new ASTCompoundExpression(this,
					JJTCOMPOUNDEXPRESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OPENPAREN:
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case PRIOR:
				case PLUS:
				case MINUS:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case PLUS:
						jj_consume_token(PLUS);
						break;
					case MINUS:
						jj_consume_token(MINUS);
						break;
					case PRIOR:
						jj_consume_token(PRIOR);
						break;
					default:
						jj_la1[192] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					Expr();
					break;
				default:
					jj_la1[193] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CompoundExpression");
		}
	}

	final public void Operator() throws ParseException {
		trace_call("Operator");
		try {
			/* @bgen(jjtree) Operator */
			ASTOperator jjtn000 = new ASTOperator(this, JJTOPERATOR);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PLUS:
					jj_consume_token(PLUS);
					break;
				case MINUS:
					jj_consume_token(MINUS);
					break;
				case CONCAT:
					jj_consume_token(CONCAT);
					break;
				case SLASH:
					jj_consume_token(SLASH);
					break;
				case ASTERISK:
					jj_consume_token(ASTERISK);
					break;
				default:
					jj_la1[194] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Operator");
		}
	}

	final public void BuiltInFunctionExpression() throws ParseException {
		trace_call("BuiltInFunctionExpression");
		try {
			/* @bgen(jjtree) BuiltInFunctionExpression */
			ASTBuiltInFunctionExpression jjtn000 = new ASTBuiltInFunctionExpression(
					this, JJTBUILTINFUNCTIONEXPRESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				Function();
				if (jj_2_78(2)) {
					jj_consume_token(OPENPAREN);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DISTINCT:
					case ALL:
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case ALL:
							jj_consume_token(ALL);
							break;
						case DISTINCT:
							jj_consume_token(DISTINCT);
							break;
						default:
							jj_la1[195] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[196] = jj_gen;
						;
					}
					Expr();
					label_46: while (true) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							;
							break;
						default:
							jj_la1[197] = jj_gen;
							break label_46;
						}
						jj_consume_token(COMMA);
						Expr();
					}
					jj_consume_token(CLOSEPAREN);
				} else {
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("BuiltInFunctionExpression");
		}
	}

	final public void Function() throws ParseException {
		trace_call("Function");
		try {
			/* @bgen(jjtree) Function */
			ASTFunction jjtn000 = new ASTFunction(this, JJTFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ROW_NUMBER:
				case RANK:
				case DENSE_RANK:
				case COUNT:
				case MIN:
				case MAX:
				case SUM:
				case AVG:
					AggregateFunction();
					break;
				case SYSDATE:
				case NVL:
				case NVL2:
				case INTERVAL:
				case ABS:
				case ACOS:
				case ASCIISTR:
				case ASIN:
				case ATAN:
				case CARDINALITY:
				case CEIL:
				case CHARTOROWID:
				case COS:
				case COSH:
				case EXP:
				case FLOOR:
				case LAST_DAY:
				case LENGTH:
				case LENGTHB:
				case LN:
				case BIN_TO_NUM:
				case ATAN2:
				case BITAND:
				case LOG:
				case CHR:
				case PI:
				case ADD_MONTHS:
				case MONTHS_BETWEEN:
				case CAST:
				case TO_CHAR:
				case TO_DATE:
				case TO_NUMBER:
				case LPAD:
				case RPAD:
				case REPLACE:
				case ROUND:
				case SUBSTRB:
				case SUBSTR:
				case TRANSLATE:
				case UPPER:
				case LOWER:
				case LTRIM:
				case RTRIM:
				case TRIM:
				case COALESCE:
				case ASCII:
				case DATEDIFF:
				case CURDATE:
				case CURRENT_DATE:
				case CURRENT_TIMESTAMP:
				case CONCAT:
					SingleRowFunction();
					break;
				default:
					jj_la1[198] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Function");
		}
	}

	final public void SingleRowFunction() throws ParseException {
		trace_call("SingleRowFunction");
		try {
			/* @bgen(jjtree) SingleRowFunction */
			ASTSingleRowFunction jjtn000 = new ASTSingleRowFunction(this,
					JJTSINGLEROWFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case INTERVAL:
					Interval();
					break;
				case SYSDATE:
				case ADD_MONTHS:
				case MONTHS_BETWEEN:
				case DATEDIFF:
				case CURDATE:
				case CURRENT_DATE:
				case CURRENT_TIMESTAMP:
					DateTimeFunction();
					break;
				case LPAD:
				case RPAD:
				case REPLACE:
				case SUBSTRB:
				case SUBSTR:
				case TRANSLATE:
				case UPPER:
				case LOWER:
				case LTRIM:
				case RTRIM:
				case TRIM:
					CharactorFunction();
					break;
				case CAST:
				case TO_CHAR:
				case TO_DATE:
				case TO_NUMBER:
				case ROUND:
					ConvertFunction();
					break;
				case NVL:
				case NVL2:
				case ABS:
				case ACOS:
				case ASCIISTR:
				case ASIN:
				case ATAN:
				case CARDINALITY:
				case CEIL:
				case CHARTOROWID:
				case COS:
				case COSH:
				case EXP:
				case FLOOR:
				case LAST_DAY:
				case LENGTH:
				case LENGTHB:
				case LN:
				case BIN_TO_NUM:
				case ATAN2:
				case BITAND:
				case LOG:
				case CHR:
				case PI:
				case COALESCE:
				case ASCII:
				case CONCAT:
					MiscellaneousFunction();
					break;
				default:
					jj_la1[199] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("SingleRowFunction");
		}
	}

	final public void MiscellaneousFunction() throws ParseException {
		trace_call("MiscellaneousFunction");
		try {
			/* @bgen(jjtree) MiscellaneousFunction */
			ASTMiscellaneousFunction jjtn000 = new ASTMiscellaneousFunction(
					this, JJTMISCELLANEOUSFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NVL:
				case NVL2:
					Nvl();
					break;
				case ABS:
				case ACOS:
				case ASCIISTR:
				case ASIN:
				case ATAN:
				case CARDINALITY:
				case CEIL:
				case CHARTOROWID:
				case COS:
				case COSH:
				case EXP:
				case FLOOR:
				case LAST_DAY:
				case LENGTH:
				case LENGTHB:
				case LN:
				case BIN_TO_NUM:
				case ATAN2:
				case BITAND:
				case LOG:
				case CHR:
				case PI:
				case COALESCE:
				case ASCII:
				case CONCAT:
					AbcFunction();
					break;
				default:
					jj_la1[200] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("MiscellaneousFunction");
		}
	}

	final public void CaseExression() throws ParseException {
		trace_call("CaseExression");
		try {
			/* @bgen(jjtree) CaseExression */
			ASTCaseExression jjtn000 = new ASTCaseExression(this,
					JJTCASEEXRESSION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(CASE);
				if (jj_2_79(2)) {
					Expr();
				} else {
					;
				}
				jj_consume_token(WHEN);
				Expr();
				jj_consume_token(THEN);
				Expr();
				label_47: while (true) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case WHEN:
						;
						break;
					default:
						jj_la1[201] = jj_gen;
						break label_47;
					}
					jj_consume_token(WHEN);
					Expr();
					jj_consume_token(THEN);
					Expr();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ELSE:
					jj_consume_token(ELSE);
					Expr();
					break;
				default:
					jj_la1[202] = jj_gen;
					;
				}
				jj_consume_token(END);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CaseExression");
		}
	}

	final public void Nvl() throws ParseException {
		trace_call("Nvl");
		try {
			/* @bgen(jjtree) Nvl */
			ASTNvl jjtn000 = new ASTNvl(this, JJTNVL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NVL2:
					jj_consume_token(NVL2);
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case NVL:
					jj_consume_token(NVL);
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[203] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Nvl");
		}
	}

	final public void AbcFunction() throws ParseException {
		trace_call("AbcFunction");
		try {
			/* @bgen(jjtree) AbcFunction */
			ASTAbcFunction jjtn000 = new ASTAbcFunction(this, JJTABCFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ABS:
				case ACOS:
				case ASCIISTR:
				case ASIN:
				case ATAN:
				case CARDINALITY:
				case CEIL:
				case CHARTOROWID:
				case COS:
				case COSH:
				case EXP:
				case FLOOR:
				case LAST_DAY:
				case LENGTH:
				case LENGTHB:
				case LN:
				case ASCII:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ABS:
						jj_consume_token(ABS);
						break;
					case ACOS:
						jj_consume_token(ACOS);
						break;
					case ASCIISTR:
						jj_consume_token(ASCIISTR);
						break;
					case ASCII:
						jj_consume_token(ASCII);
						break;
					case ASIN:
						jj_consume_token(ASIN);
						break;
					case ATAN:
						jj_consume_token(ATAN);
						break;
					case CARDINALITY:
						jj_consume_token(CARDINALITY);
						break;
					case CEIL:
						jj_consume_token(CEIL);
						break;
					case CHARTOROWID:
						jj_consume_token(CHARTOROWID);
						break;
					case COS:
						jj_consume_token(COS);
						break;
					case COSH:
						jj_consume_token(COSH);
						break;
					case EXP:
						jj_consume_token(EXP);
						break;
					case FLOOR:
						jj_consume_token(FLOOR);
						break;
					case LAST_DAY:
						jj_consume_token(LAST_DAY);
						break;
					case LENGTH:
						jj_consume_token(LENGTH);
						break;
					case LENGTHB:
						jj_consume_token(LENGTHB);
						break;
					case LN:
						jj_consume_token(LN);
						break;
					default:
						jj_la1[204] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case BIN_TO_NUM:
				case COALESCE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case BIN_TO_NUM:
						jj_consume_token(BIN_TO_NUM);
						break;
					case COALESCE:
						jj_consume_token(COALESCE);
						break;
					default:
						jj_la1[205] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					label_48: while (true) {
						if (jj_2_80(2)) {
							;
						} else {
							break label_48;
						}
						jj_consume_token(COMMA);
						Expr();
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case ATAN2:
				case BITAND:
				case LOG:
				case CONCAT:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ATAN2:
						jj_consume_token(ATAN2);
						break;
					case BITAND:
						jj_consume_token(BITAND);
						break;
					case CONCAT:
						jj_consume_token(CONCAT);
						break;
					case LOG:
						jj_consume_token(LOG);
						break;
					default:
						jj_la1[206] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case CHR:
					jj_consume_token(CHR);
					jj_consume_token(OPENPAREN);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case USING:
						jj_consume_token(USING);
						jj_consume_token(NCHAR_CS);
						break;
					default:
						jj_la1[207] = jj_gen;
						;
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case PI:
					jj_consume_token(PI);
					jj_consume_token(OPENPAREN);
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[208] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AbcFunction");
		}
	}

	final public void CharactorFunction() throws ParseException {
		trace_call("CharactorFunction");
		try {
			/* @bgen(jjtree) CharactorFunction */
			ASTCharactorFunction jjtn000 = new ASTCharactorFunction(this,
					JJTCHARACTORFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPAD:
				case RPAD:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LPAD:
						jj_consume_token(LPAD);
						break;
					case RPAD:
						jj_consume_token(RPAD);
						break;
					default:
						jj_la1[209] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case KEY:
					case FLOOR:
					case COUNT:
					case IDENTIFIER:
						Identifier();
						break;
					case INTEGER_LITERAL:
					case CHR_DEF:
					case CHARACTER_LITERAL:
					case STRING_LITERAL:
						Literal();
						break;
					default:
						jj_la1[210] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(COMMA);
					Expr();
					if (jj_2_81(2)) {
						jj_consume_token(COMMA);
						Literal();
					} else {
						;
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case REPLACE:
				case SUBSTRB:
				case SUBSTR:
				case TRANSLATE:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case SUBSTR:
						jj_consume_token(SUBSTR);
						break;
					case SUBSTRB:
						jj_consume_token(SUBSTRB);
						break;
					case REPLACE:
						jj_consume_token(REPLACE);
						break;
					case TRANSLATE:
						jj_consume_token(TRANSLATE);
						break;
					default:
						jj_la1[211] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Literal();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA:
						jj_consume_token(COMMA);
						Literal();
						break;
					default:
						jj_la1[212] = jj_gen;
						;
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case UPPER:
				case LOWER:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case UPPER:
						jj_consume_token(UPPER);
						break;
					case LOWER:
						jj_consume_token(LOWER);
						break;
					default:
						jj_la1[213] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case LTRIM:
				case RTRIM:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LTRIM:
						jj_consume_token(LTRIM);
						break;
					case RTRIM:
						jj_consume_token(RTRIM);
						break;
					default:
						jj_la1[214] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					if (jj_2_82(2)) {
						jj_consume_token(COMMA);
						Literal();
					} else {
						;
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case TRIM:
					jj_consume_token(TRIM);
					jj_consume_token(OPENPAREN);
					if (jj_2_83(3)) {
						Literal();
						jj_consume_token(FROM);
					} else {
						;
					}
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[215] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CharactorFunction");
		}
	}

	final public void ConvertFunction() throws ParseException {
		trace_call("ConvertFunction");
		try {
			/* @bgen(jjtree) ConvertFunction */
			ASTConvertFunction jjtn000 = new ASTConvertFunction(this,
					JJTCONVERTFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TO_CHAR:
				case TO_DATE:
				case TO_NUMBER:
				case ROUND:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case TO_CHAR:
						jj_consume_token(TO_CHAR);
						break;
					case TO_DATE:
						jj_consume_token(TO_DATE);
						break;
					case TO_NUMBER:
						jj_consume_token(TO_NUMBER);
						break;
					case ROUND:
						jj_consume_token(ROUND);
						break;
					default:
						jj_la1[216] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					if (jj_2_84(2)) {
						jj_consume_token(COMMA);
						Literal();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COMMA:
							jj_consume_token(COMMA);
							Literal();
							break;
						default:
							jj_la1[217] = jj_gen;
							;
						}
					} else {
						;
					}
					jj_consume_token(CLOSEPAREN);
					break;
				case CAST:
					jj_consume_token(CAST);
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(AS);
					FullType();
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[218] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("ConvertFunction");
		}
	}

	final public void Interval() throws ParseException {
		trace_call("Interval");
		try {
			/* @bgen(jjtree) Interval */
			ASTInterval jjtn000 = new ASTInterval(this, JJTINTERVAL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(INTERVAL);
				Literal();
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DAY:
					jj_consume_token(DAY);
					break;
				case HOUR:
					jj_consume_token(HOUR);
					break;
				case MINUTE:
					jj_consume_token(MINUTE);
					break;
				case SECOND:
					jj_consume_token(SECOND);
					break;
				default:
					jj_la1[219] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Interval");
		}
	}

	final public void DateTimeFunction() throws ParseException {
		trace_call("DateTimeFunction");
		try {
			/* @bgen(jjtree) DateTimeFunction */
			ASTDateTimeFunction jjtn000 = new ASTDateTimeFunction(this,
					JJTDATETIMEFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SYSDATE:
					jj_consume_token(SYSDATE);
					break;
				case CURRENT_DATE:
					jj_consume_token(CURRENT_DATE);
					break;
				case CURRENT_TIMESTAMP:
					jj_consume_token(CURRENT_TIMESTAMP);
					break;
				case ADD_MONTHS:
				case MONTHS_BETWEEN:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ADD_MONTHS:
						jj_consume_token(ADD_MONTHS);
						break;
					case MONTHS_BETWEEN:
						jj_consume_token(MONTHS_BETWEEN);
						break;
					default:
						jj_la1[220] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case DATEDIFF:
					jj_consume_token(DATEDIFF);
					jj_consume_token(OPENPAREN);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(COMMA);
					Expr();
					jj_consume_token(CLOSEPAREN);
					break;
				case CURDATE:
					jj_consume_token(CURDATE);
					jj_consume_token(OPENPAREN);
					jj_consume_token(CLOSEPAREN);
					break;
				default:
					jj_la1[221] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("DateTimeFunction");
		}
	}

	final public void AggregateFunction() throws ParseException {
		trace_call("AggregateFunction");
		try {
			/* @bgen(jjtree) AggregateFunction */
			ASTAggregateFunction jjtn000 = new ASTAggregateFunction(this,
					JJTAGGREGATEFUNCTION);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				if (jj_2_85(3)) {
					Count();
				} else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case MIN:
					case MAX:
					case SUM:
					case AVG:
						MaxMinSum();
						break;
					case ROW_NUMBER:
						RowNumber();
						break;
					case RANK:
					case DENSE_RANK:
						Rank();
						break;
					default:
						jj_la1[222] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OVER:
					AnalyticClause();
					break;
				default:
					jj_la1[223] = jj_gen;
					;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AggregateFunction");
		}
	}

	final public void AnalyticClause() throws ParseException {
		trace_call("AnalyticClause");
		try {
			/* @bgen(jjtree) AnalyticClause */
			ASTAnalyticClause jjtn000 = new ASTAnalyticClause(this,
					JJTANALYTICCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(OVER);
				jj_consume_token(OPENPAREN);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PARTITION:
					jj_consume_token(PARTITION);
					jj_consume_token(BY);
					ExpressionList();
					break;
				default:
					jj_la1[224] = jj_gen;
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ORDER:
					OrderByClause();
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ROWS:
					case RANGE:
						WindowingClause();
						break;
					default:
						jj_la1[225] = jj_gen;
						;
					}
					break;
				default:
					jj_la1[226] = jj_gen;
					;
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("AnalyticClause");
		}
	}

	final public void WindowingClause() throws ParseException {
		trace_call("WindowingClause");
		try {
			/* @bgen(jjtree) WindowingClause */
			ASTWindowingClause jjtn000 = new ASTWindowingClause(this,
					JJTWINDOWINGCLAUSE);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ROWS:
					jj_consume_token(ROWS);
					break;
				case RANGE:
					jj_consume_token(RANGE);
					break;
				default:
					jj_la1[227] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case BETWEEN:
					jj_consume_token(BETWEEN);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case UNBOUNDED:
						jj_consume_token(UNBOUNDED);
						jj_consume_token(PRECEDING);
						break;
					case CURRENT:
						jj_consume_token(CURRENT);
						jj_consume_token(ROW);
						break;
					case INTEGER_LITERAL:
						NumberLiteral();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case PRECEDING:
							jj_consume_token(PRECEDING);
							break;
						case FOLLOWING:
							jj_consume_token(FOLLOWING);
							break;
						default:
							jj_la1[228] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[229] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jj_consume_token(AND);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case UNBOUNDED:
						jj_consume_token(UNBOUNDED);
						jj_consume_token(FOLLOWING);
						break;
					case CURRENT:
						jj_consume_token(CURRENT);
						jj_consume_token(ROW);
						break;
					case INTEGER_LITERAL:
						NumberLiteral();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case PRECEDING:
							jj_consume_token(PRECEDING);
							break;
						case FOLLOWING:
							jj_consume_token(FOLLOWING);
							break;
						default:
							jj_la1[230] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[231] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				case INTEGER_LITERAL:
				case UNBOUNDED:
				case CURRENT:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case UNBOUNDED:
						jj_consume_token(UNBOUNDED);
						jj_consume_token(PRECEDING);
						break;
					case CURRENT:
						jj_consume_token(CURRENT);
						jj_consume_token(ROW);
						break;
					case INTEGER_LITERAL:
						NumberLiteral();
						jj_consume_token(PRECEDING);
						break;
					default:
						jj_la1[232] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[233] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("WindowingClause");
		}
	}

	final public void RowNumber() throws ParseException {
		trace_call("RowNumber");
		try {
			/* @bgen(jjtree) RowNumber */
			ASTRowNumber jjtn000 = new ASTRowNumber(this, JJTROWNUMBER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(ROW_NUMBER);
				jj_consume_token(OPENPAREN);
				jj_consume_token(CLOSEPAREN);
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("RowNumber");
		}
	}

	final public void Rank() throws ParseException {
		trace_call("Rank");
		try {
			/* @bgen(jjtree) Rank */
			ASTRank jjtn000 = new ASTRank(this, JJTRANK);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case RANK:
					jj_consume_token(RANK);
					break;
				case DENSE_RANK:
					jj_consume_token(DENSE_RANK);
					break;
				default:
					jj_la1[234] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(OPENPAREN);
				jj_consume_token(CLOSEPAREN);
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Rank");
		}
	}

	final public void Count() throws ParseException {
		trace_call("Count");
		try {
			/* @bgen(jjtree) Count */
			ASTCount jjtn000 = new ASTCount(this, JJTCOUNT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				jj_consume_token(COUNT);
				jj_consume_token(OPENPAREN);
				if (jj_2_86(2)) {
					jj_consume_token(ASTERISK);
				} else if (jj_2_87(1)) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case DISTINCT:
					case ALL:
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case ALL:
							jj_consume_token(ALL);
							break;
						case DISTINCT:
							jj_consume_token(DISTINCT);
							break;
						default:
							jj_la1[235] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
						}
						break;
					default:
						jj_la1[236] = jj_gen;
						;
					}
					Expr();
				} else {
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("Count");
		}
	}

	final public void MaxMinSum() throws ParseException {
		trace_call("MaxMinSum");
		try {
			/* @bgen(jjtree) MaxMinSum */
			ASTMaxMinSum jjtn000 = new ASTMaxMinSum(this, JJTMAXMINSUM);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case MAX:
					jj_consume_token(MAX);
					break;
				case MIN:
					jj_consume_token(MIN);
					break;
				case SUM:
					jj_consume_token(SUM);
					break;
				case AVG:
					jj_consume_token(AVG);
					break;
				default:
					jj_la1[237] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jj_consume_token(OPENPAREN);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DISTINCT:
				case ALL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ALL:
						jj_consume_token(ALL);
						break;
					case DISTINCT:
						jj_consume_token(DISTINCT);
						break;
					default:
						jj_la1[238] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default:
					jj_la1[239] = jj_gen;
					;
				}
				Expr();
				jj_consume_token(CLOSEPAREN);
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("MaxMinSum");
		}
	}

	// ------------------------------------------------------------------------------
	// Identifiers
	// ------------------------------------------------------------------------------
	final public String tableIDDot() throws ParseException {
		trace_call("tableIDDot");
		try {
			/* @bgen(jjtree) tableIDDot */
			ASTtableIDDot jjtn000 = new ASTtableIDDot(this, JJTTABLEIDDOT);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			String text;
			try {
				text = tableIdentifier();
				jj_consume_token(DOT);
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return text;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("tableIDDot");
		}
	}

	final public String tableIdentifier() throws ParseException {
		trace_call("tableIdentifier");
		try {
			/* @bgen(jjtree) tableIdentifier */
			ASTtableIdentifier jjtn000 = new ASTtableIdentifier(this,
					JJTTABLEIDENTIFIER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case IDENTIFIER:
					t = jj_consume_token(IDENTIFIER);
					break;
				case STRING_LITERAL:
					t = jj_consume_token(STRING_LITERAL);
					break;
				default:
					jj_la1[240] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SHARP:
					jj_consume_token(SHARP);
					break;
				default:
					jj_la1[241] = jj_gen;
					;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				jjtn000._string = t.image;
				{
					if (true)
						return t.image;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("tableIdentifier");
		}
	}

	final public String Identifier() throws ParseException {
		trace_call("Identifier");
		try {
			/* @bgen(jjtree) Identifier */
			ASTIdentifier jjtn000 = new ASTIdentifier(this, JJTIDENTIFIER);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case IDENTIFIER:
					t = jj_consume_token(IDENTIFIER);
					break;
				case COUNT:
					t = jj_consume_token(COUNT);
					break;
				case KEY:
					t = jj_consume_token(KEY);
					break;
				case FLOOR:
					t = jj_consume_token(FLOOR);
					break;
				default:
					jj_la1[242] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SHARP:
					jj_consume_token(SHARP);
					break;
				default:
					jj_la1[243] = jj_gen;
					;
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				jjtn000._string = t.image;
				{
					if (true)
						return t.image;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("Identifier");
		}
	}

	final public String Literal() throws ParseException {
		trace_call("Literal");
		try {
			/* @bgen(jjtree) Literal */
			ASTLiteral jjtn000 = new ASTLiteral(this, JJTLITERAL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			String st = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case STRING_LITERAL:
					t = jj_consume_token(STRING_LITERAL);
					break;
				case CHARACTER_LITERAL:
					t = jj_consume_token(CHARACTER_LITERAL);
					break;
				case INTEGER_LITERAL:
					st = NumberLiteral();
					break;
				case CHR_DEF:
					t = jj_consume_token(CHR_DEF);
					break;
				default:
					jj_la1[244] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				if (t != null) {
					jjtn000._string = t.image;
				} else {
					jjtn000._string = st;
				}
				{
					if (true)
						return jjtn000._string;
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("Literal");
		}
	}

	final public String NumberLiteral() throws ParseException {
		trace_call("NumberLiteral");
		try {
			/* @bgen(jjtree) NumberLiteral */
			ASTNumberLiteral jjtn000 = new ASTNumberLiteral(this,
					JJTNUMBERLITERAL);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			String st = null;
			try {
				t = jj_consume_token(INTEGER_LITERAL);
				st = t.image;
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DOT:
					jj_consume_token(DOT);
					t = jj_consume_token(INTEGER_LITERAL);
					break;
				default:
					jj_la1[245] = jj_gen;
					;
				}
				st += ".";
				st += t.image;
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				{
					if (true)
						return st;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
			throw new Error("Missing return statement in function");
		} finally {
			trace_return("NumberLiteral");
		}
	}

	// ------------------------------------------------------------------------------
	// Compare = != <> < > <= >=
	// ------------------------------------------------------------------------------
	final public void CompareOperator() throws ParseException {
		trace_call("CompareOperator");
		try {
			/* @bgen(jjtree) CompareOperator */
			ASTCompareOperator jjtn000 = new ASTCompareOperator(this,
					JJTCOMPAREOPERATOR);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case EQUAL:
				case NOTEQUAL:
				case NOTEQUAL2:
				case NOTEQUAL3:
					CompareEqualableOperator();
					break;
				case LESS:
				case LESSEQUAL:
				case GREATER:
				case GREATEREQUAL:
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case GREATER:
						t = jj_consume_token(GREATER);
						break;
					case GREATEREQUAL:
						t = jj_consume_token(GREATEREQUAL);
						break;
					case LESS:
						t = jj_consume_token(LESS);
						break;
					case LESSEQUAL:
						t = jj_consume_token(LESSEQUAL);
						break;
					default:
						jj_la1[246] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
					}
					jjtree.closeNodeScope(jjtn000, true);
					jjtc000 = false;
					jjtn000._string = t.image;
					break;
				default:
					jj_la1[247] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
			} catch (Throwable jjte000) {
				if (jjtc000) {
					jjtree.clearNodeScope(jjtn000);
					jjtc000 = false;
				} else {
					jjtree.popNode();
				}
				if (jjte000 instanceof RuntimeException) {
					{
						if (true)
							throw (RuntimeException) jjte000;
					}
				}
				if (jjte000 instanceof ParseException) {
					{
						if (true)
							throw (ParseException) jjte000;
					}
				}
				{
					if (true)
						throw (Error) jjte000;
				}
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CompareOperator");
		}
	}

	final public void CompareEqualableOperator() throws ParseException {
		trace_call("CompareEqualableOperator");
		try {
			/* @bgen(jjtree) CompareEqualableOperator */
			ASTCompareEqualableOperator jjtn000 = new ASTCompareEqualableOperator(
					this, JJTCOMPAREEQUALABLEOPERATOR);
			boolean jjtc000 = true;
			jjtree.openNodeScope(jjtn000);
			Token t = null;
			try {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case EQUAL:
					t = jj_consume_token(EQUAL);
					break;
				case NOTEQUAL:
					t = jj_consume_token(NOTEQUAL);
					break;
				case NOTEQUAL2:
					t = jj_consume_token(NOTEQUAL2);
					break;
				case NOTEQUAL3:
					t = jj_consume_token(NOTEQUAL3);
					break;
				default:
					jj_la1[248] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
				}
				jjtree.closeNodeScope(jjtn000, true);
				jjtc000 = false;
				jjtn000._string = t.image;
			} finally {
				if (jjtc000) {
					jjtree.closeNodeScope(jjtn000, true);
				}
			}
		} finally {
			trace_return("CompareEqualableOperator");
		}
	}

	final private boolean jj_2_1(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_1();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(0, xla);
		}
	}

	final private boolean jj_2_2(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_2();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(1, xla);
		}
	}

	final private boolean jj_2_3(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_3();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(2, xla);
		}
	}

	final private boolean jj_2_4(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_4();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(3, xla);
		}
	}

	final private boolean jj_2_5(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_5();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(4, xla);
		}
	}

	final private boolean jj_2_6(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_6();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(5, xla);
		}
	}

	final private boolean jj_2_7(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_7();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(6, xla);
		}
	}

	final private boolean jj_2_8(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_8();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(7, xla);
		}
	}

	final private boolean jj_2_9(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_9();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(8, xla);
		}
	}

	final private boolean jj_2_10(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_10();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(9, xla);
		}
	}

	final private boolean jj_2_11(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_11();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(10, xla);
		}
	}

	final private boolean jj_2_12(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_12();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(11, xla);
		}
	}

	final private boolean jj_2_13(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_13();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(12, xla);
		}
	}

	final private boolean jj_2_14(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_14();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(13, xla);
		}
	}

	final private boolean jj_2_15(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_15();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(14, xla);
		}
	}

	final private boolean jj_2_16(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_16();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(15, xla);
		}
	}

	final private boolean jj_2_17(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_17();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(16, xla);
		}
	}

	final private boolean jj_2_18(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_18();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(17, xla);
		}
	}

	final private boolean jj_2_19(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_19();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(18, xla);
		}
	}

	final private boolean jj_2_20(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_20();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(19, xla);
		}
	}

	final private boolean jj_2_21(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_21();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(20, xla);
		}
	}

	final private boolean jj_2_22(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_22();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(21, xla);
		}
	}

	final private boolean jj_2_23(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_23();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(22, xla);
		}
	}

	final private boolean jj_2_24(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_24();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(23, xla);
		}
	}

	final private boolean jj_2_25(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_25();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(24, xla);
		}
	}

	final private boolean jj_2_26(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_26();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(25, xla);
		}
	}

	final private boolean jj_2_27(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_27();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(26, xla);
		}
	}

	final private boolean jj_2_28(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_28();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(27, xla);
		}
	}

	final private boolean jj_2_29(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_29();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(28, xla);
		}
	}

	final private boolean jj_2_30(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_30();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(29, xla);
		}
	}

	final private boolean jj_2_31(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_31();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(30, xla);
		}
	}

	final private boolean jj_2_32(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_32();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(31, xla);
		}
	}

	final private boolean jj_2_33(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_33();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(32, xla);
		}
	}

	final private boolean jj_2_34(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_34();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(33, xla);
		}
	}

	final private boolean jj_2_35(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_35();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(34, xla);
		}
	}

	final private boolean jj_2_36(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_36();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(35, xla);
		}
	}

	final private boolean jj_2_37(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_37();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(36, xla);
		}
	}

	final private boolean jj_2_38(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_38();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(37, xla);
		}
	}

	final private boolean jj_2_39(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_39();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(38, xla);
		}
	}

	final private boolean jj_2_40(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_40();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(39, xla);
		}
	}

	final private boolean jj_2_41(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_41();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(40, xla);
		}
	}

	final private boolean jj_2_42(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_42();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(41, xla);
		}
	}

	final private boolean jj_2_43(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_43();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(42, xla);
		}
	}

	final private boolean jj_2_44(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_44();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(43, xla);
		}
	}

	final private boolean jj_2_45(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_45();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(44, xla);
		}
	}

	final private boolean jj_2_46(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_46();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(45, xla);
		}
	}

	final private boolean jj_2_47(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_47();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(46, xla);
		}
	}

	final private boolean jj_2_48(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_48();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(47, xla);
		}
	}

	final private boolean jj_2_49(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_49();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(48, xla);
		}
	}

	final private boolean jj_2_50(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_50();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(49, xla);
		}
	}

	final private boolean jj_2_51(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_51();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(50, xla);
		}
	}

	final private boolean jj_2_52(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_52();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(51, xla);
		}
	}

	final private boolean jj_2_53(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_53();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(52, xla);
		}
	}

	final private boolean jj_2_54(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_54();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(53, xla);
		}
	}

	final private boolean jj_2_55(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_55();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(54, xla);
		}
	}

	final private boolean jj_2_56(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_56();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(55, xla);
		}
	}

	final private boolean jj_2_57(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_57();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(56, xla);
		}
	}

	final private boolean jj_2_58(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_58();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(57, xla);
		}
	}

	final private boolean jj_2_59(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_59();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(58, xla);
		}
	}

	final private boolean jj_2_60(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_60();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(59, xla);
		}
	}

	final private boolean jj_2_61(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_61();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(60, xla);
		}
	}

	final private boolean jj_2_62(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_62();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(61, xla);
		}
	}

	final private boolean jj_2_63(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_63();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(62, xla);
		}
	}

	final private boolean jj_2_64(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_64();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(63, xla);
		}
	}

	final private boolean jj_2_65(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_65();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(64, xla);
		}
	}

	final private boolean jj_2_66(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_66();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(65, xla);
		}
	}

	final private boolean jj_2_67(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_67();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(66, xla);
		}
	}

	final private boolean jj_2_68(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_68();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(67, xla);
		}
	}

	final private boolean jj_2_69(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_69();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(68, xla);
		}
	}

	final private boolean jj_2_70(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_70();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(69, xla);
		}
	}

	final private boolean jj_2_71(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_71();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(70, xla);
		}
	}

	final private boolean jj_2_72(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_72();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(71, xla);
		}
	}

	final private boolean jj_2_73(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_73();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(72, xla);
		}
	}

	final private boolean jj_2_74(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_74();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(73, xla);
		}
	}

	final private boolean jj_2_75(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_75();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(74, xla);
		}
	}

	final private boolean jj_2_76(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_76();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(75, xla);
		}
	}

	final private boolean jj_2_77(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_77();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(76, xla);
		}
	}

	final private boolean jj_2_78(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_78();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(77, xla);
		}
	}

	final private boolean jj_2_79(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_79();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(78, xla);
		}
	}

	final private boolean jj_2_80(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_80();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(79, xla);
		}
	}

	final private boolean jj_2_81(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_81();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(80, xla);
		}
	}

	final private boolean jj_2_82(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_82();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(81, xla);
		}
	}

	final private boolean jj_2_83(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_83();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(82, xla);
		}
	}

	final private boolean jj_2_84(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_84();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(83, xla);
		}
	}

	final private boolean jj_2_85(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_85();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(84, xla);
		}
	}

	final private boolean jj_2_86(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_86();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(85, xla);
		}
	}

	final private boolean jj_2_87(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_87();
		} catch (LookaheadSuccess ls) {
			return true;
		} finally {
			jj_save(86, xla);
		}
	}

	final private boolean jj_3R_168() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_62()) {
			jj_scanpos = xsp;
			if (jj_3_63()) {
				jj_scanpos = xsp;
				if (jj_3_64())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_136() {
		if (jj_3R_168())
			return true;
		return false;
	}

	final private boolean jj_3R_326() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(68)) {
			jj_scanpos = xsp;
			if (jj_scan_token(69))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_130() {
		if (jj_3R_166())
			return true;
		return false;
	}

	final private boolean jj_3R_131() {
		if (jj_3R_79())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_326())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_327())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_323() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_131())
			return true;
		return false;
	}

	final private boolean jj_3R_226() {
		if (jj_scan_token(STORAGE))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_129() {
		if (jj_scan_token(PRIMARY))
			return true;
		if (jj_scan_token(KEY))
			return true;
		return false;
	}

	final private boolean jj_3R_163() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(189)) {
			jj_scanpos = xsp;
			if (jj_scan_token(190))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_69() {
		if (jj_scan_token(ORDER))
			return true;
		if (jj_scan_token(BY))
			return true;
		if (jj_3R_131())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_323()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_200() {
		if (jj_3R_226())
			return true;
		return false;
	}

	final private boolean jj_3R_199() {
		if (jj_scan_token(MAXTRANS))
			return true;
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_257() {
		if (jj_scan_token(TABLESPACE))
			return true;
		return false;
	}

	final private boolean jj_3R_198() {
		if (jj_scan_token(INITRANS))
			return true;
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_197() {
		if (jj_scan_token(PCTUSED))
			return true;
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_229() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_257()) {
			jj_scanpos = xsp;
			if (jj_scan_token(124))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_228() {
		if (jj_3R_163())
			return true;
		return false;
	}

	final private boolean jj_3R_201() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_227()) {
			jj_scanpos = xsp;
			if (jj_3R_228()) {
				jj_scanpos = xsp;
				if (jj_3R_229())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_227() {
		if (jj_3R_162())
			return true;
		return false;
	}

	final private boolean jj_3R_162() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_196()) {
			jj_scanpos = xsp;
			if (jj_3R_197()) {
				jj_scanpos = xsp;
				if (jj_3R_198()) {
					jj_scanpos = xsp;
					if (jj_3R_199()) {
						jj_scanpos = xsp;
						if (jj_3R_200())
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_196() {
		if (jj_scan_token(PCTFREE))
			return true;
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_164() {
		if (jj_scan_token(USING))
			return true;
		if (jj_scan_token(INDEX))
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_201()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_124() {
		if (jj_3R_164())
			return true;
		return false;
	}

	final private boolean jj_3R_123() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(DEFERRABLE))
			return true;
		return false;
	}

	final private boolean jj_3R_62() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(116)) {
			jj_scanpos = xsp;
			if (jj_scan_token(117)) {
				jj_scanpos = xsp;
				if (jj_3R_123()) {
					jj_scanpos = xsp;
					if (jj_3R_124())
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3_54() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_128() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(NULL))
			return true;
		return false;
	}

	final private boolean jj_3R_76() {
		if (jj_scan_token(GROUP))
			return true;
		if (jj_scan_token(BY))
			return true;
		return false;
	}

	final private boolean jj_3_22() {
		if (jj_3R_62())
			return true;
		return false;
	}

	final private boolean jj_3_53() {
		if (jj_scan_token(START))
			return true;
		if (jj_scan_token(WITH))
			return true;
		if (jj_3R_136())
			return true;
		return false;
	}

	final private boolean jj_3R_75() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_53())
			jj_scanpos = xsp;
		if (jj_scan_token(CONNECT))
			return true;
		if (jj_scan_token(BY))
			return true;
		if (jj_3R_136())
			return true;
		return false;
	}

	final private boolean jj_3R_66() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_128()) {
			jj_scanpos = xsp;
			if (jj_scan_token(143)) {
				jj_scanpos = xsp;
				if (jj_3R_129()) {
					jj_scanpos = xsp;
					if (jj_3R_130()) {
						jj_scanpos = xsp;
						if (jj_scan_token(120))
							return true;
					}
				}
			}
		}
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_22()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_61() {
		if (jj_3R_66())
			return true;
		return false;
	}

	final private boolean jj_3R_139() {
		if (jj_scan_token(COMMA))
			return true;
		return false;
	}

	final private boolean jj_3_21() {
		if (jj_3R_60())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_61()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_74() {
		if (jj_scan_token(WHERE))
			return true;
		if (jj_3R_136())
			return true;
		return false;
	}

	final private boolean jj_3R_225() {
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3_52() {
		if (jj_3R_82())
			return true;
		return false;
	}

	final private boolean jj_3R_245() {
		if (jj_scan_token(VALUES))
			return true;
		return false;
	}

	final private boolean jj_3R_224() {
		if (jj_3R_245())
			return true;
		return false;
	}

	final private boolean jj_3R_195() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_224()) {
			jj_scanpos = xsp;
			if (jj_3R_225())
				return true;
		}
		return false;
	}

	final private boolean jj_3_50() {
		if (jj_3R_80())
			return true;
		return false;
	}

	final private boolean jj_3_51() {
		if (jj_3R_81())
			return true;
		return false;
	}

	final private boolean jj_3R_81() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_67())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_139()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_194() {
		if (jj_3R_223())
			return true;
		return false;
	}

	final private boolean jj_3R_276() {
		if (jj_scan_token(USER))
			return true;
		return false;
	}

	final private boolean jj_3_20() {
		if (jj_3R_59())
			return true;
		return false;
	}

	final private boolean jj_3R_119() {
		if (jj_scan_token(TABLESPACE))
			return true;
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3R_161() {
		if (jj_scan_token(INSERT))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_50())
			jj_scanpos = xsp;
		if (jj_scan_token(INTO))
			return true;
		if (jj_3R_191())
			return true;
		xsp = jj_scanpos;
		if (jj_3_51())
			jj_scanpos = xsp;
		if (jj_3R_195())
			return true;
		return false;
	}

	final private boolean jj_3R_118() {
		if (jj_3R_163())
			return true;
		return false;
	}

	final private boolean jj_3_19() {
		if (jj_3R_59())
			return true;
		return false;
	}

	final private boolean jj_3R_59() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_117()) {
			jj_scanpos = xsp;
			if (jj_3R_118()) {
				jj_scanpos = xsp;
				if (jj_3R_119())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_117() {
		if (jj_3R_162())
			return true;
		return false;
	}

	final private boolean jj_3R_193() {
		if (jj_3R_74())
			return true;
		return false;
	}

	final private boolean jj_3_49() {
		if (jj_3R_80())
			return true;
		return false;
	}

	final private boolean jj_3R_181() {
		if (jj_scan_token(ASSIGN))
			return true;
		return false;
	}

	final private boolean jj_3R_160() {
		if (jj_scan_token(DELETE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_49())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(22))
			jj_scanpos = xsp;
		if (jj_3R_191())
			return true;
		xsp = jj_scanpos;
		if (jj_3R_193())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_194())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3_48() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3_18() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_223() {
		if (jj_scan_token(RETURNING))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_180() {
		if (jj_3R_120())
			return true;
		return false;
	}

	final private boolean jj_3R_244() {
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3_14() {
		if (jj_3R_56())
			return true;
		return false;
	}

	final private boolean jj_3_17() {
		if (jj_3R_58())
			return true;
		return false;
	}

	final private boolean jj_3R_298() {
		if (jj_scan_token(GLOBAL))
			return true;
		return false;
	}

	final private boolean jj_3R_243() {
		if (jj_scan_token(OPENPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_222() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_243()) {
			jj_scanpos = xsp;
			if (jj_3R_244())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_275() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_298())
			jj_scanpos = xsp;
		if (jj_scan_token(TABLE))
			return true;
		return false;
	}

	final private boolean jj_3R_54() {
		if (jj_3R_112())
			return true;
		return false;
	}

	final private boolean jj_3R_111() {
		if (jj_3R_158())
			return true;
		return false;
	}

	final private boolean jj_3R_58() {
		if (jj_3R_100())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_180())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_181())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	final private boolean jj_3R_52() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(212))
			jj_scanpos = xsp;
		if (jj_3_17())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_17()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_110() {
		if (jj_3R_157())
			return true;
		return false;
	}

	final private boolean jj_3R_190() {
		if (jj_3R_80())
			return true;
		return false;
	}

	final private boolean jj_3_16() {
		if (jj_3R_53())
			return true;
		return false;
	}

	final private boolean jj_3R_192() {
		if (jj_scan_token(SET))
			return true;
		if (jj_3R_222())
			return true;
		return false;
	}

	final private boolean jj_3_11() {
		if (jj_3R_53())
			return true;
		return false;
	}

	final private boolean jj_3R_112() {
		if (jj_scan_token(FOR))
			return true;
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3_15() {
		if (jj_3R_57())
			return true;
		if (jj_scan_token(ASSIGN))
			return true;
		return false;
	}

	final private boolean jj_3R_56() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_15())
			jj_scanpos = xsp;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_156() {
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_159() {
		if (jj_scan_token(UPDATE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_190())
			jj_scanpos = xsp;
		if (jj_3R_191())
			return true;
		if (jj_3R_192())
			return true;
		return false;
	}

	final private boolean jj_3R_141() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(319)) {
			jj_scanpos = xsp;
			if (jj_scan_token(320)) {
				jj_scanpos = xsp;
				if (jj_scan_token(321)) {
					jj_scanpos = xsp;
					if (jj_scan_token(322))
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3_13() {
		if (jj_3R_55())
			return true;
		return false;
	}

	final private boolean jj_3R_53() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_13()) {
			jj_scanpos = xsp;
			if (jj_3R_110()) {
				jj_scanpos = xsp;
				if (jj_3R_111()) {
					jj_scanpos = xsp;
					if (jj_3_14())
						return true;
				}
			}
		}
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	final private boolean jj_3_12() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_11()) {
			jj_scanpos = xsp;
			if (jj_3R_54())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_173() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(317)) {
			jj_scanpos = xsp;
			if (jj_scan_token(318)) {
				jj_scanpos = xsp;
				if (jj_scan_token(315)) {
					jj_scanpos = xsp;
					if (jj_scan_token(316))
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3_10() {
		if (jj_3R_52())
			return true;
		return false;
	}

	final private boolean jj_3R_142() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_172()) {
			jj_scanpos = xsp;
			if (jj_3R_173())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_172() {
		if (jj_3R_141())
			return true;
		return false;
	}

	final private boolean jj_3R_209() {
		if (jj_scan_token(DOT))
			return true;
		if (jj_scan_token(INTEGER_LITERAL))
			return true;
		return false;
	}

	final private boolean jj_3_9() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_241() {
		if (jj_3R_271())
			return true;
		return false;
	}

	final private boolean jj_3_47() {
		if (jj_3R_50())
			return true;
		return false;
	}

	final private boolean jj_3R_221() {
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3R_220() {
		if (jj_3R_242())
			return true;
		return false;
	}

	final private boolean jj_3R_68() {
		if (jj_scan_token(INTEGER_LITERAL))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_209())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_278() {
		if (jj_scan_token(PROCEDURE))
			return true;
		return false;
	}

	final private boolean jj_3R_206() {
		if (jj_3R_169())
			return true;
		return false;
	}

	final private boolean jj_3_8() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_219() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_47())
			jj_scanpos = xsp;
		if (jj_3R_67())
			return true;
		xsp = jj_scanpos;
		if (jj_3R_241())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_283() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(54)) {
			jj_scanpos = xsp;
			if (jj_scan_token(31))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_105() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(340)) {
			jj_scanpos = xsp;
			if (jj_scan_token(339)) {
				jj_scanpos = xsp;
				if (jj_3R_156()) {
					jj_scanpos = xsp;
					if (jj_scan_token(336))
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_218() {
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3R_171() {
		if (jj_scan_token(NATURAL))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_206())
			jj_scanpos = xsp;
		if (jj_scan_token(JOIN))
			return true;
		return false;
	}

	final private boolean jj_3R_336() {
		if (jj_3R_68())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(173)) {
			jj_scanpos = xsp;
			if (jj_scan_token(178))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_339() {
		if (jj_3R_68())
			return true;
		if (jj_scan_token(PRECEDING))
			return true;
		return false;
	}

	final private boolean jj_3R_333() {
		if (jj_3R_68())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(173)) {
			jj_scanpos = xsp;
			if (jj_scan_token(178))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_279() {
		if (jj_scan_token(FUNCTION))
			return true;
		return false;
	}

	final private boolean jj_3R_57() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(335)) {
			jj_scanpos = xsp;
			if (jj_scan_token(267)) {
				jj_scanpos = xsp;
				if (jj_scan_token(130)) {
					jj_scanpos = xsp;
					if (jj_scan_token(237))
						return true;
				}
			}
		}
		xsp = jj_scanpos;
		if (jj_scan_token(334))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_205() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(38)) {
			jj_scanpos = xsp;
			if (jj_scan_token(39)) {
				jj_scanpos = xsp;
				if (jj_scan_token(42))
					return true;
			}
		}
		xsp = jj_scanpos;
		if (jj_scan_token(37))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_321() {
		if (jj_3R_324())
			return true;
		return false;
	}

	final private boolean jj_3R_191() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_218()) {
			jj_scanpos = xsp;
			if (jj_3R_219())
				return true;
		}
		xsp = jj_scanpos;
		if (jj_3R_220())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_221())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_325() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3_7() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_170() {
		if (jj_scan_token(CROSS))
			return true;
		if (jj_scan_token(JOIN))
			return true;
		return false;
	}

	final private boolean jj_3R_169() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(36)) {
			jj_scanpos = xsp;
			if (jj_3R_205())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_67() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(335)) {
			jj_scanpos = xsp;
			if (jj_scan_token(340))
				return true;
		}
		xsp = jj_scanpos;
		if (jj_scan_token(334))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_335() {
		if (jj_scan_token(CURRENT))
			return true;
		if (jj_scan_token(ROW))
			return true;
		return false;
	}

	final private boolean jj_3_46() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_338() {
		if (jj_scan_token(CURRENT))
			return true;
		if (jj_scan_token(ROW))
			return true;
		return false;
	}

	final private boolean jj_3_6() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3_45() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_332() {
		if (jj_scan_token(CURRENT))
			return true;
		if (jj_scan_token(ROW))
			return true;
		return false;
	}

	final private boolean jj_3R_138() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_170()) {
			jj_scanpos = xsp;
			if (jj_3R_171())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_50() {
		if (jj_3R_67())
			return true;
		if (jj_scan_token(DOT))
			return true;
		return false;
	}

	final private boolean jj_3R_107() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(54)) {
			jj_scanpos = xsp;
			if (jj_scan_token(31))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_320() {
		if (jj_3R_69())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_321())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_306() {
		if (jj_3R_315())
			return true;
		return false;
	}

	final private boolean jj_3R_252() {
		if (jj_3R_279())
			return true;
		return false;
	}

	final private boolean jj_3R_263() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(269)) {
			jj_scanpos = xsp;
			if (jj_scan_token(268)) {
				jj_scanpos = xsp;
				if (jj_scan_token(270)) {
					jj_scanpos = xsp;
					if (jj_scan_token(271))
						return true;
				}
			}
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_283())
			jj_scanpos = xsp;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_87() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_107())
			jj_scanpos = xsp;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_235() {
		if (jj_3R_265())
			return true;
		return false;
	}

	final private boolean jj_3R_277() {
		if (jj_scan_token(TRIGGER))
			return true;
		return false;
	}

	final private boolean jj_3_86() {
		if (jj_scan_token(ASTERISK))
			return true;
		return false;
	}

	final private boolean jj_3R_256() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(15)) {
			jj_scanpos = xsp;
			if (jj_scan_token(17)) {
				jj_scanpos = xsp;
				if (jj_scan_token(16)) {
					jj_scanpos = xsp;
					if (jj_scan_token(14)) {
						jj_scanpos = xsp;
						if (jj_scan_token(137))
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_255() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(168)) {
			jj_scanpos = xsp;
			if (jj_scan_token(156)) {
				jj_scanpos = xsp;
				if (jj_scan_token(169))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3_84() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_325())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_334() {
		if (jj_scan_token(UNBOUNDED))
			return true;
		if (jj_scan_token(FOLLOWING))
			return true;
		return false;
	}

	final private boolean jj_3R_251() {
		if (jj_3R_278())
			return true;
		return false;
	}

	final private boolean jj_3R_78() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_137()) {
			jj_scanpos = xsp;
			if (jj_3R_138())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_137() {
		if (jj_3R_169())
			return true;
		if (jj_scan_token(JOIN))
			return true;
		return false;
	}

	final private boolean jj_3R_106() {
		if (jj_scan_token(COUNT))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_86()) {
			jj_scanpos = xsp;
			if (jj_3_87())
				return true;
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_337() {
		if (jj_scan_token(UNBOUNDED))
			return true;
		if (jj_scan_token(PRECEDING))
			return true;
		return false;
	}

	final private boolean jj_3R_331() {
		if (jj_scan_token(UNBOUNDED))
			return true;
		if (jj_scan_token(PRECEDING))
			return true;
		return false;
	}

	final private boolean jj_3R_234() {
		if (jj_3R_264())
			return true;
		return false;
	}

	final private boolean jj_3R_215() {
		if (jj_scan_token(REVOKE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_255()) {
			jj_scanpos = xsp;
			if (jj_3R_256())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_254() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(15)) {
			jj_scanpos = xsp;
			if (jj_scan_token(17)) {
				jj_scanpos = xsp;
				if (jj_scan_token(16)) {
					jj_scanpos = xsp;
					if (jj_scan_token(14)) {
						jj_scanpos = xsp;
						if (jj_scan_token(137))
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_265() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(180)) {
			jj_scanpos = xsp;
			if (jj_scan_token(181))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_318() {
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3R_253() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(168)) {
			jj_scanpos = xsp;
			if (jj_scan_token(156)) {
				jj_scanpos = xsp;
				if (jj_scan_token(169))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_329() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_337()) {
			jj_scanpos = xsp;
			if (jj_3R_338()) {
				jj_scanpos = xsp;
				if (jj_3R_339())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_273() {
		if (jj_scan_token(AS))
			return true;
		if (jj_scan_token(OF))
			return true;
		return false;
	}

	final private boolean jj_3R_264() {
		if (jj_scan_token(ROW_NUMBER))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_81() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3R_319() {
		if (jj_scan_token(PARTITION))
			return true;
		if (jj_scan_token(BY))
			return true;
		if (jj_3R_82())
			return true;
		return false;
	}

	final private boolean jj_3_4() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_250() {
		if (jj_3R_277())
			return true;
		return false;
	}

	final private boolean jj_3R_233() {
		if (jj_3R_263())
			return true;
		return false;
	}

	final private boolean jj_3_5() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_214() {
		if (jj_scan_token(GRANT))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_253()) {
			jj_scanpos = xsp;
			if (jj_3R_254())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_272() {
		if (jj_scan_token(VERSIONS))
			return true;
		if (jj_scan_token(BETWEEN))
			return true;
		return false;
	}

	final private boolean jj_3R_242() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_272()) {
			jj_scanpos = xsp;
			if (jj_3R_273())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_328() {
		if (jj_scan_token(BETWEEN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_331()) {
			jj_scanpos = xsp;
			if (jj_3R_332()) {
				jj_scanpos = xsp;
				if (jj_3R_333())
					return true;
			}
		}
		if (jj_scan_token(AND))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_334()) {
			jj_scanpos = xsp;
			if (jj_3R_335()) {
				jj_scanpos = xsp;
				if (jj_3R_336())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3_44() {
		if (jj_3R_78())
			return true;
		return false;
	}

	final private boolean jj_3R_213() {
		if (jj_scan_token(TRUNCATE))
			return true;
		if (jj_scan_token(TABLE))
			return true;
		return false;
	}

	final private boolean jj_3R_317() {
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3R_324() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(163)) {
			jj_scanpos = xsp;
			if (jj_scan_token(171))
				return true;
		}
		xsp = jj_scanpos;
		if (jj_3R_328()) {
			jj_scanpos = xsp;
			if (jj_3R_329())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_304() {
		if (jj_3R_191())
			return true;
		return false;
	}

	final private boolean jj_3R_249() {
		if (jj_3R_276())
			return true;
		return false;
	}

	final private boolean jj_3_82() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3R_315() {
		if (jj_scan_token(OVER))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_319())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_320())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_314() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(27))
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_317()) {
			jj_scanpos = xsp;
			if (jj_3R_318())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_301() {
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3_3() {
		if (jj_3R_50())
			return true;
		return false;
	}

	final private boolean jj_3_85() {
		if (jj_3R_106())
			return true;
		return false;
	}

	final private boolean jj_3R_207() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_85()) {
			jj_scanpos = xsp;
			if (jj_3R_233()) {
				jj_scanpos = xsp;
				if (jj_3R_234()) {
					jj_scanpos = xsp;
					if (jj_3R_235())
						return true;
				}
			}
		}
		xsp = jj_scanpos;
		if (jj_3R_306())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_212() {
		if (jj_scan_token(DROP))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(141)) {
			jj_scanpos = xsp;
			if (jj_scan_token(128)) {
				jj_scanpos = xsp;
				if (jj_scan_token(257)) {
					jj_scanpos = xsp;
					if (jj_scan_token(258)) {
						jj_scanpos = xsp;
						if (jj_scan_token(205)) {
							jj_scanpos = xsp;
							if (jj_scan_token(154)) {
								jj_scanpos = xsp;
								if (jj_scan_token(259)) {
									jj_scanpos = xsp;
									if (jj_scan_token(210)) {
										jj_scanpos = xsp;
										if (jj_scan_token(211))
											return true;
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_262() {
		if (jj_scan_token(ELSE))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_286() {
		if (jj_scan_token(CURDATE))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_248() {
		if (jj_3R_275())
			return true;
		return false;
	}

	final private boolean jj_3R_285() {
		if (jj_scan_token(DATEDIFF))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_247() {
		if (jj_scan_token(OR))
			return true;
		return false;
	}

	final private boolean jj_3R_187() {
		if (jj_3R_215())
			return true;
		return false;
	}

	final private boolean jj_3R_211() {
		if (jj_scan_token(CREATE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_247())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_248()) {
			jj_scanpos = xsp;
			if (jj_3R_249()) {
				jj_scanpos = xsp;
				if (jj_3R_250()) {
					jj_scanpos = xsp;
					if (jj_3R_251()) {
						jj_scanpos = xsp;
						if (jj_3R_252())
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_116() {
		if (jj_3R_161())
			return true;
		return false;
	}

	final private boolean jj_3R_284() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(249)) {
			jj_scanpos = xsp;
			if (jj_scan_token(250))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_300() {
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3R_267() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(26)) {
			jj_scanpos = xsp;
			if (jj_scan_token(297)) {
				jj_scanpos = xsp;
				if (jj_scan_token(300)) {
					jj_scanpos = xsp;
					if (jj_3R_284()) {
						jj_scanpos = xsp;
						if (jj_3R_285()) {
							jj_scanpos = xsp;
							if (jj_3R_286())
								return true;
						}
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_305() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_77())
			return true;
		return false;
	}

	final private boolean jj_3R_266() {
		if (jj_scan_token(INTERVAL))
			return true;
		if (jj_3R_105())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(222)) {
			jj_scanpos = xsp;
			if (jj_scan_token(223)) {
				jj_scanpos = xsp;
				if (jj_scan_token(224)) {
					jj_scanpos = xsp;
					if (jj_scan_token(225))
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_186() {
		if (jj_3R_214())
			return true;
		return false;
	}

	final private boolean jj_3_83() {
		if (jj_3R_105())
			return true;
		if (jj_scan_token(FROM))
			return true;
		return false;
	}

	final private boolean jj_3R_77() {
		if (jj_3R_79())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_314())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_293() {
		if (jj_scan_token(CAST))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(AS))
			return true;
		if (jj_3R_120())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_292() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(262)) {
			jj_scanpos = xsp;
			if (jj_scan_token(263)) {
				jj_scanpos = xsp;
				if (jj_scan_token(264)) {
					jj_scanpos = xsp;
					if (jj_scan_token(274))
						return true;
				}
			}
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		xsp = jj_scanpos;
		if (jj_3_84())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_269() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_292()) {
			jj_scanpos = xsp;
			if (jj_3R_293())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_115() {
		if (jj_3R_160())
			return true;
		return false;
	}

	final private boolean jj_3R_185() {
		if (jj_3R_213())
			return true;
		return false;
	}

	final private boolean jj_3R_240() {
		if (jj_3R_270())
			return true;
		return false;
	}

	final private boolean jj_3_43() {
		if (jj_3R_77())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_305()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_322() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3R_231() {
		if (jj_scan_token(ASTERISK))
			return true;
		return false;
	}

	final private boolean jj_3R_291() {
		if (jj_scan_token(TRIM))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_83())
			jj_scanpos = xsp;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_217() {
		if (jj_scan_token(COMMENT))
			return true;
		if (jj_scan_token(ON))
			return true;
		return false;
	}

	final private boolean jj_3R_261() {
		if (jj_scan_token(WHEN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(THEN))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_184() {
		if (jj_3R_212())
			return true;
		return false;
	}

	final private boolean jj_3R_316() {
		if (jj_scan_token(USING))
			return true;
		if (jj_scan_token(NCHAR_CS))
			return true;
		return false;
	}

	final private boolean jj_3R_290() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(280)) {
			jj_scanpos = xsp;
			if (jj_scan_token(281))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		xsp = jj_scanpos;
		if (jj_3_82())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_2() {
		if (jj_3R_50())
			return true;
		return false;
	}

	final private boolean jj_3R_189() {
		if (jj_3R_217())
			return true;
		return false;
	}

	final private boolean jj_3R_204() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_231()) {
			jj_scanpos = xsp;
			if (jj_3_43())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_289() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(278)) {
			jj_scanpos = xsp;
			if (jj_scan_token(279))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_80() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_109() {
		if (jj_scan_token(INTO))
			return true;
		return false;
	}

	final private boolean jj_3R_80() {
		if (jj_scan_token(HINT_COM_START))
			return true;
		if (jj_scan_token(HINT_COM_END))
			return true;
		return false;
	}

	final private boolean jj_3R_108() {
		if (jj_scan_token(SET))
			return true;
		return false;
	}

	final private boolean jj_3R_114() {
		if (jj_3R_159())
			return true;
		return false;
	}

	final private boolean jj_3R_183() {
		if (jj_3R_211())
			return true;
		return false;
	}

	final private boolean jj_3R_216() {
		if (jj_scan_token(ANALYZE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(141)) {
			jj_scanpos = xsp;
			if (jj_scan_token(128)) {
				jj_scanpos = xsp;
				if (jj_scan_token(158))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_239() {
		if (jj_3R_269())
			return true;
		return false;
	}

	final private boolean jj_3R_288() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(276)) {
			jj_scanpos = xsp;
			if (jj_scan_token(275)) {
				jj_scanpos = xsp;
				if (jj_scan_token(273)) {
					jj_scanpos = xsp;
					if (jj_scan_token(277))
						return true;
				}
			}
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_105())
			return true;
		xsp = jj_scanpos;
		if (jj_3R_322())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_158() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_188()) {
			jj_scanpos = xsp;
			if (jj_3R_189())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_188() {
		if (jj_3R_216())
			return true;
		return false;
	}

	final private boolean jj_3R_287() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(265)) {
			jj_scanpos = xsp;
			if (jj_scan_token(266))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_300()) {
			jj_scanpos = xsp;
			if (jj_3R_301())
				return true;
		}
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		xsp = jj_scanpos;
		if (jj_3_81())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_268() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_287()) {
			jj_scanpos = xsp;
			if (jj_3R_288()) {
				jj_scanpos = xsp;
				if (jj_3R_289()) {
					jj_scanpos = xsp;
					if (jj_3R_290()) {
						jj_scanpos = xsp;
						if (jj_3R_291())
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_157() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_182()) {
			jj_scanpos = xsp;
			if (jj_3R_183()) {
				jj_scanpos = xsp;
				if (jj_3R_184()) {
					jj_scanpos = xsp;
					if (jj_3R_185()) {
						jj_scanpos = xsp;
						if (jj_3R_186()) {
							jj_scanpos = xsp;
							if (jj_3R_187())
								return true;
						}
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_182() {
		if (jj_3R_210())
			return true;
		return false;
	}

	final private boolean jj_3R_103() {
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3R_313() {
		if (jj_scan_token(PI))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_282() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_55() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_113()) {
			jj_scanpos = xsp;
			if (jj_3R_114()) {
				jj_scanpos = xsp;
				if (jj_3R_115()) {
					jj_scanpos = xsp;
					if (jj_3R_116())
						return true;
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_113() {
		if (jj_3R_148())
			return true;
		return false;
	}

	final private boolean jj_3R_49() {
		if (jj_scan_token(PLAN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_108())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_109())
			jj_scanpos = xsp;
		if (jj_scan_token(FOR))
			return true;
		return false;
	}

	final private boolean jj_3R_312() {
		if (jj_scan_token(CHR))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_316())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_281() {
		if (jj_scan_token(FROM))
			return true;
		if (jj_3R_304())
			return true;
		return false;
	}

	final private boolean jj_3R_311() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(243)) {
			jj_scanpos = xsp;
			if (jj_scan_token(244)) {
				jj_scanpos = xsp;
				if (jj_scan_token(309)) {
					jj_scanpos = xsp;
					if (jj_scan_token(245))
						return true;
				}
			}
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_238() {
		if (jj_3R_268())
			return true;
		return false;
	}

	final private boolean jj_3R_310() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(242)) {
			jj_scanpos = xsp;
			if (jj_scan_token(286))
				return true;
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_80()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_40() {
		if (jj_3R_74())
			return true;
		return false;
	}

	final private boolean jj_3R_299() {
		if (jj_scan_token(INTO))
			return true;
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3_42() {
		if (jj_3R_76())
			return true;
		return false;
	}

	final private boolean jj_3R_309() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(226)) {
			jj_scanpos = xsp;
			if (jj_scan_token(227)) {
				jj_scanpos = xsp;
				if (jj_scan_token(228)) {
					jj_scanpos = xsp;
					if (jj_scan_token(287)) {
						jj_scanpos = xsp;
						if (jj_scan_token(229)) {
							jj_scanpos = xsp;
							if (jj_scan_token(230)) {
								jj_scanpos = xsp;
								if (jj_scan_token(231)) {
									jj_scanpos = xsp;
									if (jj_scan_token(232)) {
										jj_scanpos = xsp;
										if (jj_scan_token(233)) {
											jj_scanpos = xsp;
											if (jj_scan_token(234)) {
												jj_scanpos = xsp;
												if (jj_scan_token(235)) {
													jj_scanpos = xsp;
													if (jj_scan_token(236)) {
														jj_scanpos = xsp;
														if (jj_scan_token(237)) {
															jj_scanpos = xsp;
															if (jj_scan_token(238)) {
																jj_scanpos = xsp;
																if (jj_scan_token(239)) {
																	jj_scanpos = xsp;
																	if (jj_scan_token(240)) {
																		jj_scanpos = xsp;
																		if (jj_scan_token(241))
																			return true;
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_303() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_309()) {
			jj_scanpos = xsp;
			if (jj_3R_310()) {
				jj_scanpos = xsp;
				if (jj_3R_311()) {
					jj_scanpos = xsp;
					if (jj_3R_312()) {
						jj_scanpos = xsp;
						if (jj_3R_313())
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3_41() {
		if (jj_3R_75())
			return true;
		return false;
	}

	final private boolean jj_3_1() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(157)) {
			jj_scanpos = xsp;
			if (jj_3R_49())
				return true;
		}
		return false;
	}

	final private boolean jj_3_79() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_308() {
		if (jj_scan_token(NVL))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_178() {
		if (jj_3R_208())
			return true;
		return false;
	}

	final private boolean jj_3R_307() {
		if (jj_scan_token(NVL2))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_302() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_307()) {
			jj_scanpos = xsp;
			if (jj_3R_308())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_153() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(327)) {
			jj_scanpos = xsp;
			if (jj_scan_token(328)) {
				jj_scanpos = xsp;
				if (jj_scan_token(67))
					return true;
			}
		}
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_295() {
		if (jj_3R_303())
			return true;
		return false;
	}

	final private boolean jj_3R_237() {
		if (jj_3R_267())
			return true;
		return false;
	}

	final private boolean jj_3R_104() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(54)) {
			jj_scanpos = xsp;
			if (jj_scan_token(31))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_99() {
		if (jj_scan_token(CASE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_79())
			jj_scanpos = xsp;
		if (jj_scan_token(WHEN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(THEN))
			return true;
		if (jj_3R_79())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_261()) {
				jj_scanpos = xsp;
				break;
			}
		}
		xsp = jj_scanpos;
		if (jj_3R_262())
			jj_scanpos = xsp;
		if (jj_scan_token(END))
			return true;
		return false;
	}

	final private boolean jj_3R_280() {
		if (jj_3R_299())
			return true;
		return false;
	}

	final private boolean jj_3R_294() {
		if (jj_3R_302())
			return true;
		return false;
	}

	final private boolean jj_3R_270() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_294()) {
			jj_scanpos = xsp;
			if (jj_3R_295())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_236() {
		if (jj_3R_266())
			return true;
		return false;
	}

	final private boolean jj_3_38() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_73())
			return true;
		return false;
	}

	final private boolean jj_3R_208() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_236()) {
			jj_scanpos = xsp;
			if (jj_3R_237()) {
				jj_scanpos = xsp;
				if (jj_3R_238()) {
					jj_scanpos = xsp;
					if (jj_3R_239()) {
						jj_scanpos = xsp;
						if (jj_3R_240())
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_202() {
		if (jj_3R_80())
			return true;
		return false;
	}

	final private boolean jj_3_78() {
		if (jj_scan_token(OPENPAREN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_104())
			jj_scanpos = xsp;
		if (jj_3R_79())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_282()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_154() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_177()) {
			jj_scanpos = xsp;
			if (jj_3R_178())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_177() {
		if (jj_3R_207())
			return true;
		return false;
	}

	final private boolean jj_3R_258() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(31)) {
			jj_scanpos = xsp;
			if (jj_scan_token(143))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_203() {
		if (jj_3R_230())
			return true;
		return false;
	}

	final private boolean jj_3R_97() {
		if (jj_3R_154())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_78())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_230() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(54)) {
			jj_scanpos = xsp;
			if (jj_3R_258())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_92() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(327)) {
			jj_scanpos = xsp;
			if (jj_scan_token(328)) {
				jj_scanpos = xsp;
				if (jj_scan_token(309)) {
					jj_scanpos = xsp;
					if (jj_scan_token(326)) {
						jj_scanpos = xsp;
						if (jj_scan_token(325))
							return true;
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_167() {
		if (jj_scan_token(SELECT))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_202())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_203())
			jj_scanpos = xsp;
		if (jj_3R_204())
			return true;
		xsp = jj_scanpos;
		if (jj_3R_280())
			jj_scanpos = xsp;
		if (jj_3R_281())
			return true;
		return false;
	}

	final private boolean jj_3R_96() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_152()) {
			jj_scanpos = xsp;
			if (jj_3R_153())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_152() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_36() {
		if (jj_3R_70())
			return true;
		return false;
	}

	final private boolean jj_3R_179() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(66)) {
			jj_scanpos = xsp;
			if (jj_scan_token(63)) {
				jj_scanpos = xsp;
				if (jj_scan_token(62))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_132() {
		if (jj_scan_token(OF))
			return true;
		return false;
	}

	final private boolean jj_3_39() {
		if (jj_3R_57())
			return true;
		if (jj_scan_token(DOT))
			return true;
		return false;
	}

	final private boolean jj_3R_135() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3R_51() {
		if (jj_3R_57())
			return true;
		if (jj_scan_token(DOT))
			return true;
		return false;
	}

	final private boolean jj_3R_330() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_68())
			return true;
		return false;
	}

	final private boolean jj_3R_73() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_39())
			jj_scanpos = xsp;
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3R_271() {
		if (jj_scan_token(ATMARK))
			return true;
		if (jj_3R_57())
			return true;
		return false;
	}

	final private boolean jj_3R_102() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_70() {
		if (jj_scan_token(FOR))
			return true;
		if (jj_scan_token(UPDATE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_132())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(61))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3_37() {
		if (jj_3R_71())
			return true;
		if (jj_3R_72())
			return true;
		return false;
	}

	final private boolean jj_3R_101() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3R_150() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_71() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_133()) {
			jj_scanpos = xsp;
			if (jj_scan_token(55)) {
				jj_scanpos = xsp;
				if (jj_scan_token(56))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_133() {
		if (jj_scan_token(UNION))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(54))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3_35() {
		if (jj_3R_69())
			return true;
		return false;
	}

	final private boolean jj_3R_134() {
		if (jj_3R_167())
			return true;
		return false;
	}

	final private boolean jj_3R_72() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_134()) {
			jj_scanpos = xsp;
			if (jj_3R_135())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_151() {
		if (jj_3R_105())
			return true;
		return false;
	}

	final private boolean jj_3R_260() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_91() {
		if (jj_3R_148())
			return true;
		return false;
	}

	final private boolean jj_3_77() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_101())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_102())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(325)) {
			jj_scanpos = xsp;
			if (jj_scan_token(65)) {
				jj_scanpos = xsp;
				if (jj_scan_token(64)) {
					jj_scanpos = xsp;
					if (jj_scan_token(329)) {
						jj_scanpos = xsp;
						if (jj_scan_token(10)) {
							jj_scanpos = xsp;
							if (jj_3R_103())
								return true;
						}
					}
				}
			}
		}
		xsp = jj_scanpos;
		if (jj_scan_token(333))
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_100() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_155()) {
			jj_scanpos = xsp;
			if (jj_3_77())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_155() {
		if (jj_3R_179())
			return true;
		return false;
	}

	final private boolean jj_3R_176() {
		if (jj_3R_72())
			return true;
		return false;
	}

	final private boolean jj_3_34() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_68())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_330())
			jj_scanpos = xsp;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_95() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_76()) {
			jj_scanpos = xsp;
			if (jj_3R_151()) {
				jj_scanpos = xsp;
				if (jj_scan_token(33))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3_76() {
		if (jj_3R_100())
			return true;
		return false;
	}

	final private boolean jj_3R_140() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_148() {
		if (jj_3R_176())
			return true;
		return false;
	}

	final private boolean jj_3R_94() {
		if (jj_3R_100())
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_150()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_82() {
		if (jj_3R_79())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_140()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3R_120() {
		if (jj_scan_token(COLUMN_TYPE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_34())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_98() {
		if (jj_scan_token(DECODE))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_79())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_260()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_70() {
		if (jj_3R_94())
			return true;
		return false;
	}

	final private boolean jj_3_75() {
		if (jj_3R_99())
			return true;
		return false;
	}

	final private boolean jj_3_69() {
		if (jj_3R_92())
			return true;
		if (jj_3R_93())
			return true;
		return false;
	}

	final private boolean jj_3_74() {
		if (jj_3R_98())
			return true;
		return false;
	}

	final private boolean jj_3_73() {
		if (jj_3R_97())
			return true;
		return false;
	}

	final private boolean jj_3_72() {
		if (jj_3R_96())
			return true;
		return false;
	}

	final private boolean jj_3_71() {
		if (jj_3R_95())
			return true;
		return false;
	}

	final private boolean jj_3R_93() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_149()) {
			jj_scanpos = xsp;
			if (jj_3_71()) {
				jj_scanpos = xsp;
				if (jj_3_72()) {
					jj_scanpos = xsp;
					if (jj_3_73()) {
						jj_scanpos = xsp;
						if (jj_3_74()) {
							jj_scanpos = xsp;
							if (jj_3_75())
								return true;
						}
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_147() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_136())
			return true;
		return false;
	}

	final private boolean jj_3R_149() {
		if (jj_3R_94())
			return true;
		return false;
	}

	final private boolean jj_3_32() {
		if (jj_3R_51())
			return true;
		return false;
	}

	final private boolean jj_3_33() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3_66() {
		if (jj_3R_82())
			return true;
		return false;
	}

	final private boolean jj_3R_165() {
		if (jj_scan_token(CONSTRAINT))
			return true;
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3R_79() {
		if (jj_3R_93())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_69()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	final private boolean jj_3_31() {
		if (jj_3R_50())
			return true;
		return false;
	}

	final private boolean jj_3R_166() {
		if (jj_scan_token(REFERENCES))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_32())
			jj_scanpos = xsp;
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3R_127() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_165())
			jj_scanpos = xsp;
		if (jj_3R_166())
			return true;
		return false;
	}

	final private boolean jj_3R_90() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_146()) {
			jj_scanpos = xsp;
			if (jj_3R_147())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_146() {
		if (jj_scan_token(NOT))
			return true;
		if (jj_3R_136())
			return true;
		return false;
	}

	final private boolean jj_3R_126() {
		if (jj_scan_token(WITH))
			return true;
		if (jj_scan_token(ROWID))
			return true;
		return false;
	}

	final private boolean jj_3R_144() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(57)) {
			jj_scanpos = xsp;
			if (jj_scan_token(58)) {
				jj_scanpos = xsp;
				if (jj_scan_token(54))
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3_28() {
		if (jj_3R_65())
			return true;
		return false;
	}

	final private boolean jj_3R_174() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3R_65() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_125()) {
			jj_scanpos = xsp;
			if (jj_3R_126()) {
				jj_scanpos = xsp;
				if (jj_3R_127())
					return true;
			}
		}
		return false;
	}

	final private boolean jj_3R_125() {
		if (jj_scan_token(SCOPE))
			return true;
		if (jj_scan_token(IS))
			return true;
		return false;
	}

	final private boolean jj_3_65() {
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3_68() {
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_143() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_68()) {
			jj_scanpos = xsp;
			if (jj_3R_174())
				return true;
		}
		return false;
	}

	final private boolean jj_3R_122() {
		if (jj_scan_token(GENERATED))
			return true;
		return false;
	}

	final private boolean jj_3R_121() {
		if (jj_scan_token(DEFAULT2))
			return true;
		return false;
	}

	final private boolean jj_3R_60() {
		if (jj_3R_67())
			return true;
		if (jj_3R_120())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_121())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_122())
			jj_scanpos = xsp;
		return false;
	}

	final private boolean jj_3R_175() {
		if (jj_scan_token(OPENPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_67() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_82())
			return true;
		return false;
	}

	final private boolean jj_3R_145() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_67()) {
			jj_scanpos = xsp;
			if (jj_3R_175())
				return true;
		}
		return false;
	}

	final private boolean jj_3_30() {
		if (jj_3R_66())
			return true;
		return false;
	}

	final private boolean jj_3_26() {
		if (jj_3R_65())
			return true;
		return false;
	}

	final private boolean jj_3_29() {
		if (jj_3R_66())
			return true;
		return false;
	}

	final private boolean jj_3_25() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_64())
			return true;
		return false;
	}

	final private boolean jj_3R_83() {
		if (jj_3R_141())
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_91())
			return true;
		return false;
	}

	final private boolean jj_3_27() {
		if (jj_3R_66())
			return true;
		return false;
	}

	final private boolean jj_3R_64() {
		if (jj_3R_60())
			return true;
		return false;
	}

	final private boolean jj_3R_259() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(LIKE))
			return true;
		return false;
	}

	final private boolean jj_3R_89() {
		if (jj_scan_token(EXISTS))
			return true;
		if (jj_scan_token(OPENPAREN))
			return true;
		return false;
	}

	final private boolean jj_3R_88() {
		if (jj_scan_token(IS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(NULL))
			return true;
		return false;
	}

	final private boolean jj_3R_87() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(BETWEEN))
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	final private boolean jj_3R_86() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(32))
			jj_scanpos = xsp;
		if (jj_scan_token(IN))
			return true;
		if (jj_3R_145())
			return true;
		return false;
	}

	final private boolean jj_3R_85() {
		if (jj_3R_142())
			return true;
		if (jj_3R_144())
			return true;
		if (jj_3R_145())
			return true;
		return false;
	}

	final private boolean jj_3R_232() {
		if (jj_3R_259())
			return true;
		return false;
	}

	final private boolean jj_3R_84() {
		if (jj_3R_142())
			return true;
		if (jj_3R_143())
			return true;
		return false;
	}

	final private boolean jj_3_61() {
		if (jj_3R_89())
			return true;
		return false;
	}

	final private boolean jj_3_60() {
		if (jj_3R_88())
			return true;
		return false;
	}

	final private boolean jj_3_24() {
		if (jj_3R_50())
			return true;
		return false;
	}

	final private boolean jj_3_59() {
		if (jj_3R_87())
			return true;
		return false;
	}

	final private boolean jj_3_58() {
		if (jj_3R_86())
			return true;
		return false;
	}

	final private boolean jj_3_57() {
		if (jj_3R_85())
			return true;
		return false;
	}

	final private boolean jj_3_56() {
		if (jj_3R_84())
			return true;
		return false;
	}

	final private boolean jj_3R_63() {
		if (jj_scan_token(TABLE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_24())
			jj_scanpos = xsp;
		if (jj_3R_67())
			return true;
		return false;
	}

	final private boolean jj_3_55() {
		if (jj_3R_83())
			return true;
		return false;
	}

	final private boolean jj_3R_246() {
		if (jj_3R_274())
			return true;
		return false;
	}

	final private boolean jj_3_64() {
		if (jj_3R_79())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_56()) {
			jj_scanpos = xsp;
			if (jj_3_57()) {
				jj_scanpos = xsp;
				if (jj_3_58()) {
					jj_scanpos = xsp;
					if (jj_3_59()) {
						jj_scanpos = xsp;
						if (jj_3_60()) {
							jj_scanpos = xsp;
							if (jj_3_61()) {
								jj_scanpos = xsp;
								if (jj_3R_232())
									return true;
							}
						}
					}
				}
			}
		}
		return false;
	}

	final private boolean jj_3R_297() {
		if (jj_scan_token(CLOSE))
			return true;
		return false;
	}

	final private boolean jj_3R_296() {
		if (jj_scan_token(SESSION))
			return true;
		return false;
	}

	final private boolean jj_3R_274() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_296()) {
			jj_scanpos = xsp;
			if (jj_3R_297())
				return true;
		}
		return false;
	}

	final private boolean jj_3_23() {
		if (jj_3R_63())
			return true;
		return false;
	}

	final private boolean jj_3_63() {
		if (jj_scan_token(OPENPAREN))
			return true;
		if (jj_3R_82())
			return true;
		if (jj_scan_token(CLOSEPAREN))
			return true;
		return false;
	}

	final private boolean jj_3_62() {
		if (jj_3R_90())
			return true;
		return false;
	}

	final private boolean jj_3R_327() {
		if (jj_scan_token(NULLS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(71)) {
			jj_scanpos = xsp;
			if (jj_scan_token(72))
				return true;
		}
		return false;
	}

	final private boolean jj_3R_210() {
		if (jj_scan_token(ALTER))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_23()) {
			jj_scanpos = xsp;
			if (jj_3R_246())
				return true;
		}
		return false;
	}

	public WolfSQLParserTokenManager token_source;
	JavaCharStream jj_input_stream;
	public Token token, jj_nt;
	private int jj_ntk;
	private Token jj_scanpos, jj_lastpos;
	private int jj_la;
	public boolean lookingAhead = false;
	private boolean jj_semLA;
	private int jj_gen;
	final private int[] jj_la1 = new int[249];
	static private int[] jj_la1_0;
	static private int[] jj_la1_1;
	static private int[] jj_la1_2;
	static private int[] jj_la1_3;
	static private int[] jj_la1_4;
	static private int[] jj_la1_5;
	static private int[] jj_la1_6;
	static private int[] jj_la1_7;
	static private int[] jj_la1_8;
	static private int[] jj_la1_9;
	static private int[] jj_la1_10;
	static {
		jj_la1_0();
		jj_la1_1();
		jj_la1_2();
		jj_la1_3();
		jj_la1_4();
		jj_la1_5();
		jj_la1_6();
		jj_la1_7();
		jj_la1_8();
		jj_la1_9();
		jj_la1_10();
	}

	private static void jj_la1_0() {
		jj_la1_0 = new int[] { 0x0, 0x7c000, 0x0, 0x7c000, 0x80000, 0x100000,
				0x0, 0x3c000, 0x0, 0x40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c000, 0x3c000, 0x0, 0x0,
				0x3c000, 0x3c000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000,
				0x8000000, 0x8000000, 0x0, 0x40000, 0x0, 0x0, 0x0, 0x0,
				0x20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x100, 0x100, 0x100, 0x0, 0x0, 0x0, 0x300, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0,
				0x0, 0x0, 0x0, 0x80000, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0,
				0x80000000, 0x80000000, 0x800, 0x80000000, 0x100000, 0x0, 0x0,
				0x0, 0x0, 0x8000000, 0x100, 0x8000100, 0x0, 0x0, 0x0, 0x0,
				0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000,
				0x8000000, 0x0, 0x800, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x400000, 0x800000, 0x0, 0x0, 0x204000, 0x0, 0x204000, 0x4000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x20000000, 0x0, 0x0, 0x0, 0x0, 0x400, 0x40000000, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x400, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x80000000, 0x80000000, 0x0, 0x4000000, 0x4000000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000, 0x0,
				0x0, 0x0, 0x0, 0x1000000, 0x0, 0x0, 0x100, 0x0, 0x100, 0x100,
				0x100, 0x0, 0x80000000, 0x80000000, 0x0, 0x80000000,
				0x80000000, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_1() {
		jj_la1_1 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000,
				0x4000, 0x8000000, 0x0, 0x10000000, 0x0, 0x2000, 0x2000,
				0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x1000, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x801, 0x1, 0x3, 0x0, 0x1, 0x801, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200,
				0x0, 0x0, 0x400000, 0x1a00000, 0x10000000, 0x20000000, 0x0,
				0x400000, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa00, 0x4d0, 0xc, 0x4dc,
				0x4c0, 0x20, 0x4d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc000, 0xc000,
				0x1001, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0,
				0x6400000, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0xc0000000,
				0xc0000000, 0x0, 0x0, 0x0, 0x400000, 0x400000, 0x0, 0x0, 0x0,
				0x0, 0x20000, 0x80000, 0x0, 0x0, 0x0, 0x0, 0x800, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x400000, 0x400000, 0x0, 0x400000, 0x400000, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_2() {
		jj_la1_2 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000,
				0x0, 0x0, 0x80000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000, 0x3000,
				0x4000, 0x0, 0x30, 0x30, 0x180, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x3, 0x0, 0x4, 0x4, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, };
	}

	private static void jj_la1_3() {
		jj_la1_3 = new int[] { 0x0, 0xa080000, 0x0, 0xa080000, 0x0, 0x0, 0x0,
				0x0, 0xa080000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000, 0x0,
				0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0xa080000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000, 0x25000000, 0x4000000,
				0x0, 0x0, 0x21000000, 0x300000, 0x0, 0x1000000, 0x0, 0x0,
				0x300000, 0x10000000, 0x10000000, 0x10000000, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x10000000, 0x40000000, 0x40000000, 0x0, 0x0, 0x0,
				0x0, 0x400000, 0x0, 0x0, 0x0, 0x400000, 0x400000, 0x0, 0x0,
				0x0, 0x10000000, 0x0, 0x4000000, 0x4000000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_4() {
		jj_la1_4 = new int[] { 0x10000, 0x20000000, 0x0, 0x20000000, 0x0, 0x0,
				0x20020000, 0x0, 0x0, 0x20000000, 0x40002001, 0x0, 0x0,
				0x80000000, 0x2000, 0x0, 0x4002000, 0x4002001, 0x0, 0x0,
				0x1000000, 0x1000000, 0x10000000, 0x200, 0x10000200, 0x0,
				0x10000000, 0x200, 0x10000200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x40000c00, 0x0, 0x0, 0xc00, 0xc00, 0xc00, 0x0, 0xc00,
				0x0, 0x1, 0x0, 0x40000c00, 0x0, 0x0, 0xc00, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x8280, 0x8080, 0x0, 0x8080, 0x0, 0x8080, 0x2000000, 0x0,
				0x8280, 0x0, 0x0, 0x2000000, 0xc00, 0x800, 0xc00, 0x400, 0x0,
				0x4000, 0x0, 0x0, 0x0, 0x13a, 0x13a, 0x0, 0x0, 0x0, 0x0,
				0x340040, 0x340000, 0x300000, 0x0, 0x40, 0x40, 0x0, 0x0, 0x4,
				0x0, 0x0, 0x0, 0x800200, 0x1000000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x8000, 0x8000, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_5() {
		jj_la1_5 = new int[] { 0x0, 0x4c0, 0x0, 0x4c0, 0x0, 0x0, 0x0, 0x0,
				0x4c0, 0x0, 0x0, 0x8, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
				0x20, 0x20, 0x300, 0x0, 0x300, 0x0, 0x300, 0x0, 0x300, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x7d000000, 0x0, 0x0, 0x7d000000,
				0x7d000000, 0x7d000000, 0x0, 0x7f000000, 0x2000000, 0x0, 0x0,
				0x7d000000, 0x2000000, 0x0, 0x7d000000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x7d000000, 0x0, 0x7d000000, 0x1d000000, 0x60000000, 0x0,
				0x0, 0x0, 0x0, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf80000, 0xc00000,
				0xc00000, 0x0, 0x0, 0xc00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x380000, 0x10000, 0x20000, 0x808, 0x0, 0x808, 0x42000, 0x5000,
				0x42000, 0x5000, 0x5000, 0x5000, 0x300000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_6() {
		jj_la1_6 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc2000, 0xc2000, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100000, 0x0,
				0x0, 0x0, 0x40, 0x0, 0x680, 0x1800, 0x1800, 0x600, 0x600,
				0x600, 0x600, 0x600, 0x600, 0x100, 0x0, 0x680, 0x600, 0x600,
				0x0, 0x0, 0x0, 0x0, 0x800000, 0x1000000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x18, 0x6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000, 0x8000000,
				0x10000000, 0x4000000, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x20000000, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_7() {
		jj_la1_7 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60000000,
				0x60000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x2000, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x2000, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x77ffffc, 0x77ffffc, 0x17ffffc, 0x0, 0x0, 0x0,
				0x3fffc, 0x40000, 0x380000, 0x0, 0x17ffffc, 0x0, 0x2000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x6000000, 0x6000000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, };
	}

	private static void jj_la1_8() {
		jj_la1_8 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x10, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800, 0x800, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc7feffe0,
				0xc7fe07e0, 0xc0000000, 0x0, 0x0, 0x0, 0x80000000, 0x40000000,
				0x0, 0x0, 0xc0000000, 0x600, 0x800, 0x3a0000, 0x0, 0xc00000,
				0x3000000, 0x7fa0600, 0x401c0, 0x0, 0x401e0, 0x0, 0x0, 0x0,
				0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x800, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, };
	}

	private static void jj_la1_9() {
		jj_la1_9 = new int[] { 0x0, 0x0, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x400000,
				0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x100000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0,
				0x400000, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x400000, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x400000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x400000, 0x400000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x400000, 0x0, 0x0, 0x400000, 0x400000, 0x0, 0x0, 0x0,
				0x400000, 0x0, 0x400000, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0,
				0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000,
				0x400000, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x200000, 0x0, 0x0, 0x400000, 0x201380, 0x201380, 0x200000,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x0, 0x200000, 0x0, 0x0,
				0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0,
				0x1380, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x1000000, 0x78000000, 0xf8000000, 0x80000000, };
	}

	private static void jj_la1_10() {
		jj_la1_10 = new int[] { 0x0, 0x8, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0,
				0x0, 0x0, 0x400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x108000, 0x0, 0x0, 0x0, 0x108000, 0x0, 0x0, 0x0, 0x0,
				0x198000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0,
				0x198000, 0x198000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x1000, 0x108008, 0x0, 0x108000, 0x0,
				0x0, 0x0, 0x0, 0x8, 0x108008, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x8, 0x0, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80200, 0x0, 0x0,
				0x8, 0x8, 0x0, 0x8, 0x0, 0x0, 0x0, 0x190000, 0x8220, 0x2000,
				0x0, 0x0, 0x180, 0x188, 0x1e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x198000, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
				0x0, 0x0, 0x0, 0x0, 0x108000, 0x4000, 0x8000, 0x4000, 0x190000,
				0x0, 0x0, 0x7, 0x7, };
	}

	final private JJCalls[] jj_2_rtns = new JJCalls[87];
	private boolean jj_rescan = false;
	private int jj_gc = 0;

	public WolfSQLParser(java.io.InputStream stream) {
		this(stream, null);
	}

	public WolfSQLParser(java.io.InputStream stream, String encoding) {
		try {
			jj_input_stream = new JavaCharStream(stream, encoding, 1, 1);
		} catch (java.io.UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		token_source = new WolfSQLParserTokenManager(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public void ReInit(java.io.InputStream stream) {
		ReInit(stream, null);
	}

	public void ReInit(java.io.InputStream stream, String encoding) {
		try {
			jj_input_stream.ReInit(stream, encoding, 1, 1);
		} catch (java.io.UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		token_source.ReInit(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jjtree.reset();
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public WolfSQLParser(java.io.Reader stream) {
		jj_input_stream = new JavaCharStream(stream, 1, 1);
		token_source = new WolfSQLParserTokenManager(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public void ReInit(java.io.Reader stream) {
		jj_input_stream.ReInit(stream, 1, 1);
		token_source.ReInit(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jjtree.reset();
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public WolfSQLParser(WolfSQLParserTokenManager tm) {
		token_source = tm;
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public void ReInit(WolfSQLParserTokenManager tm) {
		token_source = tm;
		token = new Token();
		jj_ntk = -1;
		jjtree.reset();
		jj_gen = 0;
		for (int i = 0; i < 249; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	final private Token jj_consume_token(int kind) throws ParseException {
		Token oldToken;
		if ((oldToken = token).next != null)
			token = token.next;
		else
			token = token.next = token_source.getNextToken();
		jj_ntk = -1;
		if (token.kind == kind) {
			jj_gen++;
			if (++jj_gc > 100) {
				jj_gc = 0;
				for (int i = 0; i < jj_2_rtns.length; i++) {
					JJCalls c = jj_2_rtns[i];
					while (c != null) {
						if (c.gen < jj_gen)
							c.first = null;
						c = c.next;
					}
				}
			}
			trace_token(token, "");
			return token;
		}
		token = oldToken;
		jj_kind = kind;
		throw generateParseException();
	}

	static private final class LookaheadSuccess extends java.lang.Error {
	}

	final private LookaheadSuccess jj_ls = new LookaheadSuccess();

	final private boolean jj_scan_token(int kind) {
		if (jj_scanpos == jj_lastpos) {
			jj_la--;
			if (jj_scanpos.next == null) {
				jj_lastpos = jj_scanpos = jj_scanpos.next = token_source
						.getNextToken();
			} else {
				jj_lastpos = jj_scanpos = jj_scanpos.next;
			}
		} else {
			jj_scanpos = jj_scanpos.next;
		}
		if (jj_rescan) {
			int i = 0;
			Token tok = token;
			while (tok != null && tok != jj_scanpos) {
				i++;
				tok = tok.next;
			}
			if (tok != null)
				jj_add_error_token(kind, i);
		}
		if (jj_scanpos.kind != kind)
			return true;
		if (jj_la == 0 && jj_scanpos == jj_lastpos)
			throw jj_ls;
		return false;
	}

	final public Token getNextToken() {
		if (token.next != null)
			token = token.next;
		else
			token = token.next = token_source.getNextToken();
		jj_ntk = -1;
		jj_gen++;
		trace_token(token, " (in getNextToken)");
		return token;
	}

	final public Token getToken(int index) {
		Token t = lookingAhead ? jj_scanpos : token;
		for (int i = 0; i < index; i++) {
			if (t.next != null)
				t = t.next;
			else
				t = t.next = token_source.getNextToken();
		}
		return t;
	}

	final private int jj_ntk() {
		if ((jj_nt = token.next) == null)
			return (jj_ntk = (token.next = token_source.getNextToken()).kind);
		else
			return (jj_ntk = jj_nt.kind);
	}

	private java.util.Vector jj_expentries = new java.util.Vector();
	private int[] jj_expentry;
	private int jj_kind = -1;
	private int[] jj_lasttokens = new int[100];
	private int jj_endpos;

	private void jj_add_error_token(int kind, int pos) {
		if (pos >= 100)
			return;
		if (pos == jj_endpos + 1) {
			jj_lasttokens[jj_endpos++] = kind;
		} else if (jj_endpos != 0) {
			jj_expentry = new int[jj_endpos];
			for (int i = 0; i < jj_endpos; i++) {
				jj_expentry[i] = jj_lasttokens[i];
			}
			boolean exists = false;
			for (java.util.Enumeration e = jj_expentries.elements(); e
					.hasMoreElements();) {
				int[] oldentry = (int[]) (e.nextElement());
				if (oldentry.length == jj_expentry.length) {
					exists = true;
					for (int i = 0; i < jj_expentry.length; i++) {
						if (oldentry[i] != jj_expentry[i]) {
							exists = false;
							break;
						}
					}
					if (exists)
						break;
				}
			}
			if (!exists)
				jj_expentries.addElement(jj_expentry);
			if (pos != 0)
				jj_lasttokens[(jj_endpos = pos) - 1] = kind;
		}
	}

	public ParseException generateParseException() {
		jj_expentries.removeAllElements();
		boolean[] la1tokens = new boolean[342];
		for (int i = 0; i < 342; i++) {
			la1tokens[i] = false;
		}
		if (jj_kind >= 0) {
			la1tokens[jj_kind] = true;
			jj_kind = -1;
		}
		for (int i = 0; i < 249; i++) {
			if (jj_la1[i] == jj_gen) {
				for (int j = 0; j < 32; j++) {
					if ((jj_la1_0[i] & (1 << j)) != 0) {
						la1tokens[j] = true;
					}
					if ((jj_la1_1[i] & (1 << j)) != 0) {
						la1tokens[32 + j] = true;
					}
					if ((jj_la1_2[i] & (1 << j)) != 0) {
						la1tokens[64 + j] = true;
					}
					if ((jj_la1_3[i] & (1 << j)) != 0) {
						la1tokens[96 + j] = true;
					}
					if ((jj_la1_4[i] & (1 << j)) != 0) {
						la1tokens[128 + j] = true;
					}
					if ((jj_la1_5[i] & (1 << j)) != 0) {
						la1tokens[160 + j] = true;
					}
					if ((jj_la1_6[i] & (1 << j)) != 0) {
						la1tokens[192 + j] = true;
					}
					if ((jj_la1_7[i] & (1 << j)) != 0) {
						la1tokens[224 + j] = true;
					}
					if ((jj_la1_8[i] & (1 << j)) != 0) {
						la1tokens[256 + j] = true;
					}
					if ((jj_la1_9[i] & (1 << j)) != 0) {
						la1tokens[288 + j] = true;
					}
					if ((jj_la1_10[i] & (1 << j)) != 0) {
						la1tokens[320 + j] = true;
					}
				}
			}
		}
		for (int i = 0; i < 342; i++) {
			if (la1tokens[i]) {
				jj_expentry = new int[1];
				jj_expentry[0] = i;
				jj_expentries.addElement(jj_expentry);
			}
		}
		jj_endpos = 0;
		jj_rescan_token();
		jj_add_error_token(0, 0);
		int[][] exptokseq = new int[jj_expentries.size()][];
		for (int i = 0; i < jj_expentries.size(); i++) {
			exptokseq[i] = (int[]) jj_expentries.elementAt(i);
		}
		return new ParseException(token, exptokseq, tokenImage);
	}

	private int trace_indent = 0;
	private boolean trace_enabled = true;

	final public void enable_tracing() {
		trace_enabled = true;
	}

	final public void disable_tracing() {
		trace_enabled = false;
	}

	final private void trace_call(String s) {
		if (trace_enabled) {
			for (int i = 0; i < trace_indent; i++) {
				System.out.print(" ");
			}
			System.out.println("Call:   " + s);
		}
		trace_indent = trace_indent + 2;
	}

	final private void trace_return(String s) {
		trace_indent = trace_indent - 2;
		if (trace_enabled) {
			for (int i = 0; i < trace_indent; i++) {
				System.out.print(" ");
			}
			System.out.println("Return: " + s);
		}
	}

	final private void trace_token(Token t, String where) {
		if (trace_enabled) {
			for (int i = 0; i < trace_indent; i++) {
				System.out.print(" ");
			}
			System.out.print("Consumed token: <" + tokenImage[t.kind]);
			if (t.kind != 0
					&& !tokenImage[t.kind].equals("\"" + t.image + "\"")) {
				System.out.print(": \"" + t.image + "\"");
			}
			System.out.println(" at line " + t.beginLine + " column "
					+ t.beginColumn + ">" + where);
		}
	}

	final private void trace_scan(Token t1, int t2) {
		if (trace_enabled) {
			for (int i = 0; i < trace_indent; i++) {
				System.out.print(" ");
			}
			System.out.print("Visited token: <" + tokenImage[t1.kind]);
			if (t1.kind != 0
					&& !tokenImage[t1.kind].equals("\"" + t1.image + "\"")) {
				System.out.print(": \"" + t1.image + "\"");
			}
			System.out.println(" at line " + t1.beginLine + " column "
					+ t1.beginColumn + ">; Expected token: <" + tokenImage[t2]
					+ ">");
		}
	}

	final private void jj_rescan_token() {
		jj_rescan = true;
		for (int i = 0; i < 87; i++) {
			try {
				JJCalls p = jj_2_rtns[i];
				do {
					if (p.gen > jj_gen) {
						jj_la = p.arg;
						jj_lastpos = jj_scanpos = p.first;
						switch (i) {
						case 0:
							jj_3_1();
							break;
						case 1:
							jj_3_2();
							break;
						case 2:
							jj_3_3();
							break;
						case 3:
							jj_3_4();
							break;
						case 4:
							jj_3_5();
							break;
						case 5:
							jj_3_6();
							break;
						case 6:
							jj_3_7();
							break;
						case 7:
							jj_3_8();
							break;
						case 8:
							jj_3_9();
							break;
						case 9:
							jj_3_10();
							break;
						case 10:
							jj_3_11();
							break;
						case 11:
							jj_3_12();
							break;
						case 12:
							jj_3_13();
							break;
						case 13:
							jj_3_14();
							break;
						case 14:
							jj_3_15();
							break;
						case 15:
							jj_3_16();
							break;
						case 16:
							jj_3_17();
							break;
						case 17:
							jj_3_18();
							break;
						case 18:
							jj_3_19();
							break;
						case 19:
							jj_3_20();
							break;
						case 20:
							jj_3_21();
							break;
						case 21:
							jj_3_22();
							break;
						case 22:
							jj_3_23();
							break;
						case 23:
							jj_3_24();
							break;
						case 24:
							jj_3_25();
							break;
						case 25:
							jj_3_26();
							break;
						case 26:
							jj_3_27();
							break;
						case 27:
							jj_3_28();
							break;
						case 28:
							jj_3_29();
							break;
						case 29:
							jj_3_30();
							break;
						case 30:
							jj_3_31();
							break;
						case 31:
							jj_3_32();
							break;
						case 32:
							jj_3_33();
							break;
						case 33:
							jj_3_34();
							break;
						case 34:
							jj_3_35();
							break;
						case 35:
							jj_3_36();
							break;
						case 36:
							jj_3_37();
							break;
						case 37:
							jj_3_38();
							break;
						case 38:
							jj_3_39();
							break;
						case 39:
							jj_3_40();
							break;
						case 40:
							jj_3_41();
							break;
						case 41:
							jj_3_42();
							break;
						case 42:
							jj_3_43();
							break;
						case 43:
							jj_3_44();
							break;
						case 44:
							jj_3_45();
							break;
						case 45:
							jj_3_46();
							break;
						case 46:
							jj_3_47();
							break;
						case 47:
							jj_3_48();
							break;
						case 48:
							jj_3_49();
							break;
						case 49:
							jj_3_50();
							break;
						case 50:
							jj_3_51();
							break;
						case 51:
							jj_3_52();
							break;
						case 52:
							jj_3_53();
							break;
						case 53:
							jj_3_54();
							break;
						case 54:
							jj_3_55();
							break;
						case 55:
							jj_3_56();
							break;
						case 56:
							jj_3_57();
							break;
						case 57:
							jj_3_58();
							break;
						case 58:
							jj_3_59();
							break;
						case 59:
							jj_3_60();
							break;
						case 60:
							jj_3_61();
							break;
						case 61:
							jj_3_62();
							break;
						case 62:
							jj_3_63();
							break;
						case 63:
							jj_3_64();
							break;
						case 64:
							jj_3_65();
							break;
						case 65:
							jj_3_66();
							break;
						case 66:
							jj_3_67();
							break;
						case 67:
							jj_3_68();
							break;
						case 68:
							jj_3_69();
							break;
						case 69:
							jj_3_70();
							break;
						case 70:
							jj_3_71();
							break;
						case 71:
							jj_3_72();
							break;
						case 72:
							jj_3_73();
							break;
						case 73:
							jj_3_74();
							break;
						case 74:
							jj_3_75();
							break;
						case 75:
							jj_3_76();
							break;
						case 76:
							jj_3_77();
							break;
						case 77:
							jj_3_78();
							break;
						case 78:
							jj_3_79();
							break;
						case 79:
							jj_3_80();
							break;
						case 80:
							jj_3_81();
							break;
						case 81:
							jj_3_82();
							break;
						case 82:
							jj_3_83();
							break;
						case 83:
							jj_3_84();
							break;
						case 84:
							jj_3_85();
							break;
						case 85:
							jj_3_86();
							break;
						case 86:
							jj_3_87();
							break;
						}
					}
					p = p.next;
				} while (p != null);
			} catch (LookaheadSuccess ls) {
			}
		}
		jj_rescan = false;
	}

	final private void jj_save(int index, int xla) {
		JJCalls p = jj_2_rtns[index];
		while (p.gen > jj_gen) {
			if (p.next == null) {
				p = p.next = new JJCalls();
				break;
			}
			p = p.next;
		}
		p.gen = jj_gen + xla - jj_la;
		p.first = token;
		p.arg = xla;
	}

	static final class JJCalls {
		int gen;
		Token first;
		int arg;
		JJCalls next;
	}

}
