Package net.sf.jsqlparser.parser

Source Code of net.sf.jsqlparser.parser.CCJSqlParser$LookaheadSuccess

/* Generated By:JavaCC: Do not edit this line. CCJSqlParser.java */
/* ================================================================
* JSQLParser : java based sql parser
* ================================================================
*
* Project Info:  http://jsqlparser.sourceforge.net
* Project Lead:  Leonardo Francalanci (leoonardoo@yahoo.it);
*
* (C) Copyright 2004, by Leonardo Francalanci
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*/


package net.sf.jsqlparser.parser;

import java.util.ArrayList;
import java.util.List;

import net.sf.jsqlparser.expression.BinaryExpression;
import net.sf.jsqlparser.expression.DoubleValue;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.Function;
import net.sf.jsqlparser.expression.InverseExpression;
import net.sf.jsqlparser.expression.JdbcParameter;
import net.sf.jsqlparser.expression.LongValue;
import net.sf.jsqlparser.expression.DateValue;
import net.sf.jsqlparser.expression.TimeValue;
import net.sf.jsqlparser.expression.TimestampValue;
import net.sf.jsqlparser.expression.NullValue;
import net.sf.jsqlparser.expression.Parenthesis;
import net.sf.jsqlparser.expression.StringValue;
import net.sf.jsqlparser.expression.CaseExpression;
import net.sf.jsqlparser.expression.WhenClause;
import net.sf.jsqlparser.expression.AnyComparisonExpression;
import net.sf.jsqlparser.expression.AllComparisonExpression;
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
import net.sf.jsqlparser.expression.operators.relational.Between;
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
import net.sf.jsqlparser.expression.operators.relational.InExpression;
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
import net.sf.jsqlparser.expression.operators.relational.ItemsList;
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
import net.sf.jsqlparser.expression.operators.relational.Matches;
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import net.sf.jsqlparser.statement.create.table.Index;
import net.sf.jsqlparser.statement.delete.Delete;
import net.sf.jsqlparser.statement.drop.Drop;
import net.sf.jsqlparser.statement.insert.Insert;
import net.sf.jsqlparser.statement.replace.Replace;
import net.sf.jsqlparser.statement.select.AllColumns;
import net.sf.jsqlparser.statement.select.AllTableColumns;
import net.sf.jsqlparser.statement.select.Distinct;
import net.sf.jsqlparser.statement.select.FromItem;
import net.sf.jsqlparser.statement.select.Join;
import net.sf.jsqlparser.statement.select.SubJoin;
import net.sf.jsqlparser.statement.select.Limit;
import net.sf.jsqlparser.statement.select.OrderByElement;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectBody;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
import net.sf.jsqlparser.statement.select.SubSelect;
import net.sf.jsqlparser.statement.select.Top;
import net.sf.jsqlparser.statement.select.Union;
import net.sf.jsqlparser.statement.select.WithItem;
import net.sf.jsqlparser.statement.truncate.Truncate;
import net.sf.jsqlparser.statement.update.Update;

/**
* The parser generated by JavaCC
*/
public class CCJSqlParser implements CCJSqlParserConstants {

  final public Statement Statement() throws ParseException {
  Statement stm;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WITH:
    case K_SELECT:
    case 79:
      stm = Select();
      break;
    case K_UPDATE:
      stm = Update();
      break;
    case K_INSERT:
      stm = Insert();
      break;
    case K_DELETE:
      stm = Delete();
      break;
    case K_REPLACE:
      stm = Replace();
      break;
    case K_CREATE:
      stm = CreateTable();
      break;
    case K_DROP:
      stm = Drop();
      break;
    case K_TRUNCATE:
      stm = Truncate();
      break;
    default:
      jj_la1[0] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
      jj_consume_token(76);
      break;
    default:
      jj_la1[1] = jj_gen;
      ;
    }
    jj_consume_token(0);
      {if (true) return stm;}
    throw new Error("Missing return statement in function");
  }

  final public Update Update() throws ParseException {
        Update update = new Update();
        Table table = null;
        Expression where = null;
        Column tableColumn = null;
        List expList = new ArrayList();
        List columns = new ArrayList();
        Expression value = null;
    jj_consume_token(K_UPDATE);
    table = TableWithAlias();
    jj_consume_token(K_SET);
    tableColumn = Column();
    jj_consume_token(77);
    value = SimpleExpression();
                                                                columns.add(tableColumn); expList.add(value);
    label_1:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[2] = jj_gen;
        break label_1;
      }
      jj_consume_token(78);
      tableColumn = Column();
      jj_consume_token(77);
      value = SimpleExpression();
                                                                            columns.add(tableColumn); expList.add(value);
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WHERE:
      where = WhereClause();
                           update.setWhere(where);
      break;
    default:
      jj_la1[3] = jj_gen;
      ;
    }
                update.setColumns(columns);
                update.setExpressions(expList);
                update.setTable(table);
                {if (true) return update;}
    throw new Error("Missing return statement in function");
  }

  final public Replace Replace() throws ParseException {
        Replace replace = new Replace();
        Table table = null;
        Column tableColumn = null;
        Expression value = null;

        List columns = new ArrayList();
        List expList = new ArrayList();
        ItemsList itemsList = null;
        Expression exp = null;
    jj_consume_token(K_REPLACE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_INTO:
      jj_consume_token(K_INTO);
      break;
    default:
      jj_la1[4] = jj_gen;
      ;
    }
    table = Table();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_SET:
      jj_consume_token(K_SET);
      tableColumn = Column();
      jj_consume_token(77);
      value = SimpleExpression();
                                                                                columns.add(tableColumn); expList.add(value);
      label_2:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 78:
          ;
          break;
        default:
          jj_la1[5] = jj_gen;
          break label_2;
        }
        jj_consume_token(78);
        tableColumn = Column();
        jj_consume_token(77);
        value = SimpleExpression();
                                                                                   columns.add(tableColumn); expList.add(value);
      }
                                replace.setExpressions(expList);
      break;
    case K_SELECT:
    case K_VALUES:
    case 79:
      if (jj_2_1(2)) {
        jj_consume_token(79);
        tableColumn = Column();
                                                              columns.add(tableColumn);
        label_3:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 78:
            ;
            break;
          default:
            jj_la1[6] = jj_gen;
            break label_3;
          }
          jj_consume_token(78);
          tableColumn = Column();
                                                                                                                      columns.add(tableColumn);
        }
        jj_consume_token(80);
      } else {
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_VALUES:
        jj_consume_token(K_VALUES);
        jj_consume_token(79);
        exp = PrimaryExpression();
                                                                          expList.add(exp);
        label_4:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 78:
            ;
            break;
          default:
            jj_la1[7] = jj_gen;
            break label_4;
          }
          jj_consume_token(78);
          exp = PrimaryExpression();
                                                                                expList.add(exp);
        }
        jj_consume_token(80);
                                                                                                             itemsList = new ExpressionList(expList);
        break;
      case K_SELECT:
      case 79:
                                          replace.setUseValues(false);
        itemsList = SubSelect();
        break;
      default:
        jj_la1[8] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                replace.setItemsList(itemsList);
      break;
    default:
      jj_la1[9] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
                if (columns.size() > 0)
                        replace.setColumns(columns);
                replace.setTable(table);
                {if (true) return replace;}
    throw new Error("Missing return statement in function");
  }

  final public Insert Insert() throws ParseException {
        Insert insert = new Insert();
        Table table = null;
        Column tableColumn = null;
        List columns = new ArrayList();
        List primaryExpList = new ArrayList();
        ItemsList itemsList = null;
        Expression exp = null;
    jj_consume_token(K_INSERT);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_INTO:
      jj_consume_token(K_INTO);
      break;
    default:
      jj_la1[10] = jj_gen;
      ;
    }
    table = Table();
    if (jj_2_2(2)) {
      jj_consume_token(79);
      tableColumn = Column();
                                              columns.add(tableColumn);
      label_5:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 78:
          ;
          break;
        default:
          jj_la1[11] = jj_gen;
          break label_5;
        }
        jj_consume_token(78);
        tableColumn = Column();
                                                                                                      columns.add(tableColumn);
      }
      jj_consume_token(80);
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_VALUES:
      jj_consume_token(K_VALUES);
      jj_consume_token(79);
      exp = SimpleExpression();
                                                         primaryExpList.add(exp);
      label_6:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 78:
          ;
          break;
        default:
          jj_la1[12] = jj_gen;
          break label_6;
        }
        jj_consume_token(78);
        exp = SimpleExpression();
                                                               primaryExpList.add(exp);
      }
      jj_consume_token(80);
                                                                                                   itemsList = new ExpressionList(primaryExpList);
      break;
    case K_SELECT:
    case 79:
      if (jj_2_3(2)) {
        jj_consume_token(79);
      } else {
        ;
      }
                          insert.setUseValues(false);
      itemsList = SubSelect();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 80:
        jj_consume_token(80);
        break;
      default:
        jj_la1[13] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[14] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
                insert.setItemsList(itemsList);
            insert.setTable(table);
            if (columns.size() > 0)
                insert.setColumns(columns);
        {if (true) return insert;}
    throw new Error("Missing return statement in function");
  }

  final public Delete Delete() throws ParseException {
        Delete delete = new Delete();
        Table table = null;
        Expression where = null;
    jj_consume_token(K_DELETE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_FROM:
      jj_consume_token(K_FROM);
      break;
    default:
      jj_la1[15] = jj_gen;
      ;
    }
    table = TableWithAlias();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WHERE:
      where = WhereClause();
                           delete.setWhere(where);
      break;
    default:
      jj_la1[16] = jj_gen;
      ;
    }
        delete.setTable(table);
        {if (true) return delete;}
    throw new Error("Missing return statement in function");
  }

  final public Column Column() throws ParseException {
        String name1 = null;
        String name2 = null;
        String name3 = null;
    // [schema.][tabella.]colonna
        name1 = RelObjectName();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 81:
      jj_consume_token(81);
      name2 = RelObjectName();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 81:
        jj_consume_token(81);
        name3 = RelObjectName();
        break;
      default:
        jj_la1[17] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[18] = jj_gen;
      ;
    }
        String colName = null;
        Table table = null;
        if (name3 != null) {
                table = new Table(name1, name2);
                colName = name3;
        } else if (name2 != null) {
                table = new Table(null, name1);
                colName = name2;
        } else {
                table = new Table(null, null);
                colName = name1;
        }

        {if (true) return new Column(table, colName);}
    throw new Error("Missing return statement in function");
  }

  final public String RelObjectName() throws ParseException {
        Token tk = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case S_IDENTIFIER:
      tk = jj_consume_token(S_IDENTIFIER);
      break;
    case S_QUOTED_IDENTIFIER:
      tk = jj_consume_token(S_QUOTED_IDENTIFIER);
      break;
    default:
      jj_la1[19] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return tk.image;}
    throw new Error("Missing return statement in function");
  }

  final public Table TableWithAlias() throws ParseException {
        Table table = null;
        String alias = null;
    table = Table();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_AS:
    case S_IDENTIFIER:
    case S_QUOTED_IDENTIFIER:
      alias = Alias();
                                       table.setAlias(alias);
      break;
    default:
      jj_la1[20] = jj_gen;
      ;
    }
          {if (true) return table;}
    throw new Error("Missing return statement in function");
  }

  final public Table Table() throws ParseException {
        Table table = null;
        String name1 = null;
        String name2 = null;
    if (jj_2_4(3)) {
      name1 = RelObjectName();
      jj_consume_token(81);
      name2 = RelObjectName();
                                                                   table = new Table(name1, name2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_IDENTIFIER:
      case S_QUOTED_IDENTIFIER:
        name1 = RelObjectName();
                                        table = new Table(null, name1);
        break;
      default:
        jj_la1[21] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
                {if (true) return table;}
    throw new Error("Missing return statement in function");
  }

  final public Select Select() throws ParseException {
        Select select = new Select();
        SelectBody selectBody = null;
        List with = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WITH:
      with = WithList();
                            select.setWithItemsList(with);
      break;
    default:
      jj_la1[22] = jj_gen;
      ;
    }
    selectBody = SelectBody();
                select.setSelectBody(selectBody);
                {if (true) return select;}
    throw new Error("Missing return statement in function");
  }

  final public SelectBody SelectBody() throws ParseException {
  SelectBody selectBody = null;
    if (jj_2_5(2147483647)) {
      selectBody = Union();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_SELECT:
        selectBody = PlainSelect();
        break;
      default:
        jj_la1[23] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
          {if (true) return selectBody;}
    throw new Error("Missing return statement in function");
  }

  final public PlainSelect PlainSelect() throws ParseException {
        PlainSelect plainSelect = new PlainSelect();
        List selectItems = null;
        FromItem fromItem = null;
        List joins = null;
        List distinctOn = null;
        Expression where = null;
        List orderByElements;
        List groupByColumnReferences = null;
        Expression having = null;
        Limit limit = null;
        Top top = null;
    jj_consume_token(K_SELECT);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ALL:
    case K_DISTINCT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ALL:
        jj_consume_token(K_ALL);
        break;
      case K_DISTINCT:
        jj_consume_token(K_DISTINCT);
                                       Distinct distinct = new Distinct(); plainSelect.setDistinct(distinct);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_ON:
          jj_consume_token(K_ON);
          jj_consume_token(79);
          distinctOn = SelectItemsList();
                                                                           plainSelect.getDistinct().setOnSelectItems(distinctOn);
          jj_consume_token(80);
          break;
        default:
          jj_la1[24] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[25] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[26] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_TOP:
      top = Top();
                      plainSelect.setTop(top);
      break;
    default:
      jj_la1[27] = jj_gen;
      ;
    }
    selectItems = SelectItemsList();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_INTO:
      IntoClause();
      break;
    default:
      jj_la1[28] = jj_gen;
      ;
    }
    jj_consume_token(K_FROM);
    fromItem = FromItem();
    joins = JoinsList();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WHERE:
      where = WhereClause();
                            plainSelect.setWhere(where);
      break;
    default:
      jj_la1[29] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_GROUP:
      groupByColumnReferences = GroupByColumnReferences();
                                                          plainSelect.setGroupByColumnReferences(groupByColumnReferences);
      break;
    default:
      jj_la1[30] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_HAVING:
      having = Having();
                        plainSelect.setHaving(having);
      break;
    default:
      jj_la1[31] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ORDER:
      orderByElements = OrderByElements();
                                                                         plainSelect.setOrderByElements(orderByElements);
      break;
    default:
      jj_la1[32] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_LIMIT:
    case K_OFFSET:
      limit = Limit();
                          plainSelect.setLimit(limit);
      break;
    default:
      jj_la1[33] = jj_gen;
      ;
    }
                plainSelect.setSelectItems(selectItems);
                plainSelect.setFromItem(fromItem);
                if (joins.size() > 0)
                        plainSelect.setJoins(joins);
                {if (true) return plainSelect;}
    throw new Error("Missing return statement in function");
  }

  final public Union Union() throws ParseException {
        Union union = new Union();
        List orderByElements = null;
        Limit limit = null;
        PlainSelect select = null;
        ArrayList selects = new ArrayList();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 79:
      jj_consume_token(79);
      select = PlainSelect();
                                                  selects.add(select);
      jj_consume_token(80);
      jj_consume_token(K_UNION);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ALL:
      case K_DISTINCT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_ALL:
          jj_consume_token(K_ALL);
                                                      union.setAll(true);
          break;
        case K_DISTINCT:
          jj_consume_token(K_DISTINCT);
                                                                                                  union.setDistinct(true);
          break;
        default:
          jj_la1[34] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[35] = jj_gen;
        ;
      }
      jj_consume_token(79);
      select = PlainSelect();
                                                  selects.add(select);
      jj_consume_token(80);
      label_7:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_UNION:
          ;
          break;
        default:
          jj_la1[36] = jj_gen;
          break label_7;
        }
        jj_consume_token(K_UNION);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_ALL:
        case K_DISTINCT:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case K_ALL:
            jj_consume_token(K_ALL);
            break;
          case K_DISTINCT:
            jj_consume_token(K_DISTINCT);
            break;
          default:
            jj_la1[37] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[38] = jj_gen;
          ;
        }
        jj_consume_token(79);
        select = PlainSelect();
                                                                                               selects.add(select);
        jj_consume_token(80);
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ORDER:
        orderByElements = OrderByElements();
                                                            union.setOrderByElements(orderByElements);
        break;
      default:
        jj_la1[39] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_LIMIT:
      case K_OFFSET:
        limit = Limit();
                                        union.setLimit(limit);
        break;
      default:
        jj_la1[40] = jj_gen;
        ;
      }
      break;
    case K_SELECT:
      select = PlainSelect();
                                              selects.add(select);
      jj_consume_token(K_UNION);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ALL:
      case K_DISTINCT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_ALL:
          jj_consume_token(K_ALL);
                                                      union.setAll(true);
          break;
        case K_DISTINCT:
          jj_consume_token(K_DISTINCT);
                                                                                                  union.setDistinct(true);
          break;
        default:
          jj_la1[41] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[42] = jj_gen;
        ;
      }
      select = PlainSelect();
                                              selects.add(select);
      label_8:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_UNION:
          ;
          break;
        default:
          jj_la1[43] = jj_gen;
          break label_8;
        }
        jj_consume_token(K_UNION);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_ALL:
        case K_DISTINCT:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case K_ALL:
            jj_consume_token(K_ALL);
            break;
          case K_DISTINCT:
            jj_consume_token(K_DISTINCT);
            break;
          default:
            jj_la1[44] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[45] = jj_gen;
          ;
        }
        select = PlainSelect();
                                                                                           selects.add(select);
      }
      break;
    default:
      jj_la1[46] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
                union.setPlainSelects(selects);
                {if (true) return union;}
    throw new Error("Missing return statement in function");
  }

  final public List WithList() throws ParseException {
        ArrayList withItemsList = new ArrayList();
        WithItem with = null;
    jj_consume_token(K_WITH);
    with = WithItem();
                                   withItemsList.add(with);
    label_9:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[47] = jj_gen;
        break label_9;
      }
      jj_consume_token(78);
      with = WithItem();
                                                                                     withItemsList.add(with);
    }
          {if (true) return withItemsList;}
    throw new Error("Missing return statement in function");
  }

  final public WithItem WithItem() throws ParseException {
        WithItem with = new WithItem();
        String name = null;
        List selectItems = null;
        SelectBody selectBody = null;
    name = RelObjectName();
                                with.setName(name);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 79:
      jj_consume_token(79);
      selectItems = SelectItemsList();
      jj_consume_token(80);
                                                   with.setWithItemList(selectItems);
      break;
    default:
      jj_la1[48] = jj_gen;
      ;
    }
    jj_consume_token(K_AS);
    jj_consume_token(79);
    selectBody = SelectBody();
                                         with.setSelectBody(selectBody);
    jj_consume_token(80);
           {if (true) return with;}
    throw new Error("Missing return statement in function");
  }

  final public List SelectItemsList() throws ParseException {
        ArrayList selectItemsList = new ArrayList();
        SelectItem selectItem = null;
    selectItem = SelectItem();
                              selectItemsList.add(selectItem);
    label_10:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[49] = jj_gen;
        break label_10;
      }
      jj_consume_token(78);
      selectItem = SelectItem();
                                                                                                selectItemsList.add(selectItem);
    }
      {if (true) return selectItemsList;}
    throw new Error("Missing return statement in function");
  }

  final public SelectItem SelectItem() throws ParseException {
        Function function = null;
        AllColumns allTableColumns = null;
        Column tableColumn = null;
        String alias = null;
        SelectItem selectItem = null;
        SelectExpressionItem selectExpressionItem = null;
        Expression expression = null;
        SubSelect subSelect = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 82:
      jj_consume_token(82);
           selectItem = new AllColumns();
      break;
    default:
      jj_la1[51] = jj_gen;
      if (jj_2_6(2147483647)) {
        selectItem = AllTableColumns();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_NULL:
        case K_CASE:
        case K_REPLACE:
        case S_DOUBLE:
        case S_INTEGER:
        case S_IDENTIFIER:
        case S_CHAR_LITERAL:
        case S_QUOTED_IDENTIFIER:
        case 79:
        case 83:
        case 94:
        case 95:
        case 98:
        case 100:
        case 101:
        case 102:
          expression = SimpleExpression();
                                         selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case K_AS:
          case S_IDENTIFIER:
          case S_QUOTED_IDENTIFIER:
            alias = Alias();
                                          selectExpressionItem.setAlias(alias);
            break;
          default:
            jj_la1[50] = jj_gen;
            ;
          }
                                                                                     selectItem = selectExpressionItem;
          break;
        default:
          jj_la1[52] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
                {if (true) return selectItem;}
    throw new Error("Missing return statement in function");
  }

  final public AllTableColumns AllTableColumns() throws ParseException {
        Table table = null;
    table = Table();
    jj_consume_token(81);
    jj_consume_token(82);
                {if (true) return new AllTableColumns(table);}
    throw new Error("Missing return statement in function");
  }

  final public String Alias() throws ParseException {
  String retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_AS:
      jj_consume_token(K_AS);
      break;
    default:
      jj_la1[53] = jj_gen;
      ;
    }
    retval = RelObjectName();
     {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public void IntoClause() throws ParseException {
    jj_consume_token(K_INTO);
    Table();
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[54] = jj_gen;
        break label_11;
      }
      jj_consume_token(78);
      Table();
    }
  }

  final public FromItem FromItem() throws ParseException {
        FromItem fromItem = null;
        String alias = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 79:
      jj_consume_token(79);
      if (jj_2_7(2147483647)) {
        fromItem = SubJoin();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_SELECT:
        case 79:
          fromItem = SubSelect();
          break;
        default:
          jj_la1[55] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jj_consume_token(80);
      break;
    case S_IDENTIFIER:
    case S_QUOTED_IDENTIFIER:
      fromItem = Table();
      break;
    default:
      jj_la1[56] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_AS:
    case S_IDENTIFIER:
    case S_QUOTED_IDENTIFIER:
      alias = Alias();
                         fromItem.setAlias(alias);
      break;
    default:
      jj_la1[57] = jj_gen;
      ;
    }
                {if (true) return fromItem;}
    throw new Error("Missing return statement in function");
  }

  final public FromItem SubJoin() throws ParseException {
        FromItem fromItem = null;
        Join join = null;
        SubJoin subJoin = new SubJoin();
    fromItem = FromItem();
                              subJoin.setLeft(fromItem);
    join = JoinerExpression();
                                  subJoin.setJoin(join);
                {if (true) return subJoin;}
    throw new Error("Missing return statement in function");
  }

  final public List JoinsList() throws ParseException {
        ArrayList joinsList = new ArrayList();
        Join join = null;
    label_12:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_JOIN:
      case K_LEFT:
      case K_FULL:
      case K_INNER:
      case K_OUTER:
      case K_RIGHT:
      case K_NATURAL:
      case 78:
        ;
        break;
      default:
        jj_la1[58] = jj_gen;
        break label_12;
      }
      join = JoinerExpression();
                               joinsList.add(join);
    }
      {if (true) return joinsList;}
    throw new Error("Missing return statement in function");
  }

  final public Join JoinerExpression() throws ParseException {
        Join join = new Join();
        FromItem right = null;
        Expression onExpression = null;
        Column tableColumn;
        List columns = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_LEFT:
    case K_FULL:
    case K_RIGHT:
    case K_NATURAL:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_LEFT:
        jj_consume_token(K_LEFT);
                           join.setLeft(true);
        break;
      case K_RIGHT:
        jj_consume_token(K_RIGHT);
                              join.setRight(true);
        break;
      case K_FULL:
        jj_consume_token(K_FULL);
                             join.setFull(true);
        break;
      case K_NATURAL:
        jj_consume_token(K_NATURAL);
                                join.setNatural(true);
        break;
      default:
        jj_la1[59] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[60] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_INNER:
    case K_OUTER:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_OUTER:
        jj_consume_token(K_OUTER);
                            join.setOuter(true);
        break;
      case K_INNER:
        jj_consume_token(K_INNER);
                              join.setInner(true);
        break;
      default:
        jj_la1[61] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[62] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_JOIN:
      jj_consume_token(K_JOIN);
      break;
    case 78:
      jj_consume_token(78);
                               join.setSimple(true);
      break;
    default:
      jj_la1[63] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    right = FromItem();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ON:
    case K_USING:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ON:
        jj_consume_token(K_ON);
        onExpression = Expression();
                                                      join.setOnExpression(onExpression);
        break;
      case K_USING:
        jj_consume_token(K_USING);
        jj_consume_token(79);
        tableColumn = Column();
                                                       columns = new ArrayList(); columns.add(tableColumn);
        label_13:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 78:
            ;
            break;
          default:
            jj_la1[64] = jj_gen;
            break label_13;
          }
          jj_consume_token(78);
          tableColumn = Column();
                                                            columns.add(tableColumn);
        }
        jj_consume_token(80);
                    join.setUsingColumns(columns);
        break;
      default:
        jj_la1[65] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[66] = jj_gen;
      ;
    }
        join.setRightItem(right);
    {if (true) return join;}
    throw new Error("Missing return statement in function");
  }

  final public Expression WhereClause() throws ParseException {
        Expression retval = null;
    jj_consume_token(K_WHERE);
    retval = Expression();
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public List GroupByColumnReferences() throws ParseException {
        Expression columnReference = null;
        List columnReferences = new ArrayList();
    jj_consume_token(K_GROUP);
    jj_consume_token(K_BY);
    columnReference = SimpleExpression();
                                                         columnReferences.add(columnReference);
    label_14:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[67] = jj_gen;
        break label_14;
      }
      jj_consume_token(78);
      columnReference = SimpleExpression();
                                              columnReferences.add(columnReference);
    }
                {if (true) return columnReferences;}
    throw new Error("Missing return statement in function");
  }

  final public Expression Having() throws ParseException {
        Expression having = null;
    jj_consume_token(K_HAVING);
    having = Expression();
                {if (true) return having;}
    throw new Error("Missing return statement in function");
  }

  final public List OrderByElements() throws ParseException {
        List orderByList = new ArrayList();
        OrderByElement orderByElement = null;
    jj_consume_token(K_ORDER);
    jj_consume_token(K_BY);
    orderByElement = OrderByElement();
                                                       orderByList.add(orderByElement);
    label_15:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[68] = jj_gen;
        break label_15;
      }
      jj_consume_token(78);
      orderByElement = OrderByElement();
                                               orderByList.add(orderByElement);
    }
        {if (true) return orderByList;}
    throw new Error("Missing return statement in function");
  }

  final public OrderByElement OrderByElement() throws ParseException {
        OrderByElement orderByElement = new OrderByElement();
        List retval = new ArrayList();
        Expression columnReference = null;
    columnReference = SimpleExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ASC:
    case K_DESC:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ASC:
        jj_consume_token(K_ASC);
        break;
      case K_DESC:
        jj_consume_token(K_DESC);
                           orderByElement.setAsc(false);
        break;
      default:
        jj_la1[69] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[70] = jj_gen;
      ;
    }
        orderByElement.setExpression(columnReference);
                {if (true) return orderByElement;}
    throw new Error("Missing return statement in function");
  }

  final public Limit Limit() throws ParseException {
        Limit limit = new Limit();
        Token token = null;
    if (jj_2_8(3)) {
      jj_consume_token(K_LIMIT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_INTEGER:
        token = jj_consume_token(S_INTEGER);
                                                                    limit.setOffset(Long.parseLong(token.image));
        break;
      case 83:
        jj_consume_token(83);
                                                      limit.setOffsetJdbcParameter(true);
        break;
      default:
        jj_la1[71] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(78);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_INTEGER:
        token = jj_consume_token(S_INTEGER);
                                                    limit.setRowCount(Long.parseLong(token.image));
        break;
      case 83:
        jj_consume_token(83);
                                                                                                              limit.setRowCountJdbcParameter(true);
        break;
      default:
        jj_la1[72] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_OFFSET:
        jj_consume_token(K_OFFSET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case S_INTEGER:
          token = jj_consume_token(S_INTEGER);
                                                      limit.setOffset(Long.parseLong(token.image));
          break;
        case 83:
          jj_consume_token(83);
                                                                                                              limit.setOffsetJdbcParameter(true);
          break;
        default:
          jj_la1[73] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case K_LIMIT:
        jj_consume_token(K_LIMIT);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case S_INTEGER:
          token = jj_consume_token(S_INTEGER);
                                                            limit.setRowCount(Long.parseLong(token.image));
          break;
        case 83:
          jj_consume_token(83);
                                              limit.setRowCountJdbcParameter(true);
          break;
        case K_ALL:
          jj_consume_token(K_ALL);
                                                  limit.setLimitAll(true);
          break;
        default:
          jj_la1[74] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_OFFSET:
          jj_consume_token(K_OFFSET);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case S_INTEGER:
            token = jj_consume_token(S_INTEGER);
                                                              limit.setOffset(Long.parseLong(token.image));
            break;
          case 83:
            jj_consume_token(83);
                                                                                                                      limit.setOffsetJdbcParameter(true);
            break;
          default:
            jj_la1[75] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[76] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[77] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
                {if (true) return limit;}
    throw new Error("Missing return statement in function");
  }

  final public Top Top() throws ParseException {
        Top top = new Top();
        Token token = null;
    jj_consume_token(K_TOP);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case S_INTEGER:
      token = jj_consume_token(S_INTEGER);
                                    top.setRowCount(Long.parseLong(token.image));
      break;
    case 83:
      jj_consume_token(83);
                      top.setRowCountJdbcParameter(true);
      break;
    default:
      jj_la1[78] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
                {if (true) return top;}
    throw new Error("Missing return statement in function");
  }

  final public Expression Expression() throws ParseException {
        Expression retval = null;
    if (jj_2_9(2147483647)) {
      retval = OrExpression();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 79:
        jj_consume_token(79);
        retval = Expression();
        jj_consume_token(80);
                                             retval = new Parenthesis(retval);
        break;
      default:
        jj_la1[79] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression OrExpression() throws ParseException {
        Expression left, right, result;
    left = AndExpression();
                               result = left;
    label_16:
    while (true) {
      if (jj_2_10(2147483647)) {
        ;
      } else {
        break label_16;
      }
      jj_consume_token(K_OR);
      right = AndExpression();
                                result = new OrExpression(left, right);
                                left = result;
    }
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression AndExpression() throws ParseException {
        Expression left, right, result;
        boolean not = false;
    if (jj_2_11(2147483647)) {
      left = Condition();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_NOT:
      case 79:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_NOT:
          jj_consume_token(K_NOT);
                        not = true;
          break;
        default:
          jj_la1[80] = jj_gen;
          ;
        }
        jj_consume_token(79);
        left = OrExpression();
        jj_consume_token(80);
                                         left = new Parenthesis(left); if (not) { ((Parenthesis)left).setNot(); not = false; }
        break;
      default:
        jj_la1[81] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
          result = left;
    label_17:
    while (true) {
      if (jj_2_12(2147483647)) {
        ;
      } else {
        break label_17;
      }
      jj_consume_token(K_AND);
      if (jj_2_13(2147483647)) {
        right = Condition();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_NOT:
        case 79:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case K_NOT:
            jj_consume_token(K_NOT);
                                not = true;
            break;
          default:
            jj_la1[82] = jj_gen;
            ;
          }
          jj_consume_token(79);
          right = OrExpression();
          jj_consume_token(80);
                                                  right = new Parenthesis(right); if (not) { ((Parenthesis)right).setNot(); not = false; }
          break;
        default:
          jj_la1[83] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
                        result = new AndExpression(left, right);
                        left = result;
    }
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression Condition() throws ParseException {
        Expression result;
    if (jj_2_14(2147483647)) {
      result = SQLCondition();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ALL:
      case K_ANY:
      case K_NOT:
      case K_NULL:
      case K_CASE:
      case K_SOME:
      case K_REPLACE:
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
      case S_QUOTED_IDENTIFIER:
      case 79:
      case 83:
      case 94:
      case 95:
      case 98:
      case 100:
      case 101:
      case 102:
        result = RegularCondition();
        break;
      default:
        jj_la1[84] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
          {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression RegularCondition() throws ParseException {
        Expression result = null;
        Expression leftExpression;
        Expression rightExpression;
        boolean not = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
                    not = true;
      break;
    default:
      jj_la1[85] = jj_gen;
      ;
    }
    leftExpression = ComparisonItem();
                                          result = leftExpression;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 84:
      jj_consume_token(84);
              result = new GreaterThan();
      break;
    case 85:
      jj_consume_token(85);
                result = new MinorThan();
      break;
    case 77:
      jj_consume_token(77);
                result = new EqualsTo();
      break;
    case 86:
      jj_consume_token(86);
                 result = new GreaterThanEquals();
      break;
    case 87:
      jj_consume_token(87);
                 result = new MinorThanEquals();
      break;
    case 88:
    case 89:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 88:
        jj_consume_token(88);
        break;
      case 89:
        jj_consume_token(89);
        break;
      default:
        jj_la1[86] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                          result = new NotEqualsTo();
      break;
    case 90:
      jj_consume_token(90);
                 result = new Matches();
      break;
    default:
      jj_la1[87] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    rightExpression = ComparisonItem();
                BinaryExpression regCond = (BinaryExpression) result;
                regCond.setLeftExpression(leftExpression);
                regCond.setRightExpression(rightExpression);
                if (not)
                        regCond.setNot();
          {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression SQLCondition() throws ParseException {
        Expression result;
    if (jj_2_15(2147483647)) {
      result = InExpression();
    } else if (jj_2_16(2147483647)) {
      result = Between();
    } else if (jj_2_17(2147483647)) {
      result = IsNullExpression();
    } else if (jj_2_18(2147483647)) {
      result = ExistsExpression();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_NULL:
      case K_CASE:
      case K_REPLACE:
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
      case S_QUOTED_IDENTIFIER:
      case 79:
      case 83:
      case 94:
      case 95:
      case 98:
      case 100:
      case 101:
      case 102:
        result = LikeExpression();
        break;
      default:
        jj_la1[88] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
          {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression InExpression() throws ParseException {
        InExpression result = new InExpression();
        ItemsList itemsList = null;
        Expression leftExpression = null;
    leftExpression = SimpleExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
               result.setNot(true);
      break;
    default:
      jj_la1[89] = jj_gen;
      ;
    }
    jj_consume_token(K_IN);
    jj_consume_token(79);
    if (jj_2_19(2147483647)) {
      itemsList = SubSelect();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_NULL:
      case K_CASE:
      case K_REPLACE:
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
      case S_QUOTED_IDENTIFIER:
      case 79:
      case 83:
      case 94:
      case 95:
      case 98:
      case 100:
      case 101:
      case 102:
        itemsList = SimpleExpressionList();
        break;
      default:
        jj_la1[90] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    jj_consume_token(80);
                result.setLeftExpression(leftExpression);
                result.setItemsList(itemsList);
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression Between() throws ParseException {
        Between result = new Between();
        Expression leftExpression = null;
        Expression betweenExpressionStart = null;
        Expression betweenExpressionEnd = null;
    leftExpression = SimpleExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
                       result.setNot(true);
      break;
    default:
      jj_la1[91] = jj_gen;
      ;
    }
    jj_consume_token(K_BETWEEN);
    betweenExpressionStart = SimpleExpression();
    jj_consume_token(K_AND);
    betweenExpressionEnd = SimpleExpression();
                result.setLeftExpression(leftExpression);
                result.setBetweenExpressionStart(betweenExpressionStart);
                result.setBetweenExpressionEnd(betweenExpressionEnd);
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression LikeExpression() throws ParseException {
        LikeExpression result = new LikeExpression();
        Expression leftExpression = null;
        Expression rightExpression = null;
    leftExpression = SimpleExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
               result.setNot(true);
      break;
    default:
      jj_la1[92] = jj_gen;
      ;
    }
    jj_consume_token(K_LIKE);
    rightExpression = SimpleExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ESCAPE:
      jj_consume_token(K_ESCAPE);
      token = jj_consume_token(S_CHAR_LITERAL);
                                         result.setEscape((new StringValue(token.image)).getValue());
      break;
    default:
      jj_la1[93] = jj_gen;
      ;
    }
                result.setLeftExpression(leftExpression);
                result.setRightExpression(rightExpression);
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression IsNullExpression() throws ParseException {
        IsNullExpression result = new IsNullExpression();
        Expression leftExpression = null;
    leftExpression = SimpleExpression();
    jj_consume_token(K_IS);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
                      result.setNot(true);
      break;
    default:
      jj_la1[94] = jj_gen;
      ;
    }
    jj_consume_token(K_NULL);
                result.setLeftExpression(leftExpression);
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression ExistsExpression() throws ParseException {
        ExistsExpression result = new ExistsExpression();
        Expression rightExpression = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
               result.setNot(true);
      break;
    default:
      jj_la1[95] = jj_gen;
      ;
    }
    jj_consume_token(K_EXISTS);
    rightExpression = SimpleExpression();
                result.setRightExpression(rightExpression);
                {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public ExpressionList SQLExpressionList() throws ParseException {
        ExpressionList retval = new ExpressionList();
        List expressions = new ArrayList();
        Expression expr = null;
    expr = Expression();
                        expressions.add(expr);
    label_18:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[96] = jj_gen;
        break label_18;
      }
      jj_consume_token(78);
      expr = Expression();
                                                                          expressions.add(expr);
    }
                retval.setExpressions(expressions);
                {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public ExpressionList SimpleExpressionList() throws ParseException {
        ExpressionList retval = new ExpressionList();
        List expressions = new ArrayList();
        Expression expr = null;
    expr = SimpleExpression();
                              expressions.add(expr);
    label_19:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[97] = jj_gen;
        break label_19;
      }
      jj_consume_token(78);
      expr = SimpleExpression();
                                                                                      expressions.add(expr);
    }
                retval.setExpressions(expressions);
                {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression ComparisonItem() throws ParseException {
        Expression retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ALL:
      retval = AllComparisonExpression();
      break;
    case K_ANY:
    case K_SOME:
      retval = AnyComparisonExpression();
      break;
    case K_NULL:
    case K_CASE:
    case K_REPLACE:
    case S_DOUBLE:
    case S_INTEGER:
    case S_IDENTIFIER:
    case S_CHAR_LITERAL:
    case S_QUOTED_IDENTIFIER:
    case 79:
    case 83:
    case 94:
    case 95:
    case 98:
    case 100:
    case 101:
    case 102:
      retval = SimpleExpression();
      break;
    default:
      jj_la1[98] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression AllComparisonExpression() throws ParseException {
        AllComparisonExpression retval = null;
        SubSelect subselect = null;
    jj_consume_token(K_ALL);
    jj_consume_token(79);
    subselect = SubSelect();
    jj_consume_token(80);
                                         retval = new AllComparisonExpression(subselect);
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression AnyComparisonExpression() throws ParseException {
        AnyComparisonExpression retval = null;
        SubSelect subselect = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ANY:
      jj_consume_token(K_ANY);
      break;
    case K_SOME:
      jj_consume_token(K_SOME);
      break;
    default:
      jj_la1[99] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    jj_consume_token(79);
    subselect = SubSelect();
    jj_consume_token(80);
                                                      retval = new AnyComparisonExpression(subselect);
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression SimpleExpression() throws ParseException {
        Expression retval = null;
    if (jj_2_20(2147483647)) {
      retval = BitwiseAndOr();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 79:
        jj_consume_token(79);
        retval = BitwiseAndOr();
        jj_consume_token(80);
                                               retval = new Parenthesis(retval);
        break;
      default:
        jj_la1[100] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression ConcatExpression() throws ParseException {
        Expression result = null;
        Expression leftExpression = null;
        Expression rightExpression = null;
    leftExpression = AdditiveExpression();
                                           result = leftExpression;
    label_20:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 91:
        ;
        break;
      default:
        jj_la1[101] = jj_gen;
        break label_20;
      }
      jj_consume_token(91);
      rightExpression = AdditiveExpression();
                        Concat binExp = new Concat();
                        binExp.setLeftExpression(leftExpression);
                        binExp.setRightExpression(rightExpression);
                        result = binExp;
                        leftExpression = result;
    }
      {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression BitwiseAndOr() throws ParseException {
        Expression result = null;
        Expression leftExpression = null;
        Expression rightExpression = null;
    leftExpression = ConcatExpression();
                                         result = leftExpression;
    label_21:
    while (true) {
      if (jj_2_21(2)) {
        ;
      } else {
        break label_21;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 92:
        jj_consume_token(92);
                                              result = new BitwiseOr();
        break;
      case 93:
        jj_consume_token(93);
                                              result = new BitwiseAnd();
        break;
      default:
        jj_la1[102] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      rightExpression = ConcatExpression();
                        BinaryExpression binExp = (BinaryExpression) result;
                        binExp.setLeftExpression(leftExpression);
                        binExp.setRightExpression(rightExpression);
                        leftExpression = result;
    }
      {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression AdditiveExpression() throws ParseException {
        Expression result = null;
        Expression leftExpression = null;
        Expression rightExpression = null;
    leftExpression = MultiplicativeExpression();
                                                 result = leftExpression;
    label_22:
    while (true) {
      if (jj_2_22(2)) {
        ;
      } else {
        break label_22;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 94:
        jj_consume_token(94);
                            result = new Addition();
        break;
      case 95:
        jj_consume_token(95);
                                                                        result = new Subtraction();
        break;
      default:
        jj_la1[103] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      rightExpression = MultiplicativeExpression();
                        BinaryExpression binExp = (BinaryExpression) result;
                        binExp.setLeftExpression(leftExpression);
                        binExp.setRightExpression(rightExpression);
                        leftExpression = result;
    }
      {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression MultiplicativeExpression() throws ParseException {
        Expression result = null;
        Expression leftExpression = null;
        Expression rightExpression = null;
    if (jj_2_23(2147483647)) {
      leftExpression = BitwiseXor();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 79:
        jj_consume_token(79);
        leftExpression = AdditiveExpression();
        jj_consume_token(80);
                                                         leftExpression = new Parenthesis(leftExpression);
        break;
      default:
        jj_la1[104] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
        result = leftExpression;
    label_23:
    while (true) {
      if (jj_2_24(2)) {
        ;
      } else {
        break label_23;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 82:
        jj_consume_token(82);
                            result = new Multiplication();
        break;
      case 96:
        jj_consume_token(96);
                                                                        result = new Division();
        break;
      default:
        jj_la1[105] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      if (jj_2_25(2147483647)) {
        rightExpression = BitwiseXor();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 79:
          jj_consume_token(79);
          rightExpression = AdditiveExpression();
          jj_consume_token(80);
                                                                                                  rightExpression = new Parenthesis(rightExpression);
          break;
        default:
          jj_la1[106] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
                        BinaryExpression binExp = (BinaryExpression) result;
                        binExp.setLeftExpression(leftExpression);
                        binExp.setRightExpression(rightExpression);
                        leftExpression = result;
    }
      {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression BitwiseXor() throws ParseException {
        Expression result = null;
        Expression leftExpression = null;
        Expression rightExpression = null;
    leftExpression = PrimaryExpression();
                                          result = leftExpression;
    label_24:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 97:
        ;
        break;
      default:
        jj_la1[107] = jj_gen;
        break label_24;
      }
      jj_consume_token(97);
      rightExpression = PrimaryExpression();
                        BitwiseXor binExp = new BitwiseXor();
                        binExp.setLeftExpression(leftExpression);
                        binExp.setRightExpression(rightExpression);
                        result = binExp;
                        leftExpression = result;
    }
      {if (true) return result;}
    throw new Error("Missing return statement in function");
  }

  final public Expression PrimaryExpression() throws ParseException {
        Expression retval = null;
        Token token = null;
        boolean isInverse = false;
        String tmp = "";
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NULL:
      jj_consume_token(K_NULL);
                   retval = new NullValue();
      break;
    case K_CASE:
      retval = CaseWhenExpression();
      break;
    case 83:
      jj_consume_token(83);
                retval = new JdbcParameter();
      break;
    default:
      jj_la1[120] = jj_gen;
      if (jj_2_26(2147483647)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
            jj_consume_token(94);
            break;
          case 95:
            jj_consume_token(95);
                                                              isInverse = true;
            break;
          default:
            jj_la1[108] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[109] = jj_gen;
          ;
        }
        retval = Function();
      } else if (jj_2_27(2147483647)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
            jj_consume_token(94);
            break;
          case 95:
            jj_consume_token(95);
                                                                    tmp = "-";
            break;
          default:
            jj_la1[110] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[111] = jj_gen;
          ;
        }
        token = jj_consume_token(S_DOUBLE);
                                                                                                      retval = new DoubleValue(tmp+token.image);
      } else if (jj_2_28(2147483647)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
            jj_consume_token(94);
            break;
          case 95:
            jj_consume_token(95);
                                                                            tmp = "-";
            break;
          default:
            jj_la1[112] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[113] = jj_gen;
          ;
        }
        token = jj_consume_token(S_INTEGER);
                                                                                                               retval = new LongValue(tmp+token.image);
      } else if (jj_2_29(2)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
            jj_consume_token(94);
            break;
          case 95:
            jj_consume_token(95);
                                      isInverse = true;
            break;
          default:
            jj_la1[114] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[115] = jj_gen;
          ;
        }
        retval = Column();
      } else if (jj_2_30(2)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
            jj_consume_token(94);
            break;
          case 95:
            jj_consume_token(95);
                                     isInverse = true;
            break;
          default:
            jj_la1[116] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[117] = jj_gen;
          ;
        }
        jj_consume_token(79);
        retval = PrimaryExpression();
        jj_consume_token(80);
                                                                                               retval = new Parenthesis(retval);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case S_CHAR_LITERAL:
          token = jj_consume_token(S_CHAR_LITERAL);
                                   retval = new StringValue(token.image);
          break;
        case 79:
        case 94:
        case 95:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case 94:
          case 95:
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case 94:
              jj_consume_token(94);
              break;
            case 95:
              jj_consume_token(95);
                        isInverse = true;
              break;
            default:
              jj_la1[118] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
            break;
          default:
            jj_la1[119] = jj_gen;
            ;
          }
          jj_consume_token(79);
          retval = SubSelect();
          jj_consume_token(80);
          break;
        case 98:
          jj_consume_token(98);
          token = jj_consume_token(S_CHAR_LITERAL);
          jj_consume_token(99);
                                                  retval = new DateValue(token.image);
          break;
        case 100:
          jj_consume_token(100);
          token = jj_consume_token(S_CHAR_LITERAL);
          jj_consume_token(99);
                                                  retval = new TimeValue(token.image);
          break;
        case 101:
          jj_consume_token(101);
          token = jj_consume_token(S_CHAR_LITERAL);
          jj_consume_token(99);
                                                   retval = new TimestampValue(token.image);
          break;
        default:
          jj_la1[121] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
                if (isInverse) {
                        retval = new InverseExpression(retval);
                }
        {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Expression CaseWhenExpression() throws ParseException {
        CaseExpression caseExp = new CaseExpression();
        Expression switchExp = null;
        WhenClause clause;
        List whenClauses = new ArrayList();
        Expression elseExp = null;
    jj_consume_token(K_CASE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_WHEN:
      label_25:
      while (true) {
        clause = WhenThenSearchCondition();
                                                 whenClauses.add(clause);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_WHEN:
          ;
          break;
        default:
          jj_la1[122] = jj_gen;
          break label_25;
        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ELSE:
        jj_consume_token(K_ELSE);
        elseExp = PrimaryExpression();
        break;
      default:
        jj_la1[123] = jj_gen;
        ;
      }
      break;
    case K_NULL:
    case K_CASE:
    case K_REPLACE:
    case S_DOUBLE:
    case S_INTEGER:
    case S_IDENTIFIER:
    case S_CHAR_LITERAL:
    case S_QUOTED_IDENTIFIER:
    case 79:
    case 83:
    case 94:
    case 95:
    case 98:
    case 100:
    case 101:
    case 102:
      switchExp = PrimaryExpression();
      label_26:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_WHEN:
          ;
          break;
        default:
          jj_la1[124] = jj_gen;
          break label_26;
        }
        clause = WhenThenValue();
                                        whenClauses.add(clause);
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ELSE:
        jj_consume_token(K_ELSE);
        elseExp = PrimaryExpression();
        break;
      default:
        jj_la1[125] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[126] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    jj_consume_token(K_END);
        caseExp.setSwitchExpression(switchExp);
        caseExp.setWhenClauses(whenClauses);
                caseExp.setElseExpression(elseExp);
        {if (true) return caseExp;}
    throw new Error("Missing return statement in function");
  }

  final public WhenClause WhenThenSearchCondition() throws ParseException {
        WhenClause whenThen = new WhenClause();
        Expression whenExp = null;
        Expression thenExp = null;
    jj_consume_token(K_WHEN);
    whenExp = Expression();
    jj_consume_token(K_THEN);
    thenExp = SimpleExpression();
           whenThen.setWhenExpression(whenExp);
           whenThen.setThenExpression(thenExp);
           {if (true) return whenThen;}
    throw new Error("Missing return statement in function");
  }

  final public WhenClause WhenThenValue() throws ParseException {
        WhenClause whenThen = new WhenClause();
        Expression whenExp = null;
        Expression thenExp = null;
    jj_consume_token(K_WHEN);
    whenExp = PrimaryExpression();
    jj_consume_token(K_THEN);
    thenExp = SimpleExpression();
           whenThen.setWhenExpression(whenExp);
           whenThen.setThenExpression(thenExp);
           {if (true) return whenThen;}
    throw new Error("Missing return statement in function");
  }

  final public Function Function() throws ParseException {
        Function retval = new Function();
        String funcName = null;
        String tmp = null;
        ExpressionList expressionList = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 102:
      jj_consume_token(102);
                 retval.setEscaped(true);
      break;
    default:
      jj_la1[127] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case S_IDENTIFIER:
    case S_QUOTED_IDENTIFIER:
      funcName = RelObjectName();
      break;
    case K_REPLACE:
      jj_consume_token(K_REPLACE);
                          funcName = "REPLACE";
      break;
    default:
      jj_la1[128] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 81:
      jj_consume_token(81);
      tmp = RelObjectName();
                                  funcName+= "." + tmp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 81:
        jj_consume_token(81);
        tmp = RelObjectName();
                                                                                     funcName+= "." + tmp;
        break;
      default:
        jj_la1[129] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[130] = jj_gen;
      ;
    }
    jj_consume_token(79);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ALL:
    case K_NULL:
    case K_CASE:
    case K_REPLACE:
    case K_DISTINCT:
    case S_DOUBLE:
    case S_INTEGER:
    case S_IDENTIFIER:
    case S_CHAR_LITERAL:
    case S_QUOTED_IDENTIFIER:
    case 79:
    case 82:
    case 83:
    case 94:
    case 95:
    case 98:
    case 100:
    case 101:
    case 102:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_ALL:
      case K_DISTINCT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_DISTINCT:
          jj_consume_token(K_DISTINCT);
                          retval.setDistinct(true);
          break;
        case K_ALL:
          jj_consume_token(K_ALL);
                                                                  retval.setAllColumns(true);
          break;
        default:
          jj_la1[131] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[132] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_NULL:
      case K_CASE:
      case K_REPLACE:
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
      case S_QUOTED_IDENTIFIER:
      case 79:
      case 83:
      case 94:
      case 95:
      case 98:
      case 100:
      case 101:
      case 102:
        expressionList = SimpleExpressionList();
        break;
      case 82:
        jj_consume_token(82);
                                                                                                                                                retval.setAllColumns(true);
        break;
      default:
        jj_la1[133] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[134] = jj_gen;
      ;
    }
    jj_consume_token(80);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 99:
      jj_consume_token(99);
      break;
    default:
      jj_la1[135] = jj_gen;
      ;
    }
            retval.setParameters(expressionList);
            retval.setName(funcName);
        {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public SubSelect SubSelect() throws ParseException {
        SelectBody selectBody = null;
    selectBody = SelectBody();
        SubSelect subSelect = new SubSelect();
        subSelect.setSelectBody(selectBody);
        {if (true) return subSelect;}
    throw new Error("Missing return statement in function");
  }

  final public CreateTable CreateTable() throws ParseException {
        CreateTable createTable = new CreateTable();
        Table table = null;
        ArrayList columnDefinitions = new ArrayList();
        List columnSpecs = null;
        List tableOptions = new ArrayList();
        Token columnName;
        Token tk = null;
        Token tk2 = null;
        Token tk3 = null;
        ColDataType colDataType = null;
        String stringList = null;
        ColumnDefinition coldef = null;
        List indexes = new ArrayList();
        List colNames = null;
        Index index = null;
        String parameter = null;
    jj_consume_token(K_CREATE);
    label_27:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_KEY:
      case K_NOT:
      case K_NULL:
      case K_PRIMARY:
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
      case 77:
      case 79:
        ;
        break;
      default:
        jj_la1[136] = jj_gen;
        break label_27;
      }
      CreateParameter();
    }
    jj_consume_token(K_TABLE);
    table = Table();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 79:
      jj_consume_token(79);
      columnName = jj_consume_token(S_IDENTIFIER);
      colDataType = ColDataType();
                        columnSpecs = new ArrayList();
      label_28:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_KEY:
        case K_NOT:
        case K_NULL:
        case K_PRIMARY:
        case S_DOUBLE:
        case S_INTEGER:
        case S_IDENTIFIER:
        case S_CHAR_LITERAL:
        case 77:
        case 79:
          ;
          break;
        default:
          jj_la1[137] = jj_gen;
          break label_28;
        }
        parameter = CreateParameter();
                                                columnSpecs.add(parameter);
      }
                        coldef = new ColumnDefinition();
                        coldef.setColumnName(columnName.image);
                        coldef.setColDataType(colDataType);
                        if (columnSpecs.size() > 0)
                                coldef.setColumnSpecStrings(columnSpecs);
                        columnDefinitions.add(coldef);
      label_29:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 78:
          ;
          break;
        default:
          jj_la1[138] = jj_gen;
          break label_29;
        }
        jj_consume_token(78);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_INDEX:
          tk = jj_consume_token(K_INDEX);
          tk3 = jj_consume_token(S_IDENTIFIER);
          colNames = ColumnsNamesList();
                                                        index = new Index();
                                                        index.setType(tk.image);
                                                        index.setName(tk3.image);
                                                        index.setColumnsNames(colNames);
                                                        indexes.add(index);
          break;
        case K_PRIMARY:
          tk = jj_consume_token(K_PRIMARY);
          tk2 = jj_consume_token(K_KEY);
          colNames = ColumnsNamesList();
                                                        index = new Index();
                                                        index.setType(tk.image + " "+ tk2.image);
                                                        index.setColumnsNames(colNames);
                                                        indexes.add(index);
          break;
        case K_KEY:
          tk = jj_consume_token(K_KEY);
          tk3 = jj_consume_token(S_IDENTIFIER);
          colNames = ColumnsNamesList();
                                                        index = new Index();
                                                        index.setType(tk.image);
                                                        index.setName(tk3.image);
                                                        index.setColumnsNames(colNames);
                                                        indexes.add(index);
          break;
        case S_IDENTIFIER:
          columnName = jj_consume_token(S_IDENTIFIER);
          colDataType = ColDataType();
                                                columnSpecs = new ArrayList();
          label_30:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case K_KEY:
            case K_NOT:
            case K_NULL:
            case K_PRIMARY:
            case S_DOUBLE:
            case S_INTEGER:
            case S_IDENTIFIER:
            case S_CHAR_LITERAL:
            case 77:
            case 79:
              ;
              break;
            default:
              jj_la1[139] = jj_gen;
              break label_30;
            }
            parameter = CreateParameter();
                                                                              columnSpecs.add(parameter);
          }
                                                coldef = new ColumnDefinition();
                                                coldef.setColumnName(columnName.image);
                                                coldef.setColDataType(colDataType);
                                                if (columnSpecs.size() > 0)
                                                        coldef.setColumnSpecStrings(columnSpecs);
                                                columnDefinitions.add(coldef);
          break;
        default:
          jj_la1[140] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jj_consume_token(80);
      label_31:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case K_KEY:
        case K_NOT:
        case K_NULL:
        case K_PRIMARY:
        case S_DOUBLE:
        case S_INTEGER:
        case S_IDENTIFIER:
        case S_CHAR_LITERAL:
        case 77:
        case 79:
          ;
          break;
        default:
          jj_la1[141] = jj_gen;
          break label_31;
        }
        parameter = CreateParameter();
                                                      tableOptions.add(parameter);
      }
      break;
    default:
      jj_la1[142] = jj_gen;
      ;
    }
                createTable.setTable(table);
                if (indexes.size() > 0)
                        createTable.setIndexes(indexes);
                if (tableOptions.size() > 0)
                        createTable.setTableOptionsStrings(tableOptions);
                if (columnDefinitions.size() > 0)
                        createTable.setColumnDefinitions(columnDefinitions);
                {if (true) return createTable;}
    throw new Error("Missing return statement in function");
  }

  final public ColDataType ColDataType() throws ParseException {
        ColDataType colDataType = new ColDataType();
        Token tk = null;
        ArrayList argumentsStringList = new ArrayList();
    tk = jj_consume_token(S_IDENTIFIER);
                              colDataType.setDataType(tk.image);
    if (jj_2_31(2)) {
      jj_consume_token(79);
      label_32:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case S_INTEGER:
        case S_CHAR_LITERAL:
          ;
          break;
        default:
          jj_la1[143] = jj_gen;
          break label_32;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case S_INTEGER:
          tk = jj_consume_token(S_INTEGER);
          break;
        case S_CHAR_LITERAL:
          tk = jj_consume_token(S_CHAR_LITERAL);
          break;
        default:
          jj_la1[144] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                                                                     argumentsStringList.add(tk.image);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 78:
          jj_consume_token(78);

          break;
        default:
          jj_la1[145] = jj_gen;
          ;
        }
      }
      jj_consume_token(80);
    } else {
      ;
    }
                if (argumentsStringList.size() > 0)
                        colDataType.setArgumentsStringList(argumentsStringList);
                {if (true) return colDataType;}
    throw new Error("Missing return statement in function");
  }

  final public String CreateParameter() throws ParseException {
        String retval = null;
        Token tk = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case S_IDENTIFIER:
      tk = jj_consume_token(S_IDENTIFIER);
                                            retval = tk.image;
      break;
    case K_NULL:
      tk = jj_consume_token(K_NULL);
                                      retval = tk.image;
      break;
    case K_NOT:
      tk = jj_consume_token(K_NOT);
                                     retval = tk.image;
      break;
    case K_PRIMARY:
      tk = jj_consume_token(K_PRIMARY);
                                         retval = tk.image;
      break;
    case K_KEY:
      tk = jj_consume_token(K_KEY);
                                     retval = tk.image;
      break;
    case S_CHAR_LITERAL:
      tk = jj_consume_token(S_CHAR_LITERAL);
                                              retval = tk.image;
      break;
    case S_INTEGER:
      tk = jj_consume_token(S_INTEGER);
                                         retval = tk.image;
      break;
    case S_DOUBLE:
      tk = jj_consume_token(S_DOUBLE);
                                        retval = tk.image;
      break;
    case 77:
      jj_consume_token(77);
                              retval = "=";
      break;
    case 79:
      retval = AList();
      break;
    default:
      jj_la1[146] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
         {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public String AList() throws ParseException {
        StringBuffer retval = new StringBuffer("(");
        Token tk = null;
    jj_consume_token(79);
    label_33:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_DOUBLE:
      case S_INTEGER:
      case S_IDENTIFIER:
      case S_CHAR_LITERAL:
        ;
        break;
      default:
        jj_la1[147] = jj_gen;
        break label_33;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_INTEGER:
        tk = jj_consume_token(S_INTEGER);
        break;
      case S_DOUBLE:
        tk = jj_consume_token(S_DOUBLE);
        break;
      case S_CHAR_LITERAL:
        tk = jj_consume_token(S_CHAR_LITERAL);
        break;
      case S_IDENTIFIER:
        tk = jj_consume_token(S_IDENTIFIER);
        break;
      default:
        jj_la1[148] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                                                                        retval.append(tk.image);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        jj_consume_token(78);
                                                                                                                         retval.append(",");
        break;
      default:
        jj_la1[149] = jj_gen;
        ;
      }
    }
    jj_consume_token(80);
                retval.append(")");
                {if (true) return retval.toString();}
    throw new Error("Missing return statement in function");
  }

  final public List ColumnsNamesList() throws ParseException {
        List retval = new ArrayList();
        Token tk = null;
    jj_consume_token(79);
    tk = jj_consume_token(S_IDENTIFIER);
                                    retval.add(tk.image);
    label_34:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 78:
        ;
        break;
      default:
        jj_la1[150] = jj_gen;
        break label_34;
      }
      jj_consume_token(78);
      tk = jj_consume_token(S_IDENTIFIER);
                                          retval.add(tk.image);
    }
    jj_consume_token(80);
                {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  final public Drop Drop() throws ParseException {
        Drop drop = new Drop();
        Token tk = null;
        List dropArgs = new ArrayList();
    jj_consume_token(K_DROP);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case S_IDENTIFIER:
      tk = jj_consume_token(S_IDENTIFIER);
      break;
    case K_TABLE:
      tk = jj_consume_token(K_TABLE);
      break;
    case K_INDEX:
      tk = jj_consume_token(K_INDEX);
      break;
    default:
      jj_la1[151] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      drop.setType(tk.image);
    tk = jj_consume_token(S_IDENTIFIER);
                            drop.setName(tk.image);
    label_35:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case S_IDENTIFIER:
        ;
        break;
      default:
        jj_la1[152] = jj_gen;
        break label_35;
      }
      tk = jj_consume_token(S_IDENTIFIER);
                             dropArgs.add(tk.image);
    }
                if (dropArgs.size() > 0)
                        drop.setParameters(dropArgs);
                {if (true) return drop;}
    throw new Error("Missing return statement in function");
  }

  final public Truncate Truncate() throws ParseException {
        Truncate truncate = new Truncate();
        Table table;
    jj_consume_token(K_TRUNCATE);
    jj_consume_token(K_TABLE);
    table = Table();
                        truncate.setTable(table);
                {if (true) return truncate;}
    throw new Error("Missing return statement in function");
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

  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); }
  }

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

  private boolean jj_3R_155() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_206()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_91() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

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

  private boolean jj_3R_49() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_91()) jj_scanpos = xsp;
    if (jj_scan_token(K_EXISTS)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

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

  private boolean jj_3R_90() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3_1() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_36()) return true;
    return false;
  }

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

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

  private boolean jj_3R_40() {
    if (jj_3R_74()) return true;
    if (jj_3R_75()) return true;
    return false;
  }

  private boolean jj_3R_48() {
    if (jj_3R_85()) return true;
    if (jj_scan_token(K_IS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_90()) jj_scanpos = xsp;
    if (jj_scan_token(K_NULL)) return true;
    return false;
  }

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

  private boolean jj_3R_125() {
    if (jj_3R_73()) return true;
    return false;
  }

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

  private boolean jj_3R_126() {
    if (jj_3R_171()) return true;
    return false;
  }

  private boolean jj_3R_195() {
    if (jj_scan_token(K_DISTINCT)) return true;
    return false;
  }

  private boolean jj_3R_143() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_195()) {
    jj_scanpos = xsp;
    if (jj_3R_196()) return true;
    }
    return false;
  }

  private boolean jj_3R_99() {
    if (jj_scan_token(K_REPLACE)) return true;
    return false;
  }

  private boolean jj_3R_101() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_143()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_144()) {
    jj_scanpos = xsp;
    if (jj_3R_145()) return true;
    }
    return false;
  }

  private boolean jj_3R_135() {
    if (jj_3R_85()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_192()) jj_scanpos = xsp;
    if (jj_scan_token(K_LIKE)) return true;
    if (jj_3R_85()) return true;
    xsp = jj_scanpos;
    if (jj_3R_193()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3R_100() {
    if (jj_scan_token(81)) return true;
    if (jj_3R_37()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_142()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_193() {
    if (jj_scan_token(K_ESCAPE)) return true;
    if (jj_scan_token(S_CHAR_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_124() {
    if (jj_scan_token(79)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_169()) {
    jj_scanpos = xsp;
    if (jj_3R_170()) return true;
    }
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_192() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_97() {
    if (jj_scan_token(102)) return true;
    return false;
  }

  private boolean jj_3R_228() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_64() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_97()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_98()) {
    jj_scanpos = xsp;
    if (jj_3R_99()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_100()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    xsp = jj_scanpos;
    if (jj_3R_101()) jj_scanpos = xsp;
    if (jj_scan_token(80)) return true;
    xsp = jj_scanpos;
    if (jj_scan_token(99)) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_74() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_124()) {
    jj_scanpos = xsp;
    if (jj_3R_125()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_126()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_89() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_204() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_203()) return true;
    return false;
  }

  private boolean jj_3R_47() {
    if (jj_3R_85()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_89()) jj_scanpos = xsp;
    if (jj_scan_token(K_BETWEEN)) return true;
    if (jj_3R_85()) return true;
    if (jj_scan_token(K_AND)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_253() {
    if (jj_scan_token(K_WHEN)) return true;
    if (jj_3R_69()) return true;
    if (jj_scan_token(K_THEN)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_205() {
    if (jj_scan_token(K_INTO)) return true;
    if (jj_3R_73()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_228()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_171() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(5)) jj_scanpos = xsp;
    if (jj_3R_37()) return true;
    return false;
  }

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

  private boolean jj_3R_46() {
    if (jj_3R_85()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_86()) jj_scanpos = xsp;
    if (jj_scan_token(K_IN)) return true;
    if (jj_scan_token(79)) return true;
    xsp = jj_scanpos;
    if (jj_3R_87()) {
    jj_scanpos = xsp;
    if (jj_3R_88()) return true;
    }
    if (jj_scan_token(80)) return true;
    return false;
  }

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

  private boolean jj_3R_252() {
    if (jj_scan_token(K_WHEN)) return true;
    if (jj_3R_214()) return true;
    if (jj_scan_token(K_THEN)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_199() {
    if (jj_scan_token(95)) return true;
    return false;
  }

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

  private boolean jj_3R_86() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_39() {
    if (jj_3R_73()) return true;
    if (jj_scan_token(81)) return true;
    if (jj_scan_token(82)) return true;
    return false;
  }

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

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

  private boolean jj_3_15() {
    if (jj_3R_46()) return true;
    return false;
  }

  private boolean jj_3R_149() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_199()) return true;
    }
    return false;
  }

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

  private boolean jj_3R_221() {
    if (jj_3R_69()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_245()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_246()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3R_198() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_167() {
    if (jj_scan_token(K_DISTINCT)) return true;
    return false;
  }

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

  private boolean jj_3R_227() {
    if (jj_3R_85()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_248()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3R_246() {
    if (jj_scan_token(K_ELSE)) return true;
    if (jj_3R_69()) return true;
    return false;
  }

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

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

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

  private boolean jj_3R_45() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_80()) {
    jj_scanpos = xsp;
    if (jj_3R_81()) {
    jj_scanpos = xsp;
    if (jj_3R_82()) {
    jj_scanpos = xsp;
    if (jj_3R_83()) {
    jj_scanpos = xsp;
    if (jj_3R_84()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_244() {
    if (jj_scan_token(K_ELSE)) return true;
    if (jj_3R_69()) return true;
    return false;
  }

  private boolean jj_3R_148() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_198()) return true;
    }
    return false;
  }

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

  private boolean jj_3R_197() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_225() {
    if (jj_scan_token(82)) return true;
    return false;
  }

  private boolean jj_3R_220() {
    Token xsp;
    if (jj_3R_243()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_243()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_244()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_162() {
    if (jj_scan_token(K_DISTINCT)) return true;
    return false;
  }

  private boolean jj_3R_203() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_225()) {
    jj_scanpos = xsp;
    if (jj_3R_226()) {
    jj_scanpos = xsp;
    if (jj_3R_227()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_147() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_197()) return true;
    }
    return false;
  }

  private boolean jj_3R_146() {
    if (jj_scan_token(K_CASE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_220()) {
    jj_scanpos = xsp;
    if (jj_3R_221()) return true;
    }
    if (jj_scan_token(K_END)) return true;
    return false;
  }

  private boolean jj_3R_191() {
    if (jj_scan_token(90)) return true;
    return false;
  }

  private boolean jj_3R_190() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(88)) {
    jj_scanpos = xsp;
    if (jj_scan_token(89)) return true;
    }
    return false;
  }

  private boolean jj_3R_189() {
    if (jj_scan_token(87)) return true;
    return false;
  }

  private boolean jj_3R_104() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_188() {
    if (jj_scan_token(86)) return true;
    return false;
  }

  private boolean jj_3R_102() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_187() {
    if (jj_scan_token(77)) return true;
    return false;
  }

  private boolean jj_3R_186() {
    if (jj_scan_token(85)) return true;
    return false;
  }

  private boolean jj_3R_153() {
    if (jj_3R_203()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_204()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_115() {
    if (jj_scan_token(101)) return true;
    if (jj_scan_token(S_CHAR_LITERAL)) return true;
    if (jj_scan_token(99)) return true;
    return false;
  }

  private boolean jj_3R_185() {
    if (jj_scan_token(84)) return true;
    return false;
  }

  private boolean jj_3R_68() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_104()) return true;
    }
    return false;
  }

  private boolean jj_3R_168() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(12)) {
    jj_scanpos = xsp;
    if (jj_scan_token(64)) return true;
    }
    return false;
  }

  private boolean jj_3R_67() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_102()) return true;
    }
    return false;
  }

  private boolean jj_3R_114() {
    if (jj_scan_token(100)) return true;
    if (jj_scan_token(S_CHAR_LITERAL)) return true;
    if (jj_scan_token(99)) return true;
    return false;
  }

  private boolean jj_3R_183() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_200() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_166() {
    if (jj_scan_token(K_ALL)) return true;
    return false;
  }

  private boolean jj_3R_121() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_166()) {
    jj_scanpos = xsp;
    if (jj_3R_167()) return true;
    }
    return false;
  }

  private boolean jj_3R_113() {
    if (jj_scan_token(98)) return true;
    if (jj_scan_token(S_CHAR_LITERAL)) return true;
    if (jj_scan_token(99)) return true;
    return false;
  }

  private boolean jj_3R_134() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_183()) jj_scanpos = xsp;
    if (jj_3R_184()) return true;
    xsp = jj_scanpos;
    if (jj_3R_185()) {
    jj_scanpos = xsp;
    if (jj_3R_186()) {
    jj_scanpos = xsp;
    if (jj_3R_187()) {
    jj_scanpos = xsp;
    if (jj_3R_188()) {
    jj_scanpos = xsp;
    if (jj_3R_189()) {
    jj_scanpos = xsp;
    if (jj_3R_190()) {
    jj_scanpos = xsp;
    if (jj_3R_191()) return true;
    }
    }
    }
    }
    }
    }
    if (jj_3R_184()) return true;
    return false;
  }

  private boolean jj_3R_66() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_scan_token(95)) return true;
    }
    return false;
  }

  private boolean jj_3R_65() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_scan_token(95)) return true;
    }
    return false;
  }

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

  private boolean jj_3R_63() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_scan_token(95)) return true;
    }
    return false;
  }

  private boolean jj_3R_150() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_3R_200()) return true;
    }
    return false;
  }

  private boolean jj_3_28() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_66()) jj_scanpos = xsp;
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_163() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(12)) {
    jj_scanpos = xsp;
    if (jj_scan_token(64)) return true;
    }
    return false;
  }

  private boolean jj_3_26() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_63()) jj_scanpos = xsp;
    if (jj_3R_64()) return true;
    return false;
  }

  private boolean jj_3_27() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_65()) jj_scanpos = xsp;
    if (jj_scan_token(S_DOUBLE)) return true;
    return false;
  }

  private boolean jj_3R_112() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_150()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_50()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_161() {
    if (jj_scan_token(K_ALL)) return true;
    return false;
  }

  private boolean jj_3R_117() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_161()) {
    jj_scanpos = xsp;
    if (jj_3R_162()) return true;
    }
    return false;
  }

  private boolean jj_3R_122() {
    if (jj_scan_token(K_UNION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_168()) jj_scanpos = xsp;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_111() {
    if (jj_scan_token(S_CHAR_LITERAL)) return true;
    return false;
  }

  private boolean jj_3_30() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_68()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_69()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

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

  private boolean jj_3_29() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_67()) jj_scanpos = xsp;
    if (jj_3R_36()) return true;
    return false;
  }

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

  private boolean jj_3R_44() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_78()) {
    jj_scanpos = xsp;
    if (jj_3R_79()) return true;
    }
    return false;
  }

  private boolean jj_3R_110() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_149()) jj_scanpos = xsp;
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_108() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_147()) jj_scanpos = xsp;
    if (jj_3R_64()) return true;
    return false;
  }

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

  private boolean jj_3R_109() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_148()) jj_scanpos = xsp;
    if (jj_scan_token(S_DOUBLE)) return true;
    return false;
  }

  private boolean jj_3R_251() {
    if (jj_scan_token(83)) return true;
    return false;
  }

  private boolean jj_3R_118() {
    if (jj_scan_token(K_UNION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_163()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

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

  private boolean jj_3R_216() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_182() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_216()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_43()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3_12() {
    if (jj_scan_token(K_AND)) return true;
    return false;
  }

  private boolean jj_3R_107() {
    if (jj_scan_token(83)) return true;
    return false;
  }

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

  private boolean jj_3R_60() {
    if (jj_scan_token(96)) return true;
    return false;
  }

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

  private boolean jj_3R_105() {
    if (jj_scan_token(K_NULL)) return true;
    return false;
  }

  private boolean jj_3R_181() {
    if (jj_3R_44()) return true;
    return false;
  }

  private boolean jj_3R_72() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(K_UNION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_121()) jj_scanpos = xsp;
    if (jj_3R_116()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_122()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_133() {
    if (jj_scan_token(K_AND)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_181()) {
    jj_scanpos = xsp;
    if (jj_3R_182()) return true;
    }
    return false;
  }

  private boolean jj_3R_62() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_93()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_69() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_105()) {
    jj_scanpos = xsp;
    if (jj_3R_106()) {
    jj_scanpos = xsp;
    if (jj_3R_107()) {
    jj_scanpos = xsp;
    if (jj_3R_108()) {
    jj_scanpos = xsp;
    if (jj_3R_109()) {
    jj_scanpos = xsp;
    if (jj_3R_110()) {
    jj_scanpos = xsp;
    if (jj_3_29()) {
    jj_scanpos = xsp;
    if (jj_3_30()) {
    jj_scanpos = xsp;
    if (jj_3R_111()) {
    jj_scanpos = xsp;
    if (jj_3R_112()) {
    jj_scanpos = xsp;
    if (jj_3R_113()) {
    jj_scanpos = xsp;
    if (jj_3R_114()) {
    jj_scanpos = xsp;
    if (jj_3R_115()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_71() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(80)) return true;
    if (jj_scan_token(K_UNION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_117()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(80)) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_118()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_119()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_120()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3R_234() {
    if (jj_scan_token(83)) return true;
    return false;
  }

  private boolean jj_3R_180() {
    if (jj_scan_token(K_NOT)) return true;
    return false;
  }

  private boolean jj_3R_132() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_180()) jj_scanpos = xsp;
    if (jj_scan_token(79)) return true;
    if (jj_3R_43()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_232() {
    if (jj_scan_token(83)) return true;
    return false;
  }

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

  private boolean jj_3R_38() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_71()) {
    jj_scanpos = xsp;
    if (jj_3R_72()) return true;
    }
    return false;
  }

  private boolean jj_3R_131() {
    if (jj_3R_44()) return true;
    return false;
  }

  private boolean jj_3R_76() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_131()) {
    jj_scanpos = xsp;
    if (jj_3R_132()) return true;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_133()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_96() {
    if (jj_scan_token(97)) return true;
    if (jj_3R_69()) return true;
    return false;
  }

  private boolean jj_3_10() {
    if (jj_scan_token(K_OR)) return true;
    return false;
  }

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

  private boolean jj_3R_56() {
    if (jj_scan_token(95)) return true;
    return false;
  }

  private boolean jj_3R_58() {
    if (jj_3R_69()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_96()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_77() {
    if (jj_scan_token(K_OR)) return true;
    if (jj_3R_76()) return true;
    return false;
  }

  private boolean jj_3R_222() {
    if (jj_scan_token(K_ON)) return true;
    if (jj_scan_token(79)) return true;
    if (jj_3R_153()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

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

  private boolean jj_3R_59() {
    if (jj_scan_token(82)) return true;
    return false;
  }

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

  private boolean jj_3R_43() {
    if (jj_3R_76()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_77()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

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

  private boolean jj_3R_240() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_214()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

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

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

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

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

  private boolean jj_3_24() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_59()) {
    jj_scanpos = xsp;
    if (jj_3R_60()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_61()) {
    jj_scanpos = xsp;
    if (jj_3R_62()) return true;
    }
    return false;
  }

  private boolean jj_3R_95() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_93()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_154() {
    if (jj_3R_205()) return true;
    return false;
  }

  private boolean jj_3R_201() {
    if (jj_scan_token(K_DISTINCT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_222()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_250() {
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

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

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

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

  private boolean jj_3R_214() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_239()) {
    jj_scanpos = xsp;
    if (jj_3R_240()) return true;
    }
    return false;
  }

  private boolean jj_3R_57() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_94()) {
    jj_scanpos = xsp;
    if (jj_3R_95()) return true;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_24()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_237() {
    if (jj_scan_token(K_ALL)) return true;
    return false;
  }

  private boolean jj_3R_236() {
    if (jj_scan_token(83)) return true;
    return false;
  }

  private boolean jj_3R_224() {
    if (jj_scan_token(83)) return true;
    return false;
  }

  private boolean jj_3R_151() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(12)) {
    jj_scanpos = xsp;
    if (jj_3R_201()) return true;
    }
    return false;
  }

  private boolean jj_3R_238() {
    if (jj_scan_token(K_OFFSET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_250()) {
    jj_scanpos = xsp;
    if (jj_3R_251()) return true;
    }
    return false;
  }

  private boolean jj_3R_235() {
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_223() {
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_55() {
    if (jj_scan_token(94)) return true;
    return false;
  }

  private boolean jj_3R_116() {
    if (jj_scan_token(K_SELECT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_151()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_152()) jj_scanpos = xsp;
    if (jj_3R_153()) return true;
    xsp = jj_scanpos;
    if (jj_3R_154()) jj_scanpos = xsp;
    if (jj_scan_token(K_FROM)) return true;
    if (jj_3R_74()) return true;
    if (jj_3R_155()) return true;
    xsp = jj_scanpos;
    if (jj_3R_156()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_157()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_158()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_159()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_160()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3R_42() {
    if (jj_scan_token(83)) return true;
    return false;
  }

  private boolean jj_3R_41() {
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_53() {
    if (jj_scan_token(93)) return true;
    return false;
  }

  private boolean jj_3R_213() {
    if (jj_scan_token(K_LIMIT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_235()) {
    jj_scanpos = xsp;
    if (jj_3R_236()) {
    jj_scanpos = xsp;
    if (jj_3R_237()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_238()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_202() {
    if (jj_scan_token(K_TOP)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_223()) {
    jj_scanpos = xsp;
    if (jj_3R_224()) return true;
    }
    return false;
  }

  private boolean jj_3R_233() {
    if (jj_scan_token(S_INTEGER)) return true;
    return false;
  }

  private boolean jj_3R_52() {
    if (jj_scan_token(92)) return true;
    return false;
  }

  private boolean jj_3R_139() {
    if (jj_3R_38()) return true;
    return false;
  }

  private boolean jj_3_22() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_55()) {
    jj_scanpos = xsp;
    if (jj_3R_56()) return true;
    }
    if (jj_3R_57()) return true;
    return false;
  }

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

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

  private boolean jj_3R_70() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(67)) {
    jj_scanpos = xsp;
    if (jj_scan_token(74)) return true;
    }
    return false;
  }

  private boolean jj_3R_212() {
    if (jj_scan_token(K_OFFSET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_233()) {
    jj_scanpos = xsp;
    if (jj_3R_234()) return true;
    }
    return false;
  }

  private boolean jj_3R_93() {
    if (jj_3R_57()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_22()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_92() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_139()) {
    jj_scanpos = xsp;
    if (jj_3R_140()) return true;
    }
    return false;
  }

  private boolean jj_3_8() {
    if (jj_scan_token(K_LIMIT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_41()) {
    jj_scanpos = xsp;
    if (jj_3R_42()) return true;
    }
    if (jj_scan_token(78)) return true;
    xsp = jj_scanpos;
    if (jj_3R_231()) {
    jj_scanpos = xsp;
    if (jj_3R_232()) return true;
    }
    return false;
  }

  private boolean jj_3_31() {
    if (jj_scan_token(79)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_70()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3_21() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_52()) {
    jj_scanpos = xsp;
    if (jj_3R_53()) return true;
    }
    if (jj_3R_54()) return true;
    return false;
  }

  private boolean jj_3R_123() {
    if (jj_3R_37()) return true;
    return false;
  }

  private boolean jj_3R_51() {
    if (jj_3R_54()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_21()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_165() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_8()) {
    jj_scanpos = xsp;
    if (jj_3R_212()) {
    jj_scanpos = xsp;
    if (jj_3R_213()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_4() {
    if (jj_3R_37()) return true;
    if (jj_scan_token(81)) return true;
    if (jj_3R_37()) return true;
    return false;
  }

  private boolean jj_3R_73() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_4()) {
    jj_scanpos = xsp;
    if (jj_3R_123()) return true;
    }
    return false;
  }

  private boolean jj_3R_247() {
    if (jj_scan_token(81)) return true;
    if (jj_3R_37()) return true;
    return false;
  }

  private boolean jj_3R_249() {
    if (jj_scan_token(K_DESC)) return true;
    return false;
  }

  private boolean jj_3R_141() {
    if (jj_scan_token(91)) return true;
    if (jj_3R_93()) return true;
    return false;
  }

  private boolean jj_3R_210() {
    if (jj_3R_85()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_230()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_230() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(18)) {
    jj_scanpos = xsp;
    if (jj_3R_249()) return true;
    }
    return false;
  }

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

  private boolean jj_3R_145() {
    if (jj_scan_token(82)) return true;
    return false;
  }

  private boolean jj_3R_54() {
    if (jj_3R_93()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_141()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_137() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_51()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_211() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_210()) return true;
    return false;
  }

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

  private boolean jj_3R_37() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(71)) {
    jj_scanpos = xsp;
    if (jj_scan_token(75)) return true;
    }
    return false;
  }

  private boolean jj_3R_103() {
    if (jj_scan_token(81)) return true;
    if (jj_3R_37()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_247()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_164() {
    if (jj_scan_token(K_ORDER)) return true;
    if (jj_scan_token(K_BY)) return true;
    if (jj_3R_210()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_211()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_194() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_85() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_136()) {
    jj_scanpos = xsp;
    if (jj_3R_137()) return true;
    }
    return false;
  }

  private boolean jj_3R_209() {
    if (jj_scan_token(K_HAVING)) return true;
    if (jj_3R_214()) return true;
    return false;
  }

  private boolean jj_3R_242() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(14)) {
    jj_scanpos = xsp;
    if (jj_scan_token(34)) return true;
    }
    if (jj_scan_token(79)) return true;
    if (jj_3R_50()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_229() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_215() {
    if (jj_scan_token(78)) return true;
    if (jj_3R_36()) return true;
    return false;
  }

  private boolean jj_3R_36() {
    if (jj_3R_37()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_103()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_208() {
    if (jj_scan_token(K_GROUP)) return true;
    if (jj_scan_token(K_BY)) return true;
    if (jj_3R_85()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_229()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_144() {
    if (jj_3R_138()) return true;
    return false;
  }

  private boolean jj_3R_241() {
    if (jj_scan_token(K_ALL)) return true;
    if (jj_scan_token(79)) return true;
    if (jj_3R_50()) return true;
    if (jj_scan_token(80)) return true;
    return false;
  }

  private boolean jj_3R_207() {
    if (jj_scan_token(K_WHERE)) return true;
    if (jj_3R_214()) return true;
    return false;
  }

  private boolean jj_3R_129() {
    if (jj_scan_token(78)) return true;
    return false;
  }

  private boolean jj_3R_179() {
    if (jj_scan_token(K_USING)) return true;
    if (jj_scan_token(79)) return true;
    if (jj_3R_36()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_215()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(80)) return true;
    return false;
  }

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

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

  private boolean jj_3R_178() {
    if (jj_scan_token(K_ON)) return true;
    if (jj_3R_214()) return true;
    return false;
  }

  private boolean jj_3R_130() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_178()) {
    jj_scanpos = xsp;
    if (jj_3R_179()) return true;
    }
    return false;
  }

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

  private boolean jj_3R_177() {
    if (jj_scan_token(K_INNER)) return true;
    return false;
  }

  private boolean jj_3R_184() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_217()) {
    jj_scanpos = xsp;
    if (jj_3R_218()) {
    jj_scanpos = xsp;
    if (jj_3R_219()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_176() {
    if (jj_scan_token(K_OUTER)) return true;
    return false;
  }

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

  private boolean jj_3_3() {
    if (jj_scan_token(79)) return true;
    return false;
  }

  private boolean jj_3R_174() {
    if (jj_scan_token(K_FULL)) return true;
    return false;
  }

  private boolean jj_3R_128() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_176()) {
    jj_scanpos = xsp;
    if (jj_3R_177()) return true;
    }
    return false;
  }

  private boolean jj_3R_173() {
    if (jj_scan_token(K_RIGHT)) return true;
    return false;
  }

  private boolean jj_3R_172() {
    if (jj_scan_token(K_LEFT)) return true;
    return false;
  }

  private boolean jj_3R_138() {
    if (jj_3R_85()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_194()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

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

  private boolean jj_3R_127() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_172()) {
    jj_scanpos = xsp;
    if (jj_3R_173()) {
    jj_scanpos = xsp;
    if (jj_3R_174()) {
    jj_scanpos = xsp;
    if (jj_3R_175()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_142() {
    if (jj_scan_token(81)) return true;
    if (jj_3R_37()) return true;
    return false;
  }

  private boolean jj_3R_75() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_127()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_128()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(26)) {
    jj_scanpos = xsp;
    if (jj_3R_129()) return true;
    }
    if (jj_3R_74()) return true;
    xsp = jj_scanpos;
    if (jj_3R_130()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_196() {
    if (jj_scan_token(K_ALL)) return true;
    return false;
  }

  private boolean jj_3_2() {
    if (jj_scan_token(79)) return true;
    if (jj_3R_36()) return true;
    return false;
  }

  /** Generated Token Manager. */
  public CCJSqlParserTokenManager token_source;
  SimpleCharStream jj_input_stream;
  /** Current token. */
  public Token token;
  /** Next token. */
  public Token jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  private int jj_gen;
  final private int[] jj_la1 = new int[153];
  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 {
      jj_la1_init_0();
      jj_la1_init_1();
      jj_la1_init_2();
      jj_la1_init_3();
   }
   private static void jj_la1_init_0() {
      jj_la1_0 = new int[] {0x2000000,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x20000,0x400000,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x800,0x1000,0x1000,0x80000,0x400000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x0,0x0,0x0,0x20,0x0,0x40800000,0x20,0x0,0x0,0x0,0x20,0xc000000,0x8000000,0x8000000,0x0,0x0,0x4000000,0x0,0x800,0x800,0x0,0x0,0x240000,0x240000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x10000,0x10000,0x40815000,0x10000,0x0,0x0,0x40800000,0x10000,0x40800000,0x10000,0x10000,0x0,0x10000,0x10000,0x0,0x0,0x40805000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40800000,0x0,0x80000000,0x0,0x80000000,0x0,0xc0800000,0x0,0x0,0x0,0x0,0x1000,0x1000,0x40800000,0x40801000,0x0,0x818000,0x818000,0x0,0x818000,0x8000,0x818000,0x0,0x0,0x0,0x0,0x818000,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_1() {
      jj_la1_1 = new int[] {0xa18e0010,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x2080000,0x2080000,0x0,0x0,0x0,0x0,0x2080000,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x10,0x80000,0x0,0x0,0x0,0x0,0x0,0x40,0x200,0x400000,0x8000,0x102000,0x0,0x0,0x100,0x0,0x0,0x8000,0x102000,0x0,0x0,0x100,0x0,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x80000,0x0,0x0,0x10015008,0x10010008,0x10010008,0x5000,0x5000,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100000,0x102000,0x0,0x0,0x0,0x0,0x0,0x0,0x20000004,0x0,0x0,0x0,0x20000000,0x0,0x20000000,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x20000004,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x2,0x20000000,0x0,0x20000000,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x8000000,0x8000000,0x0,0x8000000,0x8000800,0x8000000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x820,0x0,};
   }
   private static void jj_la1_init_2() {
      jj_la1_2 = new int[] {0x8000,0x1000,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x8000,0x8000,0x0,0x4000,0x4000,0x10000,0x8000,0x0,0x0,0x20000,0x20000,0x880,0x880,0x880,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x0,0x1,0x1,0x8000,0x4000,0x8000,0x4000,0x880,0x40000,0xc0088c8c,0x0,0x4000,0x8000,0x8880,0x880,0x4000,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,0x0,0x0,0x80008,0x80008,0x80008,0x80008,0x80008,0x0,0x0,0x80008,0x8000,0x0,0x8000,0x0,0x8000,0xc0088c8c,0x0,0x3000000,0x7f02000,0xc0088c8c,0x0,0xc0088c8c,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0xc0088c8c,0x0,0x8000,0x8000000,0x30000000,0xc0000000,0x8000,0x40000,0x8000,0x0,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0xc0000000,0x80000,0xc0008400,0x0,0x0,0x0,0x0,0xc0088c8c,0x0,0x880,0x20000,0x20000,0x1,0x1,0xc00c8c8c,0xc00c8c8d,0x0,0xa48c,0xa48c,0x4000,0xa48c,0x80,0xa48c,0x8000,0x408,0x408,0x4000,0xa48c,0x48c,0x48c,0x4000,0x4000,0x80,0x80,};
   }
   private static void jj_la1_init_3() {
      jj_la1_3 = 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,0x74,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x74,0x0,0x0,0x0,0x74,0x0,0x74,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x74,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x0,0x74,0x40,0x0,0x0,0x0,0x0,0x0,0x74,0x74,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
  final private JJCalls[] jj_2_rtns = new JJCalls[31];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public CCJSqlParser(java.io.InputStream stream) {
     this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public CCJSqlParser(java.io.InputStream stream, String encoding) {
    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
    token_source = new CCJSqlParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream) {
     ReInit(stream, null);
  }
  /** Reinitialise. */
  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;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor. */
  public CCJSqlParser(java.io.Reader stream) {
    jj_input_stream = new SimpleCharStream(stream, 1, 1);
    token_source = new CCJSqlParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  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;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor with generated Token Manager. */
  public CCJSqlParser(CCJSqlParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(CCJSqlParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 153; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  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;
          }
        }
      }
      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();
  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;
  }


/** Get the next Token. */
  final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

/** Get the specific Token. */
  final public Token getToken(int index) {
    Token t = token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  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.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
  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];
      }
      jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
        int[] oldentry = (int[])(it.next());
        if (oldentry.length == jj_expentry.length) {
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              continue jj_entries_loop;
            }
          }
          jj_expentries.add(jj_expentry);
          break jj_entries_loop;
        }
      }
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
    jj_expentries.clear();
    boolean[] la1tokens = new boolean[103];
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 153; 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;
          }
        }
      }
    }
    for (int i = 0; i < 103; i++) {
      if (la1tokens[i]) {
        jj_expentry = new int[1];
        jj_expentry[0] = i;
        jj_expentries.add(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] = jj_expentries.get(i);
    }
    return new ParseException(token, exptokseq, tokenImage);
  }

  /** Enable tracing. */
  final public void enable_tracing() {
  }

  /** Disable tracing. */
  final public void disable_tracing() {
  }

  private void jj_rescan_token() {
    jj_rescan = true;
    for (int i = 0; i < 31; 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;
          }
        }
        p = p.next;
      } while (p != null);
      } catch(LookaheadSuccess ls) { }
    }
    jj_rescan = false;
  }

  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;
  }

}
TOP

Related Classes of net.sf.jsqlparser.parser.CCJSqlParser$LookaheadSuccess

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.