All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.relique.jdbc.csv.ExpressionParser Maven / Gradle / Ivy

The newest version!
/* ExpressionParser.java */
/* Generated By:JavaCC: Do not edit this line. ExpressionParser.java */
package org.relique.jdbc.csv;

import java.sql.Date;
import java.sql.SQLException;
import java.sql.Time;
import java.util.Map;
import java.util.List;
import java.util.LinkedList;

public class ExpressionParser implements ExpressionParserConstants {
        private ParsedExpression content;
        private Date currentDate;
        private Time currentTime;
        private PlaceholderFactory placeholderFactory;

        public void parseLogicalExpression()throws ParseException
        {
                content = logicalExpression();
        }
        public void parseGroupByEntry()throws ParseException
        {
                content = groupByEntry();
        }
        public void parseOrderByEntry()throws ParseException
        {
                content = orderByEntry();
        }
        public void parseQueryEnvEntry()throws ParseException
        {
                content = queryEnvEntry();
        }
        public ParsedStatement parseSingleStatement(PlaceholderFactory factory)throws ParseException
        {
                /* Keep prepared statement place-holder counter */
                this.placeholderFactory = factory;
                ParsedStatement parsedStatement = singleStatement();
                return parsedStatement;
        }
        public List parseMultipleStatements(PlaceholderFactory factory)throws ParseException
        {
                /* Keep prepared statement place-holder counter */
                this.placeholderFactory = factory;
                List statements = multipleStatements();
                return statements;
        }
        public Object eval(Map env) throws SQLException
        {
                return content.eval(env);
        }
        public String toString()
        {
                return ""+content;
        }
        public Date getCurrentDate()
        {
                if (currentDate == null)
                {
                        long l = System.currentTimeMillis();
                        currentDate = new Date(l);
                        currentTime = new Time(l);
                        /* Remove any time component from the date */
                        currentDate = Date.valueOf(currentDate.toString());
                }
                return currentDate;
        }
        public Time getCurrentTime()
        {
                if (currentTime == null)
                {
                        long l = System.currentTimeMillis();
                        currentDate = new Date(l);
                        currentTime = new Time(l);
                        /* Remove any time component from the date */
                        currentDate = Date.valueOf(currentDate.toString());
                }
                return currentTime;
        }

  final public ParsedExpression logicalExpression() throws ParseException {Expression left;
    left = logicalOrExpression();
{if ("" != null) return new ParsedExpression(left);}
    throw new Error("Missing return statement in function");
}

  final public ParsedTable firstTableEntry() throws ParseException {String tableName;
        String tableAlias = null;
        Token t;
        ParsedStatement derivedTableStatement;
    if (jj_2_7(2)) {
      if (jj_2_1(2)) {
        t = jj_consume_token(QUOTEDTABLENAME);
      } else if (jj_2_2(2)) {
        t = jj_consume_token(TABLENAME);
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
tableName = StringConverter.removeQuotes(t.image);
      if (jj_2_4(2)) {
        if (jj_2_3(2)) {
          jj_consume_token(AS);
        } else {
          ;
        }
        t = jj_consume_token(NAME);
tableAlias = StringConverter.removeQuotes(t.image).toUpperCase();
      } else {
        ;
      }
{if ("" != null) return new ParsedTable(tableName, tableAlias);}
    } else if (jj_2_8(2)) {
      jj_consume_token(DERIVEDTABLEOPENPARENTHESIS);
      derivedTableStatement = selectStatement();
      jj_consume_token(CLOSEPARENTHESIS);
      if (jj_2_6(2)) {
        if (jj_2_5(2)) {
          jj_consume_token(AS);
        } else {
          ;
        }
        t = jj_consume_token(NAME);
tableAlias = StringConverter.removeQuotes(t.image).toUpperCase();
      } else {
        ;
      }
{if ("" != null) return new ParsedTable(derivedTableStatement, tableAlias);}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public LogicalExpression onEntry() throws ParseException {Expression left, right;
        String op;
        Token t;
    /*
    	 * A JOIN B ON A.ID = B.ID must have an equality comparison.
    	 */
            left = binaryOperation();
    t = jj_consume_token(EQUALS);
op = t.image;
    right = binaryOperation();
{if ("" != null) return new RelopExpression(op, left, right);}
    throw new Error("Missing return statement in function");
}

  final public ParsedTable tableEntry() throws ParseException {String tableName;
        String tableAlias = null;
        ParsedStatement derivedTableStatement;
        Token t;
    if (jj_2_13(2)) {
      t = jj_consume_token(NAME);
tableName = StringConverter.removeQuotes(t.image);
      if (jj_2_10(2)) {
        if (jj_2_9(2)) {
          jj_consume_token(AS);
        } else {
          ;
        }
        t = jj_consume_token(NAME);
tableAlias = StringConverter.removeQuotes(t.image).toUpperCase();
      } else {
        ;
      }
{if ("" != null) return new ParsedTable(tableName, tableAlias);}
    } else if (jj_2_14(2)) {
      jj_consume_token(OPENPARENTHESIS);
      derivedTableStatement = selectStatement();
      jj_consume_token(CLOSEPARENTHESIS);
      if (jj_2_12(2)) {
        if (jj_2_11(2)) {
          jj_consume_token(AS);
        } else {
          ;
        }
        t = jj_consume_token(NAME);
tableAlias = StringConverter.removeQuotes(t.image).toUpperCase();
      } else {
        ;
      }
{if ("" != null) return new ParsedTable(derivedTableStatement, tableAlias);}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public ParsedTable joinedTableEntry() throws ParseException {LogicalExpression joinClause;
        Token t;
        ParsedTable joinedTable;
    if (jj_2_21(2)) {
      if (jj_2_15(2)) {
        jj_consume_token(COMMA);
      } else if (jj_2_16(2)) {
        jj_consume_token(CROSS);
        jj_consume_token(JOIN);
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      joinedTable = tableEntry();
{if ("" != null) return new ParsedTable(JoinType.CROSS, null, joinedTable);}
    } else if (jj_2_22(2)) {
      if (jj_2_17(2)) {
        jj_consume_token(INNER);
      } else {
        ;
      }
      jj_consume_token(JOIN);
      joinedTable = tableEntry();
      jj_consume_token(ON);
      joinClause = onEntry();
{if ("" != null) return new ParsedTable(JoinType.INNER, joinClause, joinedTable);}
    } else if (jj_2_23(2)) {
      jj_consume_token(LEFT);
      if (jj_2_18(2)) {
        jj_consume_token(OUTER);
      } else {
        ;
      }
      jj_consume_token(JOIN);
      joinedTable = tableEntry();
      jj_consume_token(ON);
      joinClause = onEntry();
{if ("" != null) return new ParsedTable(JoinType.LEFT_OUTER, joinClause, joinedTable);}
    } else if (jj_2_24(2)) {
      jj_consume_token(RIGHT);
      if (jj_2_19(2)) {
        jj_consume_token(OUTER);
      } else {
        ;
      }
      jj_consume_token(JOIN);
      joinedTable = tableEntry();
      jj_consume_token(ON);
      joinClause = onEntry();
{if ("" != null) return new ParsedTable(JoinType.RIGHT_OUTER, joinClause, joinedTable);}
    } else if (jj_2_25(2)) {
      jj_consume_token(FULL);
      if (jj_2_20(2)) {
        jj_consume_token(OUTER);
      } else {
        ;
      }
      jj_consume_token(JOIN);
      joinedTable = tableEntry();
      jj_consume_token(ON);
      joinClause = onEntry();
{if ("" != null) return new ParsedTable(JoinType.FULL_OUTER, joinClause, joinedTable);}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public ParsedExpression groupByEntry() throws ParseException {Expression left;
    left = binaryOperation();
{if ("" != null) return new ParsedExpression(left);}
    throw new Error("Missing return statement in function");
}

  final public ParsedExpression orderByEntry() throws ParseException {Expression left;
        String order = "ASC";
        Token t;
    left = binaryOperation();
    if (jj_2_28(2)) {
      if (jj_2_26(2)) {
        t = jj_consume_token(ASC);
order=t.image;
      } else if (jj_2_27(2)) {
        t = jj_consume_token(DESC);
order=t.image;
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
    } else {
      ;
    }
{if ("" != null) return new ParsedExpression(new OrderByEntry(left, order));}
    throw new Error("Missing return statement in function");
}

  final public List multipleStatements() throws ParseException {List statements = new LinkedList();
        ParsedStatement parsedStatement;
    parsedStatement = selectStatement();
statements.add(parsedStatement);
    label_1:
    while (true) {
      if (jj_2_29(2)) {
        ;
      } else {
        break label_1;
      }
      jj_consume_token(SEMICOLON);
      if (jj_2_30(2)) {
        parsedStatement = selectStatement();
statements.add(parsedStatement);
      } else {
        ;
      }
    }
    jj_consume_token(0);
{if ("" != null) return statements;}
    throw new Error("Missing return statement in function");
}

  final public ParsedStatement singleStatement() throws ParseException {ParsedStatement parsedStatement;
    parsedStatement = selectStatement();
    if (jj_2_31(2)) {
      jj_consume_token(SEMICOLON);
    } else {
      ;
    }
    jj_consume_token(0);
{if ("" != null) return parsedStatement;}
    throw new Error("Missing return statement in function");
}

  final public ParsedStatement selectStatement() throws ParseException {List result = new LinkedList();
        ParsedExpression expr;
        boolean isDistinct = false;
        ParsedTable tableEntry;
        ParsedTable joinedTableEntry;
        List tableEntries = new LinkedList();
        ParsedExpression whereClause = null;
        ParsedExpression entry;
        List groupByEntries = new LinkedList();
        ParsedExpression havingClause = null;
        List orderByEntries = new LinkedList();
    Expression limitExp = null;
    Expression offsetExp = null;
        Token t;
    jj_consume_token(SELECT);
    if (jj_2_32(2)) {
      jj_consume_token(DISTINCT);
isDistinct = true;
    } else {
      ;
    }
    expr = queryEnvEntry();
result.add(expr);
    label_2:
    while (true) {
      if (jj_2_33(2)) {
        ;
      } else {
        break label_2;
      }
      jj_consume_token(COMMA);
      expr = queryEnvEntry();
result.add(expr);
    }
    if (jj_2_47(2)) {
      jj_consume_token(FROM);
      tableEntry = firstTableEntry();
tableEntries.add(tableEntry);
      label_3:
      while (true) {
        if (jj_2_34(2)) {
          ;
        } else {
          break label_3;
        }
        joinedTableEntry = joinedTableEntry();
tableEntries.add(joinedTableEntry);
      }
      if (jj_2_35(2)) {
        jj_consume_token(WHERE);
        whereClause = logicalExpression();
      } else {
        ;
      }
      if (jj_2_38(2)) {
        jj_consume_token(GROUP);
        jj_consume_token(BY);
        entry = groupByEntry();
groupByEntries.add(entry);
        label_4:
        while (true) {
          if (jj_2_36(2)) {
            ;
          } else {
            break label_4;
          }
          jj_consume_token(COMMA);
          entry = groupByEntry();
groupByEntries.add(entry);
        }
        if (jj_2_37(2)) {
          jj_consume_token(HAVING);
          havingClause = logicalExpression();
        } else {
          ;
        }
      } else {
        ;
      }
      if (jj_2_40(2)) {
        jj_consume_token(ORDER);
        jj_consume_token(BY);
        entry = orderByEntry();
orderByEntries.add(entry);
        label_5:
        while (true) {
          if (jj_2_39(2)) {
            ;
          } else {
            break label_5;
          }
          jj_consume_token(COMMA);
          entry = orderByEntry();
orderByEntries.add(entry);
        }
      } else {
        ;
      }
      if (jj_2_46(2)) {
        if (jj_2_41(2)) {
          jj_consume_token(LIMIT);
          limitExp = numericConstant();
        } else if (jj_2_42(2)) {
          jj_consume_token(LIMIT);
          limitExp = simpleExpression();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        if (jj_2_45(2)) {
          if (jj_2_43(2)) {
            jj_consume_token(OFFSET);
            offsetExp = numericConstant();
          } else if (jj_2_44(2)) {
            jj_consume_token(OFFSET);
            offsetExp = simpleExpression();
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
        } else {
          ;
        }
      } else {
        ;
      }
    } else {
      ;
    }
{if ("" != null) return new ParsedStatement(result, isDistinct, tableEntries, whereClause, groupByEntries, havingClause, orderByEntries, limitExp, offsetExp);}
    throw new Error("Missing return statement in function");
}

  final public ParsedExpression queryEnvEntry() throws ParseException {Expression expression, result, asterisk;
        Expression alias = null;
        Token t;
    if (jj_2_52(2)) {
      expression = binaryOperation();
      if (jj_2_49(2)) {
        if (jj_2_48(2)) {
          jj_consume_token(AS);
        } else {
          ;
        }
        alias = columnAlias();
      } else {
        ;
      }
if (alias != null)
                        result = new QueryEnvEntry(((ColumnName)alias).getColumnName(), expression);
                else if (expression instanceof ColumnName)
                        result = new QueryEnvEntry(((ColumnName)expression).getColumnName(), expression);
                else
                        result = new QueryEnvEntry(expression.toString(), expression);
                {if ("" != null) return new ParsedExpression(result);}
    } else if (jj_2_53(2)) {
      if (jj_2_50(2)) {
        t = jj_consume_token(ASTERISK);
      } else if (jj_2_51(2)) {
        t = jj_consume_token(NAMEASTERISK);
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
asterisk = new AsteriskExpression(t.image);
                {if ("" != null) return new ParsedExpression(new QueryEnvEntry(t.image, asterisk));}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public Expression logicalOrExpression() throws ParseException {Expression left, right;
    left = logicalAndExpression();
    label_6:
    while (true) {
      if (jj_2_54(2)) {
        ;
      } else {
        break label_6;
      }
      jj_consume_token(OR);
      right = logicalAndExpression();
left = new OrExpression(left, right);
    }
{if ("" != null) return left;}
    throw new Error("Missing return statement in function");
}

  final public Expression logicalAndExpression() throws ParseException {Expression left, right;
    left = logicalUnaryExpression();
    label_7:
    while (true) {
      if (jj_2_55(2)) {
        ;
      } else {
        break label_7;
      }
      jj_consume_token(AND);
      right = logicalUnaryExpression();
left = new AndExpression(left, right);
    }
{if ("" != null) return left;}
    throw new Error("Missing return statement in function");
}

  final public Expression logicalUnaryExpression() throws ParseException {Expression arg;
        ParsedStatement parsedStatement;
    if (jj_2_56(2)) {
      jj_consume_token(NOT);
      arg = logicalUnaryExpression();
{if ("" != null) return new NotExpression(arg);}
    } else if (jj_2_57(2)) {
      jj_consume_token(EXISTS);
      jj_consume_token(OPENPARENTHESIS);
      parsedStatement = selectStatement();
      jj_consume_token(CLOSEPARENTHESIS);
arg = new ExistsExpression(new SubQueryExpression(parsedStatement));
                {if ("" != null) return arg;}
    } else if (jj_2_58(2)) {
      arg = relationalExpression();
{if ("" != null) return arg;}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public LogicalExpression inListExpression(Expression arg) throws ParseException {Expression arg2;
        List inEntries = new LinkedList();
        ParsedStatement parsedStatement;
    if (jj_2_60(2)) {
      arg2 = binaryOperation();
inEntries.add(arg2);
      label_8:
      while (true) {
        if (jj_2_59(2)) {
          ;
        } else {
          break label_8;
        }
        jj_consume_token(COMMA);
        arg2 = binaryOperation();
inEntries.add(arg2);
      }
{if ("" != null) return new InExpression(arg, inEntries);}
    } else if (jj_2_61(2)) {
      parsedStatement = selectStatement();
{if ("" != null) return new InExpression(arg, new SubQueryExpression(parsedStatement));}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public Expression relationalExpression() throws ParseException {Expression arg1, arg2;
        Expression arg3 = null;
        LogicalExpression expr;
        String op;
        boolean negate = false;
    arg1 = binaryOperation();
    if (jj_2_71(2)) {
      if (jj_2_68(2)) {
        op = relOp();
        arg2 = binaryOperation();
arg1 = new RelopExpression(op, arg1, arg2);
      } else if (jj_2_69(2)) {
        if (jj_2_62(2)) {
          jj_consume_token(NOT);
negate=true;
        } else {
          ;
        }
        if (jj_2_64(2)) {
          jj_consume_token(BETWEEN);
          arg2 = binaryOperation();
          jj_consume_token(AND);
          arg3 = binaryOperation();
expr = new BetweenExpression(arg1, arg2, arg3);
                if (negate)
                        expr = new NotExpression(expr);
                arg1 = expr;
        } else if (jj_2_65(2)) {
          jj_consume_token(LIKE);
          arg2 = binaryOperation();
          if (jj_2_63(2)) {
            jj_consume_token(ESCAPE);
            arg3 = binaryOperation();
          } else {
            ;
          }
expr = new LikeExpression(arg1, arg2, arg3);
                if (negate)
                        expr = new NotExpression(expr);
                arg1 = expr;
        } else if (jj_2_66(2)) {
          jj_consume_token(IN);
          jj_consume_token(OPENPARENTHESIS);
          expr = inListExpression(arg1);
          jj_consume_token(CLOSEPARENTHESIS);
if (negate)
                        expr = new NotExpression(expr);
                arg1 = expr;
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
      } else if (jj_2_70(2)) {
        jj_consume_token(IS);
        if (jj_2_67(2)) {
          jj_consume_token(NOT);
negate=true;
        } else {
          ;
        }
        jj_consume_token(NULL);
expr = new IsNullExpression(arg1);
                if (negate)
                        expr = new NotExpression(expr);
                arg1 = expr;
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
    } else {
      ;
    }
{if ("" != null) return arg1;}
    throw new Error("Missing return statement in function");
}

  final public String relOp() throws ParseException {Token t;
    if (jj_2_72(2)) {
      t = jj_consume_token(GREATERTHAN);
    } else if (jj_2_73(2)) {
      t = jj_consume_token(LESSTHAN);
    } else if (jj_2_74(2)) {
      t = jj_consume_token(GREATERTHANEQUALS);
    } else if (jj_2_75(2)) {
      t = jj_consume_token(LESSTHANEQUALS);
    } else if (jj_2_76(2)) {
      t = jj_consume_token(NOTEQUALS);
    } else if (jj_2_77(2)) {
      t = jj_consume_token(EQUALS);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
{if ("" != null) return new String(t.image);}
    throw new Error("Missing return statement in function");
}

  final public String binAddOp() throws ParseException {Token t;
    if (jj_2_78(2)) {
      t = jj_consume_token(PLUS);
    } else if (jj_2_79(2)) {
      t = jj_consume_token(MINUS);
    } else if (jj_2_80(2)) {
      t = jj_consume_token(CONCAT);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
{if ("" != null) return t.image;}
    throw new Error("Missing return statement in function");
}

  final public String binMultiplyOp() throws ParseException {Token t;
    if (jj_2_81(2)) {
      t = jj_consume_token(ASTERISK);
    } else if (jj_2_82(2)) {
      t = jj_consume_token(DIVIDE);
    } else if (jj_2_83(2)) {
      t = jj_consume_token(MODULO);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
{if ("" != null) return t.image;}
    throw new Error("Missing return statement in function");
}

  final public Expression countOperation() throws ParseException {Expression arg;
        Token t;
    if (jj_2_84(2)) {
      t = jj_consume_token(ASTERISK);
{if ("" != null) return new AsteriskExpression(t.image);}
    } else if (jj_2_85(2)) {
      arg = binaryOperation();
{if ("" != null) return arg;}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public Expression binaryOperation() throws ParseException {Expression left, right;
        String op;
    left = multiplyOperation();
    label_9:
    while (true) {
      if (jj_2_86(2)) {
        ;
      } else {
        break label_9;
      }
      op = binAddOp();
      right = multiplyOperation();
left = new BinaryOperation(op, left, right);
    }
{if ("" != null) return left;}
    throw new Error("Missing return statement in function");
}

  final public Expression multiplyOperation() throws ParseException {Expression left, right;
        String op;
    left = simpleExpression();
    label_10:
    while (true) {
      if (jj_2_87(2)) {
        ;
      } else {
        break label_10;
      }
      op = binMultiplyOp();
      right = simpleExpression();
left = new BinaryOperation(op, left, right);
    }
{if ("" != null) return left;}
    throw new Error("Missing return statement in function");
}

  final public Expression simpleExpression() throws ParseException {List args = new LinkedList();
        Expression arg;
        Expression arg2 = null;
        Expression arg3 = null;
        boolean isDistinct;
        ParsedStatement parsedStatement;
        Token t;
    if (jj_2_105(2)) {
      jj_consume_token(OPENPARENTHESIS);
      parsedStatement = selectStatement();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SubQueryExpression(parsedStatement);}
    } else if (jj_2_106(2)) {
      jj_consume_token(OPENPARENTHESIS);
      arg = logicalOrExpression();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return arg;}
    } else if (jj_2_107(2)) {
      jj_consume_token(UPPER);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLUpperFunction(arg);}
    } else if (jj_2_108(2)) {
      jj_consume_token(LOWER);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLLowerFunction(arg);}
    } else if (jj_2_109(2)) {
      jj_consume_token(TRIM);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      if (jj_2_88(2)) {
        jj_consume_token(COMMA);
        arg2 = binaryOperation();
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLTrimFunction(arg, arg2, SQLTrimFunction.Type.BOTH);}
    } else if (jj_2_110(2)) {
      jj_consume_token(LTRIM);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      if (jj_2_89(2)) {
        jj_consume_token(COMMA);
        arg2 = binaryOperation();
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLTrimFunction(arg, arg2, SQLTrimFunction.Type.LEADING);}
    } else if (jj_2_111(2)) {
      jj_consume_token(RTRIM);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      if (jj_2_90(2)) {
        jj_consume_token(COMMA);
        arg2 = binaryOperation();
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLTrimFunction(arg, arg2, SQLTrimFunction.Type.TRAILING);}
    } else if (jj_2_112(2)) {
      jj_consume_token(SUBSTRING);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(COMMA);
      arg2 = binaryOperation();
      if (jj_2_91(2)) {
        jj_consume_token(COMMA);
        arg3 = binaryOperation();
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLSubstringFunction(arg, arg2, arg3);}
    } else if (jj_2_113(2)) {
      jj_consume_token(REPLACE);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(COMMA);
      arg2 = binaryOperation();
      jj_consume_token(COMMA);
      arg3 = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLReplaceFunction(arg, arg2, arg3);}
    } else if (jj_2_114(2)) {
      jj_consume_token(LENGTH);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLLengthFunction(arg);}
    } else if (jj_2_115(2)) {
      jj_consume_token(RANDOM);
      jj_consume_token(OPENPARENTHESIS);
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLRandomFunction();}
    } else if (jj_2_116(2)) {
      jj_consume_token(ROUND);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      if (jj_2_92(2)) {
        jj_consume_token(COMMA);
        arg2 = binaryOperation();
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLRoundFunction(arg, arg2);}
    } else if (jj_2_117(2)) {
      jj_consume_token(DAYOFMONTH);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLDayOfMonthFunction(arg);}
    } else if (jj_2_118(2)) {
      jj_consume_token(MONTH);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLMonthFunction(arg);}
    } else if (jj_2_119(2)) {
      jj_consume_token(YEAR);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLYearFunction(arg);}
    } else if (jj_2_120(2)) {
      jj_consume_token(HOUROFDAY);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLHourOfDayFunction(arg);}
    } else if (jj_2_121(2)) {
      jj_consume_token(MINUTE);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLMinuteFunction(arg);}
    } else if (jj_2_122(2)) {
      jj_consume_token(SECOND);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLSecondFunction(arg);}
    } else if (jj_2_123(2)) {
      jj_consume_token(NULLIF);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(COMMA);
      arg2 = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLNullIfFunction(arg, arg2);}
    } else if (jj_2_124(2)) {
      jj_consume_token(ABS);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLAbsFunction(arg);}
    } else if (jj_2_125(2)) {
      jj_consume_token(COALESCE);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
args.add(arg);
      label_11:
      while (true) {
        if (jj_2_93(2)) {
          ;
        } else {
          break label_11;
        }
        jj_consume_token(COMMA);
        arg = binaryOperation();
args.add(arg);
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLCoalesceFunction(args);}
    } else if (jj_2_126(2)) {
      jj_consume_token(TO_ARRAY);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_94(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
args.add(arg);
      label_12:
      while (true) {
        if (jj_2_95(2)) {
          ;
        } else {
          break label_12;
        }
        jj_consume_token(COMMA);
        arg = binaryOperation();
args.add(arg);
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLToArrayFunction(isDistinct, args);}
    } else if (jj_2_127(2)) {
      jj_consume_token(TO_NUMBER);
      jj_consume_token(OPENPARENTHESIS);
      arg = binaryOperation();
      jj_consume_token(COMMA);
      arg2 = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLToNumberFunction(arg, arg2);}
    } else if (jj_2_128(2)) {
      jj_consume_token(LINE_NUMBER);
      jj_consume_token(OPENPARENTHESIS);
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLLineNumberFunction();}
    } else if (jj_2_129(2)) {
      jj_consume_token(COUNT);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_96(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = countOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLCountFunction(isDistinct, arg);}
    } else if (jj_2_130(2)) {
      jj_consume_token(MAX);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_97(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLMaxFunction(isDistinct, arg);}
    } else if (jj_2_131(2)) {
      jj_consume_token(MIN);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_98(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLMinFunction(isDistinct, arg);}
    } else if (jj_2_132(2)) {
      jj_consume_token(SUM);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_99(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLSumFunction(isDistinct, arg);}
    } else if (jj_2_133(2)) {
      jj_consume_token(AVG);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_100(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLAvgFunction(isDistinct, arg);}
    } else if (jj_2_134(2)) {
      jj_consume_token(STRING_AGG);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_101(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(COMMA);
      arg2 = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLStringAggFunction(isDistinct, arg, arg2);}
    } else if (jj_2_135(2)) {
      jj_consume_token(ARRAY_AGG);
      jj_consume_token(OPENPARENTHESIS);
isDistinct = false;
      if (jj_2_102(2)) {
        jj_consume_token(DISTINCT);
isDistinct = true;
      } else {
        ;
      }
      arg = binaryOperation();
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLArrayAggFunction(isDistinct, arg);}
    } else if (jj_2_136(2)) {
      t = jj_consume_token(NAME);
      jj_consume_token(OPENPARENTHESIS);
      if (jj_2_104(2)) {
        arg = binaryOperation();
args.add(arg);
        label_13:
        while (true) {
          if (jj_2_103(2)) {
            ;
          } else {
            break label_13;
          }
          jj_consume_token(COMMA);
          arg = binaryOperation();
args.add(arg);
        }
      } else {
        ;
      }
      jj_consume_token(CLOSEPARENTHESIS);
{if ("" != null) return new SQLUserFunction(t.image, args);}
    } else if (jj_2_137(2)) {
      arg = searchedCaseExpression();
{if ("" != null) return arg;}
    } else if (jj_2_138(2)) {
      arg = simpleCaseExpression();
{if ("" != null) return arg;}
    } else if (jj_2_139(2)) {
      arg = columnName();
{if ("" != null) return arg;}
    } else if (jj_2_140(2)) {
      arg = numericConstant();
{if ("" != null) return arg;}
    } else if (jj_2_141(2)) {
      arg = stringConstant();
{if ("" != null) return arg;}
    } else if (jj_2_142(2)) {
      jj_consume_token(NULL);
{if ("" != null) return new NullConstant();}
    } else if (jj_2_143(2)) {
      jj_consume_token(CURRENT_DATE);
{if ("" != null) return new CurrentDateConstant(this);}
    } else if (jj_2_144(2)) {
      jj_consume_token(CURRENT_TIME);
{if ("" != null) return new CurrentTimeConstant(this);}
    } else if (jj_2_145(2)) {
      jj_consume_token(PLACEHOLDER);
{if ("" != null) return this.placeholderFactory.createPlaceholder();}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
}

  final public Expression searchedCaseExpression() throws ParseException {List conditions = new LinkedList();
        List values = new LinkedList();
        Expression arg;
        Expression arg2;
        Expression arg3 = null;
    jj_consume_token(CASE);
    label_14:
    while (true) {
      if (jj_2_146(2)) {
        ;
      } else {
        break label_14;
      }
      jj_consume_token(WHEN);
      arg = logicalOrExpression();
conditions.add(arg);
      jj_consume_token(THEN);
      arg2 = binaryOperation();
values.add(arg2);
    }
    if (jj_2_147(2)) {
      jj_consume_token(ELSE);
      arg3 = binaryOperation();
    } else {
      ;
    }
    jj_consume_token(END);
{if ("" != null) return new SearchedCaseExpression(conditions, values, arg3);}
    throw new Error("Missing return statement in function");
}

  final public Expression simpleCaseExpression() throws ParseException {List switches = new LinkedList();
        List values = new LinkedList();
        Expression arg;
        Expression arg2;
        Expression arg3;
        Expression arg4 = null;
    jj_consume_token(CASE);
    arg = binaryOperation();
    label_15:
    while (true) {
      if (jj_2_148(2)) {
        ;
      } else {
        break label_15;
      }
      jj_consume_token(WHEN);
      arg2 = binaryOperation();
switches.add(arg2);
      jj_consume_token(THEN);
      arg3 = binaryOperation();
values.add(arg3);
    }
    if (jj_2_149(2)) {
      jj_consume_token(ELSE);
      arg4 = binaryOperation();
    } else {
      ;
    }
    jj_consume_token(END);
{if ("" != null) return new SimpleCaseExpression(arg, switches, values, arg4);}
    throw new Error("Missing return statement in function");
}

  final public Expression columnName() throws ParseException {Token t;
    if (jj_2_150(2)) {
      t = jj_consume_token(NAME);
    } else if (jj_2_151(2)) {
      t = jj_consume_token(DAYOFMONTH);
    } else if (jj_2_152(2)) {
      t = jj_consume_token(MONTH);
    } else if (jj_2_153(2)) {
      t = jj_consume_token(YEAR);
    } else if (jj_2_154(2)) {
      t = jj_consume_token(HOUROFDAY);
    } else if (jj_2_155(2)) {
      t = jj_consume_token(MINUTE);
    } else if (jj_2_156(2)) {
      t = jj_consume_token(SECOND);
    } else if (jj_2_157(2)) {
      t = jj_consume_token(LOWER);
    } else if (jj_2_158(2)) {
      t = jj_consume_token(RANDOM);
    } else if (jj_2_159(2)) {
      t = jj_consume_token(ROUND);
    } else if (jj_2_160(2)) {
      t = jj_consume_token(UPPER);
    } else if (jj_2_161(2)) {
      t = jj_consume_token(TRIM);
    } else if (jj_2_162(2)) {
      t = jj_consume_token(LTRIM);
    } else if (jj_2_163(2)) {
      t = jj_consume_token(RTRIM);
    } else if (jj_2_164(2)) {
      t = jj_consume_token(SUBSTRING);
    } else if (jj_2_165(2)) {
      t = jj_consume_token(REPLACE);
    } else if (jj_2_166(2)) {
      t = jj_consume_token(LENGTH);
    } else if (jj_2_167(2)) {
      t = jj_consume_token(NULLIF);
    } else if (jj_2_168(2)) {
      t = jj_consume_token(ABS);
    } else if (jj_2_169(2)) {
      t = jj_consume_token(COALESCE);
    } else if (jj_2_170(2)) {
      t = jj_consume_token(AVG);
    } else if (jj_2_171(2)) {
      t = jj_consume_token(COUNT);
    } else if (jj_2_172(2)) {
      t = jj_consume_token(MAX);
    } else if (jj_2_173(2)) {
      t = jj_consume_token(MIN);
    } else if (jj_2_174(2)) {
      t = jj_consume_token(SUM);
      t = jj_consume_token(STRING_AGG);
    } else if (jj_2_175(2)) {
      t = jj_consume_token(ARRAY_AGG);
    } else if (jj_2_176(2)) {
      t = jj_consume_token(TO_ARRAY);
    } else if (jj_2_177(2)) {
      t = jj_consume_token(TO_NUMBER);
    } else if (jj_2_178(2)) {
      t = jj_consume_token(LINE_NUMBER);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
{if ("" != null) return new ColumnName(StringConverter.removeQuotes(t.image));}
    throw new Error("Missing return statement in function");
}

  final public Expression numericConstant() throws ParseException {Token t;
        String sign = "";
        String digits;
        boolean isLong;
    if (jj_2_179(2)) {
      t = jj_consume_token(MINUS);
sign=t.image;
    } else {
      ;
    }
    if (jj_2_180(2)) {
      t = jj_consume_token(UNSIGNEDNUMBER);
    } else if (jj_2_181(2)) {
      t = jj_consume_token(UNSIGNEDINT);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
Number value = null;
                digits = sign+t.image;
                isLong = false;
                if (digits.endsWith("L") || digits.endsWith("l"))
                {
                        digits = digits.substring(0, digits.length() - 1);
                        isLong = true;
                }
                try
                {
                        value = Long.valueOf(digits);
                        if (isLong == false && value.longValue() >= Integer.MIN_VALUE && value.longValue() <= Integer.MAX_VALUE)
                                value = Integer.valueOf(value.intValue());
                }
                catch (NumberFormatException e)
                {
                        value = Double.valueOf(digits);
                }
                {if ("" != null) return new NumericConstant(value);}
    throw new Error("Missing return statement in function");
}

  final public Expression stringConstant() throws ParseException {String left, right;
    left = stringConstantAtom();
    label_16:
    while (true) {
      if (jj_2_182(2)) {
        ;
      } else {
        break label_16;
      }
      right = stringConstantAtom();
left = left+"'"+right;
    }
{if ("" != null) return new StringConstant(left);}
    throw new Error("Missing return statement in function");
}

  final public String stringConstantAtom() throws ParseException {Token t;
    t = jj_consume_token(STRING);
{if ("" != null) return t.image.substring(1, t.image.length()-1);}
    throw new Error("Missing return statement in function");
}

  final public Expression columnAlias() throws ParseException {Token t;
    if (jj_2_183(2)) {
      t = jj_consume_token(NAME);
    } else if (jj_2_184(2)) {
      t = jj_consume_token(DAYOFMONTH);
    } else if (jj_2_185(2)) {
      t = jj_consume_token(MONTH);
    } else if (jj_2_186(2)) {
      t = jj_consume_token(YEAR);
    } else if (jj_2_187(2)) {
      t = jj_consume_token(HOUROFDAY);
    } else if (jj_2_188(2)) {
      t = jj_consume_token(MINUTE);
    } else if (jj_2_189(2)) {
      t = jj_consume_token(SECOND);
    } else if (jj_2_190(2)) {
      t = jj_consume_token(LOWER);
    } else if (jj_2_191(2)) {
      t = jj_consume_token(RANDOM);
    } else if (jj_2_192(2)) {
      t = jj_consume_token(ROUND);
    } else if (jj_2_193(2)) {
      t = jj_consume_token(UPPER);
    } else if (jj_2_194(2)) {
      t = jj_consume_token(TRIM);
    } else if (jj_2_195(2)) {
      t = jj_consume_token(LTRIM);
    } else if (jj_2_196(2)) {
      t = jj_consume_token(RTRIM);
    } else if (jj_2_197(2)) {
      t = jj_consume_token(SUBSTRING);
    } else if (jj_2_198(2)) {
      t = jj_consume_token(REPLACE);
    } else if (jj_2_199(2)) {
      t = jj_consume_token(LENGTH);
    } else if (jj_2_200(2)) {
      t = jj_consume_token(NULLIF);
    } else if (jj_2_201(2)) {
      t = jj_consume_token(ABS);
    } else if (jj_2_202(2)) {
      t = jj_consume_token(COALESCE);
    } else if (jj_2_203(2)) {
      t = jj_consume_token(AVG);
    } else if (jj_2_204(2)) {
      t = jj_consume_token(COUNT);
    } else if (jj_2_205(2)) {
      t = jj_consume_token(MAX);
    } else if (jj_2_206(2)) {
      t = jj_consume_token(MIN);
    } else if (jj_2_207(2)) {
      t = jj_consume_token(SUM);
    } else if (jj_2_208(2)) {
      t = jj_consume_token(STRING_AGG);
    } else if (jj_2_209(2)) {
      t = jj_consume_token(ARRAY_AGG);
    } else if (jj_2_210(2)) {
      t = jj_consume_token(TO_ARRAY);
    } else if (jj_2_211(2)) {
      t = jj_consume_token(TO_NUMBER);
    } else if (jj_2_212(2)) {
      t = jj_consume_token(LINE_NUMBER);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
{if ("" != null) return new ColumnName(StringConverter.removeQuotes(t.image));}
    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_2_32(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_32()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(31, xla); }
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private boolean jj_2_88(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_88()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(87, xla); }
  }

  private boolean jj_2_89(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_89()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(88, xla); }
  }

  private boolean jj_2_90(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_90()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(89, xla); }
  }

  private boolean jj_2_91(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_91()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(90, xla); }
  }

  private boolean jj_2_92(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_92()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(91, xla); }
  }

  private boolean jj_2_93(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_93()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(92, xla); }
  }

  private boolean jj_2_94(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_94()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(93, xla); }
  }

  private boolean jj_2_95(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_95()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(94, xla); }
  }

  private boolean jj_2_96(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_96()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(95, xla); }
  }

  private boolean jj_2_97(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_97()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(96, xla); }
  }

  private boolean jj_2_98(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_98()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(97, xla); }
  }

  private boolean jj_2_99(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_99()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(98, xla); }
  }

  private boolean jj_2_100(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_100()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(99, xla); }
  }

  private boolean jj_2_101(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_101()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(100, xla); }
  }

  private boolean jj_2_102(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_102()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(101, xla); }
  }

  private boolean jj_2_103(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_103()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(102, xla); }
  }

  private boolean jj_2_104(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_104()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(103, xla); }
  }

  private boolean jj_2_105(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_105()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(104, xla); }
  }

  private boolean jj_2_106(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_106()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(105, xla); }
  }

  private boolean jj_2_107(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_107()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(106, xla); }
  }

  private boolean jj_2_108(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_108()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(107, xla); }
  }

  private boolean jj_2_109(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_109()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(108, xla); }
  }

  private boolean jj_2_110(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_110()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(109, xla); }
  }

  private boolean jj_2_111(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_111()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(110, xla); }
  }

  private boolean jj_2_112(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_112()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(111, xla); }
  }

  private boolean jj_2_113(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_113()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(112, xla); }
  }

  private boolean jj_2_114(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_114()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(113, xla); }
  }

  private boolean jj_2_115(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_115()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(114, xla); }
  }

  private boolean jj_2_116(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_116()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(115, xla); }
  }

  private boolean jj_2_117(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_117()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(116, xla); }
  }

  private boolean jj_2_118(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_118()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(117, xla); }
  }

  private boolean jj_2_119(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_119()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(118, xla); }
  }

  private boolean jj_2_120(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_120()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(119, xla); }
  }

  private boolean jj_2_121(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_121()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(120, xla); }
  }

  private boolean jj_2_122(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_122()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(121, xla); }
  }

  private boolean jj_2_123(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_123()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(122, xla); }
  }

  private boolean jj_2_124(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_124()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(123, xla); }
  }

  private boolean jj_2_125(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_125()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(124, xla); }
  }

  private boolean jj_2_126(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_126()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(125, xla); }
  }

  private boolean jj_2_127(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_127()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(126, xla); }
  }

  private boolean jj_2_128(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_128()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(127, xla); }
  }

  private boolean jj_2_129(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_129()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(128, xla); }
  }

  private boolean jj_2_130(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_130()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(129, xla); }
  }

  private boolean jj_2_131(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_131()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(130, xla); }
  }

  private boolean jj_2_132(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_132()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(131, xla); }
  }

  private boolean jj_2_133(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_133()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(132, xla); }
  }

  private boolean jj_2_134(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_134()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(133, xla); }
  }

  private boolean jj_2_135(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_135()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(134, xla); }
  }

  private boolean jj_2_136(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_136()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(135, xla); }
  }

  private boolean jj_2_137(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_137()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(136, xla); }
  }

  private boolean jj_2_138(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_138()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(137, xla); }
  }

  private boolean jj_2_139(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_139()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(138, xla); }
  }

  private boolean jj_2_140(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_140()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(139, xla); }
  }

  private boolean jj_2_141(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_141()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(140, xla); }
  }

  private boolean jj_2_142(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_142()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(141, xla); }
  }

  private boolean jj_2_143(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_143()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(142, xla); }
  }

  private boolean jj_2_144(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_144()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(143, xla); }
  }

  private boolean jj_2_145(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_145()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(144, xla); }
  }

  private boolean jj_2_146(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_146()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(145, xla); }
  }

  private boolean jj_2_147(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_147()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(146, xla); }
  }

  private boolean jj_2_148(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_148()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(147, xla); }
  }

  private boolean jj_2_149(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_149()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(148, xla); }
  }

  private boolean jj_2_150(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_150()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(149, xla); }
  }

  private boolean jj_2_151(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_151()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(150, xla); }
  }

  private boolean jj_2_152(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_152()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(151, xla); }
  }

  private boolean jj_2_153(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_153()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(152, xla); }
  }

  private boolean jj_2_154(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_154()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(153, xla); }
  }

  private boolean jj_2_155(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_155()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(154, xla); }
  }

  private boolean jj_2_156(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_156()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(155, xla); }
  }

  private boolean jj_2_157(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_157()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(156, xla); }
  }

  private boolean jj_2_158(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_158()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(157, xla); }
  }

  private boolean jj_2_159(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_159()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(158, xla); }
  }

  private boolean jj_2_160(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_160()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(159, xla); }
  }

  private boolean jj_2_161(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_161()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(160, xla); }
  }

  private boolean jj_2_162(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_162()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(161, xla); }
  }

  private boolean jj_2_163(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_163()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(162, xla); }
  }

  private boolean jj_2_164(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_164()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(163, xla); }
  }

  private boolean jj_2_165(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_165()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(164, xla); }
  }

  private boolean jj_2_166(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_166()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(165, xla); }
  }

  private boolean jj_2_167(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_167()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(166, xla); }
  }

  private boolean jj_2_168(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_168()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(167, xla); }
  }

  private boolean jj_2_169(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_169()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(168, xla); }
  }

  private boolean jj_2_170(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_170()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(169, xla); }
  }

  private boolean jj_2_171(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_171()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(170, xla); }
  }

  private boolean jj_2_172(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_172()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(171, xla); }
  }

  private boolean jj_2_173(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_173()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(172, xla); }
  }

  private boolean jj_2_174(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_174()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(173, xla); }
  }

  private boolean jj_2_175(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_175()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(174, xla); }
  }

  private boolean jj_2_176(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_176()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(175, xla); }
  }

  private boolean jj_2_177(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_177()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(176, xla); }
  }

  private boolean jj_2_178(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_178()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(177, xla); }
  }

  private boolean jj_2_179(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_179()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(178, xla); }
  }

  private boolean jj_2_180(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_180()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(179, xla); }
  }

  private boolean jj_2_181(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_181()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(180, xla); }
  }

  private boolean jj_2_182(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_182()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(181, xla); }
  }

  private boolean jj_2_183(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_183()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(182, xla); }
  }

  private boolean jj_2_184(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_184()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(183, xla); }
  }

  private boolean jj_2_185(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_185()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(184, xla); }
  }

  private boolean jj_2_186(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_186()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(185, xla); }
  }

  private boolean jj_2_187(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_187()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(186, xla); }
  }

  private boolean jj_2_188(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_188()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(187, xla); }
  }

  private boolean jj_2_189(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_189()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(188, xla); }
  }

  private boolean jj_2_190(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_190()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(189, xla); }
  }

  private boolean jj_2_191(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_191()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(190, xla); }
  }

  private boolean jj_2_192(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_192()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(191, xla); }
  }

  private boolean jj_2_193(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_193()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(192, xla); }
  }

  private boolean jj_2_194(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_194()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(193, xla); }
  }

  private boolean jj_2_195(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_195()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(194, xla); }
  }

  private boolean jj_2_196(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_196()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(195, xla); }
  }

  private boolean jj_2_197(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_197()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(196, xla); }
  }

  private boolean jj_2_198(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_198()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(197, xla); }
  }

  private boolean jj_2_199(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_199()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(198, xla); }
  }

  private boolean jj_2_200(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_200()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(199, xla); }
  }

  private boolean jj_2_201(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_201()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(200, xla); }
  }

  private boolean jj_2_202(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_202()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(201, xla); }
  }

  private boolean jj_2_203(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_203()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(202, xla); }
  }

  private boolean jj_2_204(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_204()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(203, xla); }
  }

  private boolean jj_2_205(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_205()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(204, xla); }
  }

  private boolean jj_2_206(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_206()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(205, xla); }
  }

  private boolean jj_2_207(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_207()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(206, xla); }
  }

  private boolean jj_2_208(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_208()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(207, xla); }
  }

  private boolean jj_2_209(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_209()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(208, xla); }
  }

  private boolean jj_2_210(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_210()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(209, xla); }
  }

  private boolean jj_2_211(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_211()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(210, xla); }
  }

  private boolean jj_2_212(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_212()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(211, xla); }
  }

  private boolean jj_3_51()
 {
    if (jj_scan_token(NAMEASTERISK)) return true;
    return false;
  }

  private boolean jj_3_42()
 {
    if (jj_scan_token(LIMIT)) return true;
    if (jj_3R_simpleExpression_939_9_25()) return true;
    return false;
  }

  private boolean jj_3_209()
 {
    if (jj_scan_token(ARRAY_AGG)) return true;
    return false;
  }

  private boolean jj_3R_logicalOrExpression_748_9_36()
 {
    if (jj_3R_logicalAndExpression_762_9_29()) return true;
    return false;
  }

  private boolean jj_3_145()
 {
    if (jj_scan_token(PLACEHOLDER)) return true;
    return false;
  }

  private boolean jj_3_33()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_queryEnvEntry_726_9_19()) return true;
    return false;
  }

  private boolean jj_3_144()
 {
    if (jj_scan_token(CURRENT_TIME)) return true;
    return false;
  }

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

  private boolean jj_3_143()
 {
    if (jj_scan_token(CURRENT_DATE)) return true;
    return false;
  }

  private boolean jj_3_53()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_50()) {
    jj_scanpos = xsp;
    if (jj_3_51()) return true;
    }
    return false;
  }

  private boolean jj_3_104()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_103()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_208()
 {
    if (jj_scan_token(STRING_AGG)) return true;
    return false;
  }

  private boolean jj_3_142()
 {
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3_141()
 {
    if (jj_3R_stringConstant_1217_9_40()) return true;
    return false;
  }

  private boolean jj_3_207()
 {
    if (jj_scan_token(SUM)) return true;
    return false;
  }

  private boolean jj_3_140()
 {
    if (jj_3R_numericConstant_1188_9_24()) return true;
    return false;
  }

  private boolean jj_3R_queryEnvEntry_726_9_19()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_52()) {
    jj_scanpos = xsp;
    if (jj_3_53()) return true;
    }
    return false;
  }

  private boolean jj_3_52()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_49()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_178()
 {
    if (jj_scan_token(LINE_NUMBER)) return true;
    return false;
  }

  private boolean jj_3_139()
 {
    if (jj_3R_columnName_1175_9_39()) return true;
    return false;
  }

  private boolean jj_3_206()
 {
    if (jj_scan_token(MIN)) return true;
    return false;
  }

  private boolean jj_3_40()
 {
    if (jj_scan_token(ORDER)) return true;
    if (jj_scan_token(BY)) return true;
    return false;
  }

  private boolean jj_3_138()
 {
    if (jj_3R_simpleCaseExpression_1161_9_38()) return true;
    return false;
  }

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

  private boolean jj_3_103()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_35()
 {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_logicalExpression_559_9_21()) return true;
    return false;
  }

  private boolean jj_3_34()
 {
    if (jj_3R_joinedTableEntry_620_9_20()) return true;
    return false;
  }

  private boolean jj_3_31()
 {
    if (jj_scan_token(SEMICOLON)) return true;
    return false;
  }

  private boolean jj_3_137()
 {
    if (jj_3R_searchedCaseExpression_1143_9_37()) return true;
    return false;
  }

  private boolean jj_3_47()
 {
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_firstTableEntry_572_9_26()) return true;
    return false;
  }

  private boolean jj_3_41()
 {
    if (jj_scan_token(LIMIT)) return true;
    if (jj_3R_numericConstant_1188_9_24()) return true;
    return false;
  }

  private boolean jj_3_46()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_41()) {
    jj_scanpos = xsp;
    if (jj_3_42()) return true;
    }
    return false;
  }

  private boolean jj_3_102()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_205()
 {
    if (jj_scan_token(MAX)) return true;
    return false;
  }

  private boolean jj_3_177()
 {
    if (jj_scan_token(TO_NUMBER)) return true;
    return false;
  }

  private boolean jj_3_136()
 {
    if (jj_scan_token(NAME)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_27()
 {
    if (jj_scan_token(DESC)) return true;
    return false;
  }

  private boolean jj_3_101()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_32()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_135()
 {
    if (jj_scan_token(ARRAY_AGG)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3R_selectStatement_703_9_17()
 {
    if (jj_scan_token(SELECT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_32()) jj_scanpos = xsp;
    if (jj_3R_queryEnvEntry_726_9_19()) return true;
    return false;
  }

  private boolean jj_3_204()
 {
    if (jj_scan_token(COUNT)) return true;
    return false;
  }

  private boolean jj_3_100()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_176()
 {
    if (jj_scan_token(TO_ARRAY)) return true;
    return false;
  }

  private boolean jj_3_134()
 {
    if (jj_scan_token(STRING_AGG)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_203()
 {
    if (jj_scan_token(AVG)) return true;
    return false;
  }

  private boolean jj_3_99()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_133()
 {
    if (jj_scan_token(AVG)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

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

  private boolean jj_3_98()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_132()
 {
    if (jj_scan_token(SUM)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_175()
 {
    if (jj_scan_token(ARRAY_AGG)) return true;
    return false;
  }

  private boolean jj_3_26()
 {
    if (jj_scan_token(ASC)) return true;
    return false;
  }

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

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

  private boolean jj_3_97()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_202()
 {
    if (jj_scan_token(COALESCE)) return true;
    return false;
  }

  private boolean jj_3_131()
 {
    if (jj_scan_token(MIN)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_96()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_130()
 {
    if (jj_scan_token(MAX)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_201()
 {
    if (jj_scan_token(ABS)) return true;
    return false;
  }

  private boolean jj_3_29()
 {
    if (jj_scan_token(SEMICOLON)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_30()) jj_scanpos = xsp;
    return false;
  }

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

  private boolean jj_3_6()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_5()) jj_scanpos = xsp;
    if (jj_scan_token(NAME)) return true;
    return false;
  }

  private boolean jj_3_129()
 {
    if (jj_scan_token(COUNT)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3_10()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_9()) jj_scanpos = xsp;
    if (jj_scan_token(NAME)) return true;
    return false;
  }

  private boolean jj_3_128()
 {
    if (jj_scan_token(LINE_NUMBER)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_200()
 {
    if (jj_scan_token(NULLIF)) return true;
    return false;
  }

  private boolean jj_3_174()
 {
    if (jj_scan_token(SUM)) return true;
    if (jj_scan_token(STRING_AGG)) return true;
    return false;
  }

  private boolean jj_3_95()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

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

  private boolean jj_3_4()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_3()) jj_scanpos = xsp;
    if (jj_scan_token(NAME)) return true;
    return false;
  }

  private boolean jj_3_92()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_127()
 {
    if (jj_scan_token(TO_NUMBER)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3R_orderByEntry_658_9_23()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_93()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_173()
 {
    if (jj_scan_token(MIN)) return true;
    return false;
  }

  private boolean jj_3_94()
 {
    if (jj_scan_token(DISTINCT)) return true;
    return false;
  }

  private boolean jj_3_126()
 {
    if (jj_scan_token(TO_ARRAY)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_199()
 {
    if (jj_scan_token(LENGTH)) return true;
    return false;
  }

  private boolean jj_3_125()
 {
    if (jj_scan_token(COALESCE)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3R_groupByEntry_646_9_22()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_172()
 {
    if (jj_scan_token(MAX)) return true;
    return false;
  }

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

  private boolean jj_3_124()
 {
    if (jj_scan_token(ABS)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3_198()
 {
    if (jj_scan_token(REPLACE)) return true;
    return false;
  }

  private boolean jj_3_25()
 {
    if (jj_scan_token(FULL)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_20()) jj_scanpos = xsp;
    if (jj_scan_token(JOIN)) return true;
    return false;
  }

  private boolean jj_3_123()
 {
    if (jj_scan_token(NULLIF)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3_171()
 {
    if (jj_scan_token(COUNT)) return true;
    return false;
  }

  private boolean jj_3_90()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_24()
 {
    if (jj_scan_token(RIGHT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_19()) jj_scanpos = xsp;
    if (jj_scan_token(JOIN)) return true;
    return false;
  }

  private boolean jj_3_122()
 {
    if (jj_scan_token(SECOND)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_23()
 {
    if (jj_scan_token(LEFT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_18()) jj_scanpos = xsp;
    if (jj_scan_token(JOIN)) return true;
    return false;
  }

  private boolean jj_3_89()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_121()
 {
    if (jj_scan_token(MINUTE)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3_170()
 {
    if (jj_scan_token(AVG)) return true;
    return false;
  }

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

  private boolean jj_3_22()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_17()) jj_scanpos = xsp;
    if (jj_scan_token(JOIN)) return true;
    if (jj_3R_tableEntry_604_9_18()) return true;
    return false;
  }

  private boolean jj_3_120()
 {
    if (jj_scan_token(HOUROFDAY)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_197()
 {
    if (jj_scan_token(SUBSTRING)) return true;
    return false;
  }

  private boolean jj_3_88()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_119()
 {
    if (jj_scan_token(YEAR)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3R_joinedTableEntry_620_9_20()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_21()) {
    jj_scanpos = xsp;
    if (jj_3_22()) {
    jj_scanpos = xsp;
    if (jj_3_23()) {
    jj_scanpos = xsp;
    if (jj_3_24()) {
    jj_scanpos = xsp;
    if (jj_3_25()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_21()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_15()) {
    jj_scanpos = xsp;
    if (jj_3_16()) return true;
    }
    if (jj_3R_tableEntry_604_9_18()) return true;
    return false;
  }

  private boolean jj_3_118()
 {
    if (jj_scan_token(MONTH)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_196()
 {
    if (jj_scan_token(RTRIM)) return true;
    return false;
  }

  private boolean jj_3_169()
 {
    if (jj_scan_token(COALESCE)) return true;
    return false;
  }

  private boolean jj_3_117()
 {
    if (jj_scan_token(DAYOFMONTH)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_14()
 {
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    if (jj_3R_selectStatement_703_9_17()) return true;
    return false;
  }

  private boolean jj_3_116()
 {
    if (jj_scan_token(ROUND)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_168()
 {
    if (jj_scan_token(ABS)) return true;
    return false;
  }

  private boolean jj_3_195()
 {
    if (jj_scan_token(LTRIM)) return true;
    return false;
  }

  private boolean jj_3_115()
 {
    if (jj_scan_token(RANDOM)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3R_tableEntry_604_9_18()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_13()) {
    jj_scanpos = xsp;
    if (jj_3_14()) return true;
    }
    return false;
  }

  private boolean jj_3_13()
 {
    if (jj_scan_token(NAME)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_10()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_114()
 {
    if (jj_scan_token(LENGTH)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_91()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_194()
 {
    if (jj_scan_token(TRIM)) return true;
    return false;
  }

  private boolean jj_3_167()
 {
    if (jj_scan_token(NULLIF)) return true;
    return false;
  }

  private boolean jj_3_113()
 {
    if (jj_scan_token(REPLACE)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

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

  private boolean jj_3_112()
 {
    if (jj_scan_token(SUBSTRING)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_193()
 {
    if (jj_scan_token(UPPER)) return true;
    return false;
  }

  private boolean jj_3_166()
 {
    if (jj_scan_token(LENGTH)) return true;
    return false;
  }

  private boolean jj_3_111()
 {
    if (jj_scan_token(RTRIM)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_110()
 {
    if (jj_scan_token(LTRIM)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_8()
 {
    if (jj_scan_token(DERIVEDTABLEOPENPARENTHESIS)) return true;
    if (jj_3R_selectStatement_703_9_17()) return true;
    return false;
  }

  private boolean jj_3_192()
 {
    if (jj_scan_token(ROUND)) return true;
    return false;
  }

  private boolean jj_3_109()
 {
    if (jj_scan_token(TRIM)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_165()
 {
    if (jj_scan_token(REPLACE)) return true;
    return false;
  }

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

  private boolean jj_3R_firstTableEntry_572_9_26()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_7()) {
    jj_scanpos = xsp;
    if (jj_3_8()) return true;
    }
    return false;
  }

  private boolean jj_3_7()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_1()) {
    jj_scanpos = xsp;
    if (jj_3_2()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3_4()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_108()
 {
    if (jj_scan_token(LOWER)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_107()
 {
    if (jj_scan_token(UPPER)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_191()
 {
    if (jj_scan_token(RANDOM)) return true;
    return false;
  }

  private boolean jj_3_87()
 {
    if (jj_3R_binMultiplyOp_878_9_35()) return true;
    if (jj_3R_simpleExpression_939_9_25()) return true;
    return false;
  }

  private boolean jj_3_106()
 {
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    if (jj_3R_logicalOrExpression_748_9_36()) return true;
    return false;
  }

  private boolean jj_3_77()
 {
    if (jj_scan_token(EQUALS)) return true;
    return false;
  }

  private boolean jj_3R_logicalExpression_559_9_21()
 {
    if (jj_3R_logicalOrExpression_748_9_36()) return true;
    return false;
  }

  private boolean jj_3_164()
 {
    if (jj_scan_token(SUBSTRING)) return true;
    return false;
  }

  private boolean jj_3R_simpleExpression_939_9_25()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_105()) {
    jj_scanpos = xsp;
    if (jj_3_106()) {
    jj_scanpos = xsp;
    if (jj_3_107()) {
    jj_scanpos = xsp;
    if (jj_3_108()) {
    jj_scanpos = xsp;
    if (jj_3_109()) {
    jj_scanpos = xsp;
    if (jj_3_110()) {
    jj_scanpos = xsp;
    if (jj_3_111()) {
    jj_scanpos = xsp;
    if (jj_3_112()) {
    jj_scanpos = xsp;
    if (jj_3_113()) {
    jj_scanpos = xsp;
    if (jj_3_114()) {
    jj_scanpos = xsp;
    if (jj_3_115()) {
    jj_scanpos = xsp;
    if (jj_3_116()) {
    jj_scanpos = xsp;
    if (jj_3_117()) {
    jj_scanpos = xsp;
    if (jj_3_118()) {
    jj_scanpos = xsp;
    if (jj_3_119()) {
    jj_scanpos = xsp;
    if (jj_3_120()) {
    jj_scanpos = xsp;
    if (jj_3_121()) {
    jj_scanpos = xsp;
    if (jj_3_122()) {
    jj_scanpos = xsp;
    if (jj_3_123()) {
    jj_scanpos = xsp;
    if (jj_3_124()) {
    jj_scanpos = xsp;
    if (jj_3_125()) {
    jj_scanpos = xsp;
    if (jj_3_126()) {
    jj_scanpos = xsp;
    if (jj_3_127()) {
    jj_scanpos = xsp;
    if (jj_3_128()) {
    jj_scanpos = xsp;
    if (jj_3_129()) {
    jj_scanpos = xsp;
    if (jj_3_130()) {
    jj_scanpos = xsp;
    if (jj_3_131()) {
    jj_scanpos = xsp;
    if (jj_3_132()) {
    jj_scanpos = xsp;
    if (jj_3_133()) {
    jj_scanpos = xsp;
    if (jj_3_134()) {
    jj_scanpos = xsp;
    if (jj_3_135()) {
    jj_scanpos = xsp;
    if (jj_3_136()) {
    jj_scanpos = xsp;
    if (jj_3_137()) {
    jj_scanpos = xsp;
    if (jj_3_138()) {
    jj_scanpos = xsp;
    if (jj_3_139()) {
    jj_scanpos = xsp;
    if (jj_3_140()) {
    jj_scanpos = xsp;
    if (jj_3_141()) {
    jj_scanpos = xsp;
    if (jj_3_142()) {
    jj_scanpos = xsp;
    if (jj_3_143()) {
    jj_scanpos = xsp;
    if (jj_3_144()) {
    jj_scanpos = xsp;
    if (jj_3_145()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_105()
 {
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    if (jj_3R_selectStatement_703_9_17()) return true;
    return false;
  }

  private boolean jj_3_190()
 {
    if (jj_scan_token(LOWER)) return true;
    return false;
  }

  private boolean jj_3_163()
 {
    if (jj_scan_token(RTRIM)) return true;
    return false;
  }

  private boolean jj_3_86()
 {
    if (jj_3R_binAddOp_868_9_33()) return true;
    if (jj_3R_multiplyOperation_919_9_34()) return true;
    return false;
  }

  private boolean jj_3_76()
 {
    if (jj_scan_token(NOTEQUALS)) return true;
    return false;
  }

  private boolean jj_3_189()
 {
    if (jj_scan_token(SECOND)) return true;
    return false;
  }

  private boolean jj_3_162()
 {
    if (jj_scan_token(LTRIM)) return true;
    return false;
  }

  private boolean jj_3R_multiplyOperation_919_9_34()
 {
    if (jj_3R_simpleExpression_939_9_25()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_87()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_188()
 {
    if (jj_scan_token(MINUTE)) return true;
    return false;
  }

  private boolean jj_3_161()
 {
    if (jj_scan_token(TRIM)) return true;
    return false;
  }

  private boolean jj_3_75()
 {
    if (jj_scan_token(LESSTHANEQUALS)) return true;
    return false;
  }

  private boolean jj_3_83()
 {
    if (jj_scan_token(MODULO)) return true;
    return false;
  }

  private boolean jj_3R_binaryOperation_904_9_28()
 {
    if (jj_3R_multiplyOperation_919_9_34()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_86()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_160()
 {
    if (jj_scan_token(UPPER)) return true;
    return false;
  }

  private boolean jj_3_187()
 {
    if (jj_scan_token(HOUROFDAY)) return true;
    return false;
  }

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

  private boolean jj_3_82()
 {
    if (jj_scan_token(DIVIDE)) return true;
    return false;
  }

  private boolean jj_3_186()
 {
    if (jj_scan_token(YEAR)) return true;
    return false;
  }

  private boolean jj_3_159()
 {
    if (jj_scan_token(ROUND)) return true;
    return false;
  }

  private boolean jj_3_80()
 {
    if (jj_scan_token(CONCAT)) return true;
    return false;
  }

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

  private boolean jj_3_74()
 {
    if (jj_scan_token(GREATERTHANEQUALS)) return true;
    return false;
  }

  private boolean jj_3_185()
 {
    if (jj_scan_token(MONTH)) return true;
    return false;
  }

  private boolean jj_3_158()
 {
    if (jj_scan_token(RANDOM)) return true;
    return false;
  }

  private boolean jj_3_79()
 {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

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

  private boolean jj_3R_binMultiplyOp_878_9_35()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_81()) {
    jj_scanpos = xsp;
    if (jj_3_82()) {
    jj_scanpos = xsp;
    if (jj_3_83()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_73()
 {
    if (jj_scan_token(LESSTHAN)) return true;
    return false;
  }

  private boolean jj_3_157()
 {
    if (jj_scan_token(LOWER)) return true;
    return false;
  }

  private boolean jj_3_78()
 {
    if (jj_scan_token(PLUS)) return true;
    return false;
  }

  private boolean jj_3R_binAddOp_868_9_33()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_78()) {
    jj_scanpos = xsp;
    if (jj_3_79()) {
    jj_scanpos = xsp;
    if (jj_3_80()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_184()
 {
    if (jj_scan_token(DAYOFMONTH)) return true;
    return false;
  }

  private boolean jj_3_182()
 {
    if (jj_3R_stringConstantAtom_1231_9_41()) return true;
    return false;
  }

  private boolean jj_3_156()
 {
    if (jj_scan_token(SECOND)) return true;
    return false;
  }

  private boolean jj_3_63()
 {
    if (jj_scan_token(ESCAPE)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_183()
 {
    if (jj_scan_token(NAME)) return true;
    return false;
  }

  private boolean jj_3_72()
 {
    if (jj_scan_token(GREATERTHAN)) return true;
    return false;
  }

  private boolean jj_3R_relOp_858_9_32()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_72()) {
    jj_scanpos = xsp;
    if (jj_3_73()) {
    jj_scanpos = xsp;
    if (jj_3_74()) {
    jj_scanpos = xsp;
    if (jj_3_75()) {
    jj_scanpos = xsp;
    if (jj_3_76()) {
    jj_scanpos = xsp;
    if (jj_3_77()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_columnAlias_1241_9_27()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_183()) {
    jj_scanpos = xsp;
    if (jj_3_184()) {
    jj_scanpos = xsp;
    if (jj_3_185()) {
    jj_scanpos = xsp;
    if (jj_3_186()) {
    jj_scanpos = xsp;
    if (jj_3_187()) {
    jj_scanpos = xsp;
    if (jj_3_188()) {
    jj_scanpos = xsp;
    if (jj_3_189()) {
    jj_scanpos = xsp;
    if (jj_3_190()) {
    jj_scanpos = xsp;
    if (jj_3_191()) {
    jj_scanpos = xsp;
    if (jj_3_192()) {
    jj_scanpos = xsp;
    if (jj_3_193()) {
    jj_scanpos = xsp;
    if (jj_3_194()) {
    jj_scanpos = xsp;
    if (jj_3_195()) {
    jj_scanpos = xsp;
    if (jj_3_196()) {
    jj_scanpos = xsp;
    if (jj_3_197()) {
    jj_scanpos = xsp;
    if (jj_3_198()) {
    jj_scanpos = xsp;
    if (jj_3_199()) {
    jj_scanpos = xsp;
    if (jj_3_200()) {
    jj_scanpos = xsp;
    if (jj_3_201()) {
    jj_scanpos = xsp;
    if (jj_3_202()) {
    jj_scanpos = xsp;
    if (jj_3_203()) {
    jj_scanpos = xsp;
    if (jj_3_204()) {
    jj_scanpos = xsp;
    if (jj_3_205()) {
    jj_scanpos = xsp;
    if (jj_3_206()) {
    jj_scanpos = xsp;
    if (jj_3_207()) {
    jj_scanpos = xsp;
    if (jj_3_208()) {
    jj_scanpos = xsp;
    if (jj_3_209()) {
    jj_scanpos = xsp;
    if (jj_3_210()) {
    jj_scanpos = xsp;
    if (jj_3_211()) {
    jj_scanpos = xsp;
    if (jj_3_212()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_155()
 {
    if (jj_scan_token(MINUTE)) return true;
    return false;
  }

  private boolean jj_3R_stringConstantAtom_1231_9_41()
 {
    if (jj_scan_token(STRING)) return true;
    return false;
  }

  private boolean jj_3_67()
 {
    if (jj_scan_token(NOT)) return true;
    return false;
  }

  private boolean jj_3_64()
 {
    if (jj_scan_token(BETWEEN)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_59()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_70()
 {
    if (jj_scan_token(IS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_67()) jj_scanpos = xsp;
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3_71()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_68()) {
    jj_scanpos = xsp;
    if (jj_3_69()) {
    jj_scanpos = xsp;
    if (jj_3_70()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_68()
 {
    if (jj_3R_relOp_858_9_32()) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_37()
 {
    if (jj_scan_token(HAVING)) return true;
    if (jj_3R_logicalExpression_559_9_21()) return true;
    return false;
  }

  private boolean jj_3_154()
 {
    if (jj_scan_token(HOUROFDAY)) return true;
    return false;
  }

  private boolean jj_3_66()
 {
    if (jj_scan_token(IN)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3R_stringConstant_1217_9_40()
 {
    if (jj_3R_stringConstantAtom_1231_9_41()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_182()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_44()
 {
    if (jj_scan_token(OFFSET)) return true;
    if (jj_3R_simpleExpression_939_9_25()) return true;
    return false;
  }

  private boolean jj_3_65()
 {
    if (jj_scan_token(LIKE)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_181()
 {
    if (jj_scan_token(UNSIGNEDINT)) return true;
    return false;
  }

  private boolean jj_3_153()
 {
    if (jj_scan_token(YEAR)) return true;
    return false;
  }

  private boolean jj_3_62()
 {
    if (jj_scan_token(NOT)) return true;
    return false;
  }

  private boolean jj_3_69()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_62()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3_64()) {
    jj_scanpos = xsp;
    if (jj_3_65()) {
    jj_scanpos = xsp;
    if (jj_3_66()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_152()
 {
    if (jj_scan_token(MONTH)) return true;
    return false;
  }

  private boolean jj_3R_relationalExpression_816_9_31()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_71()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_180()
 {
    if (jj_scan_token(UNSIGNEDNUMBER)) return true;
    return false;
  }

  private boolean jj_3_179()
 {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_numericConstant_1188_9_24()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_179()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3_180()) {
    jj_scanpos = xsp;
    if (jj_3_181()) return true;
    }
    return false;
  }

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

  private boolean jj_3_151()
 {
    if (jj_scan_token(DAYOFMONTH)) return true;
    return false;
  }

  private boolean jj_3_60()
 {
    if (jj_3R_binaryOperation_904_9_28()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_59()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_55()
 {
    if (jj_scan_token(AND)) return true;
    if (jj_3R_logicalUnaryExpression_777_9_30()) return true;
    return false;
  }

  private boolean jj_3_150()
 {
    if (jj_scan_token(NAME)) return true;
    return false;
  }

  private boolean jj_3R_columnName_1175_9_39()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_150()) {
    jj_scanpos = xsp;
    if (jj_3_151()) {
    jj_scanpos = xsp;
    if (jj_3_152()) {
    jj_scanpos = xsp;
    if (jj_3_153()) {
    jj_scanpos = xsp;
    if (jj_3_154()) {
    jj_scanpos = xsp;
    if (jj_3_155()) {
    jj_scanpos = xsp;
    if (jj_3_156()) {
    jj_scanpos = xsp;
    if (jj_3_157()) {
    jj_scanpos = xsp;
    if (jj_3_158()) {
    jj_scanpos = xsp;
    if (jj_3_159()) {
    jj_scanpos = xsp;
    if (jj_3_160()) {
    jj_scanpos = xsp;
    if (jj_3_161()) {
    jj_scanpos = xsp;
    if (jj_3_162()) {
    jj_scanpos = xsp;
    if (jj_3_163()) {
    jj_scanpos = xsp;
    if (jj_3_164()) {
    jj_scanpos = xsp;
    if (jj_3_165()) {
    jj_scanpos = xsp;
    if (jj_3_166()) {
    jj_scanpos = xsp;
    if (jj_3_167()) {
    jj_scanpos = xsp;
    if (jj_3_168()) {
    jj_scanpos = xsp;
    if (jj_3_169()) {
    jj_scanpos = xsp;
    if (jj_3_170()) {
    jj_scanpos = xsp;
    if (jj_3_171()) {
    jj_scanpos = xsp;
    if (jj_3_172()) {
    jj_scanpos = xsp;
    if (jj_3_173()) {
    jj_scanpos = xsp;
    if (jj_3_174()) {
    jj_scanpos = xsp;
    if (jj_3_175()) {
    jj_scanpos = xsp;
    if (jj_3_176()) {
    jj_scanpos = xsp;
    if (jj_3_177()) {
    jj_scanpos = xsp;
    if (jj_3_178()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_212()
 {
    if (jj_scan_token(LINE_NUMBER)) return true;
    return false;
  }

  private boolean jj_3_45()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_43()) {
    jj_scanpos = xsp;
    if (jj_3_44()) return true;
    }
    return false;
  }

  private boolean jj_3_43()
 {
    if (jj_scan_token(OFFSET)) return true;
    if (jj_3R_numericConstant_1188_9_24()) return true;
    return false;
  }

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

  private boolean jj_3_57()
 {
    if (jj_scan_token(EXISTS)) return true;
    if (jj_scan_token(OPENPARENTHESIS)) return true;
    return false;
  }

  private boolean jj_3_149()
 {
    if (jj_scan_token(ELSE)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_39()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_orderByEntry_658_9_23()) return true;
    return false;
  }

  private boolean jj_3_36()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_groupByEntry_646_9_22()) return true;
    return false;
  }

  private boolean jj_3_148()
 {
    if (jj_scan_token(WHEN)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3R_simpleCaseExpression_1161_9_38()
 {
    if (jj_scan_token(CASE)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3_211()
 {
    if (jj_scan_token(TO_NUMBER)) return true;
    return false;
  }

  private boolean jj_3_54()
 {
    if (jj_scan_token(OR)) return true;
    if (jj_3R_logicalAndExpression_762_9_29()) return true;
    return false;
  }

  private boolean jj_3R_logicalUnaryExpression_777_9_30()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_56()) {
    jj_scanpos = xsp;
    if (jj_3_57()) {
    jj_scanpos = xsp;
    if (jj_3_58()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_56()
 {
    if (jj_scan_token(NOT)) return true;
    if (jj_3R_logicalUnaryExpression_777_9_30()) return true;
    return false;
  }

  private boolean jj_3_146()
 {
    if (jj_scan_token(WHEN)) return true;
    if (jj_3R_logicalOrExpression_748_9_36()) return true;
    return false;
  }

  private boolean jj_3_210()
 {
    if (jj_scan_token(TO_ARRAY)) return true;
    return false;
  }

  private boolean jj_3_147()
 {
    if (jj_scan_token(ELSE)) return true;
    if (jj_3R_binaryOperation_904_9_28()) return true;
    return false;
  }

  private boolean jj_3R_logicalAndExpression_762_9_29()
 {
    if (jj_3R_logicalUnaryExpression_777_9_30()) return true;
    return false;
  }

  private boolean jj_3R_searchedCaseExpression_1143_9_37()
 {
    if (jj_scan_token(CASE)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_146()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3_147()) jj_scanpos = xsp;
    if (jj_scan_token(END)) return true;
    return false;
  }

  private boolean jj_3_48()
 {
    if (jj_scan_token(AS)) return true;
    return false;
  }

  private boolean jj_3_49()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_48()) jj_scanpos = xsp;
    if (jj_3R_columnAlias_1241_9_27()) return true;
    return false;
  }

  /** Generated Token Manager. */
  public ExpressionParserTokenManager 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[0];
  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[] {};
	}
	private static void jj_la1_init_1() {
	   jj_la1_1 = new int[] {};
	}
	private static void jj_la1_init_2() {
	   jj_la1_2 = new int[] {};
	}
	private static void jj_la1_init_3() {
	   jj_la1_3 = new int[] {};
	}
  final private JJCalls[] jj_2_rtns = new JJCalls[212];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public ExpressionParser(java.io.InputStream stream) {
	  this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public ExpressionParser(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 ExpressionParserTokenManager(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 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 < 0; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

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

  /** Reinitialise. */
  public void ReInit(java.io.Reader stream) {
	if (jj_input_stream == null) {
	   jj_input_stream = new SimpleCharStream(stream, 1, 1);
	} else {
	   jj_input_stream.ReInit(stream, 1, 1);
	}
	if (token_source == null) {
 token_source = new ExpressionParserTokenManager(jj_input_stream);
	}

	 token_source.ReInit(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

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

  /** Reinitialise. */
  public void ReInit(ExpressionParserTokenManager tm) {
	 token_source = tm;
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 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();
  }

  @SuppressWarnings("serial")
  static private final class LookaheadSuccess extends java.lang.Error {
    @Override
    public Throwable fillInStackTrace() {
      return this;
    }
  }
  static private final 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_f() {
	 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 jj_expentries = new java.util.ArrayList();
  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];
	   }

	   for (int[] oldentry : jj_expentries) {
		 if (oldentry.length == jj_expentry.length) {
		   boolean isMatched = true;

		   for (int i = 0; i < jj_expentry.length; i++) {
			 if (oldentry[i] != jj_expentry[i]) {
			   isMatched = false;
			   break;
			 }

		   }
		   if (isMatched) {
			 jj_expentries.add(jj_expentry);
			 break;
		   }
		 }
	   }

	   if (pos != 0) {
		 jj_lasttokens[(jj_endpos = pos) - 1] = kind;
	   }
	 }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
	 jj_expentries.clear();
	 boolean[] la1tokens = new boolean[110];
	 if (jj_kind >= 0) {
	   la1tokens[jj_kind] = true;
	   jj_kind = -1;
	 }
	 for (int i = 0; i < 0; i++) {
	   if (jj_la1[i] == jj_gen) {
		 for (int j = 0; j < 32; j++) {
		   if ((jj_la1_0[i] & (1< jj_gen) {
			 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
			 switch (i) {
			   case 0: jj_3_1(); break;
			   case 1: jj_3_2(); break;
			   case 2: jj_3_3(); break;
			   case 3: jj_3_4(); break;
			   case 4: jj_3_5(); break;
			   case 5: jj_3_6(); break;
			   case 6: jj_3_7(); break;
			   case 7: jj_3_8(); break;
			   case 8: jj_3_9(); break;
			   case 9: jj_3_10(); break;
			   case 10: jj_3_11(); break;
			   case 11: jj_3_12(); break;
			   case 12: jj_3_13(); break;
			   case 13: jj_3_14(); break;
			   case 14: jj_3_15(); break;
			   case 15: jj_3_16(); break;
			   case 16: jj_3_17(); break;
			   case 17: jj_3_18(); break;
			   case 18: jj_3_19(); break;
			   case 19: jj_3_20(); break;
			   case 20: jj_3_21(); break;
			   case 21: jj_3_22(); break;
			   case 22: jj_3_23(); break;
			   case 23: jj_3_24(); break;
			   case 24: jj_3_25(); break;
			   case 25: jj_3_26(); break;
			   case 26: jj_3_27(); break;
			   case 27: jj_3_28(); break;
			   case 28: jj_3_29(); break;
			   case 29: jj_3_30(); break;
			   case 30: jj_3_31(); break;
			   case 31: jj_3_32(); break;
			   case 32: jj_3_33(); break;
			   case 33: jj_3_34(); break;
			   case 34: jj_3_35(); break;
			   case 35: jj_3_36(); break;
			   case 36: jj_3_37(); break;
			   case 37: jj_3_38(); break;
			   case 38: jj_3_39(); break;
			   case 39: jj_3_40(); break;
			   case 40: jj_3_41(); break;
			   case 41: jj_3_42(); break;
			   case 42: jj_3_43(); break;
			   case 43: jj_3_44(); break;
			   case 44: jj_3_45(); break;
			   case 45: jj_3_46(); break;
			   case 46: jj_3_47(); break;
			   case 47: jj_3_48(); break;
			   case 48: jj_3_49(); break;
			   case 49: jj_3_50(); break;
			   case 50: jj_3_51(); break;
			   case 51: jj_3_52(); break;
			   case 52: jj_3_53(); break;
			   case 53: jj_3_54(); break;
			   case 54: jj_3_55(); break;
			   case 55: jj_3_56(); break;
			   case 56: jj_3_57(); break;
			   case 57: jj_3_58(); break;
			   case 58: jj_3_59(); break;
			   case 59: jj_3_60(); break;
			   case 60: jj_3_61(); break;
			   case 61: jj_3_62(); break;
			   case 62: jj_3_63(); break;
			   case 63: jj_3_64(); break;
			   case 64: jj_3_65(); break;
			   case 65: jj_3_66(); break;
			   case 66: jj_3_67(); break;
			   case 67: jj_3_68(); break;
			   case 68: jj_3_69(); break;
			   case 69: jj_3_70(); break;
			   case 70: jj_3_71(); break;
			   case 71: jj_3_72(); break;
			   case 72: jj_3_73(); break;
			   case 73: jj_3_74(); break;
			   case 74: jj_3_75(); break;
			   case 75: jj_3_76(); break;
			   case 76: jj_3_77(); break;
			   case 77: jj_3_78(); break;
			   case 78: jj_3_79(); break;
			   case 79: jj_3_80(); break;
			   case 80: jj_3_81(); break;
			   case 81: jj_3_82(); break;
			   case 82: jj_3_83(); break;
			   case 83: jj_3_84(); break;
			   case 84: jj_3_85(); break;
			   case 85: jj_3_86(); break;
			   case 86: jj_3_87(); break;
			   case 87: jj_3_88(); break;
			   case 88: jj_3_89(); break;
			   case 89: jj_3_90(); break;
			   case 90: jj_3_91(); break;
			   case 91: jj_3_92(); break;
			   case 92: jj_3_93(); break;
			   case 93: jj_3_94(); break;
			   case 94: jj_3_95(); break;
			   case 95: jj_3_96(); break;
			   case 96: jj_3_97(); break;
			   case 97: jj_3_98(); break;
			   case 98: jj_3_99(); break;
			   case 99: jj_3_100(); break;
			   case 100: jj_3_101(); break;
			   case 101: jj_3_102(); break;
			   case 102: jj_3_103(); break;
			   case 103: jj_3_104(); break;
			   case 104: jj_3_105(); break;
			   case 105: jj_3_106(); break;
			   case 106: jj_3_107(); break;
			   case 107: jj_3_108(); break;
			   case 108: jj_3_109(); break;
			   case 109: jj_3_110(); break;
			   case 110: jj_3_111(); break;
			   case 111: jj_3_112(); break;
			   case 112: jj_3_113(); break;
			   case 113: jj_3_114(); break;
			   case 114: jj_3_115(); break;
			   case 115: jj_3_116(); break;
			   case 116: jj_3_117(); break;
			   case 117: jj_3_118(); break;
			   case 118: jj_3_119(); break;
			   case 119: jj_3_120(); break;
			   case 120: jj_3_121(); break;
			   case 121: jj_3_122(); break;
			   case 122: jj_3_123(); break;
			   case 123: jj_3_124(); break;
			   case 124: jj_3_125(); break;
			   case 125: jj_3_126(); break;
			   case 126: jj_3_127(); break;
			   case 127: jj_3_128(); break;
			   case 128: jj_3_129(); break;
			   case 129: jj_3_130(); break;
			   case 130: jj_3_131(); break;
			   case 131: jj_3_132(); break;
			   case 132: jj_3_133(); break;
			   case 133: jj_3_134(); break;
			   case 134: jj_3_135(); break;
			   case 135: jj_3_136(); break;
			   case 136: jj_3_137(); break;
			   case 137: jj_3_138(); break;
			   case 138: jj_3_139(); break;
			   case 139: jj_3_140(); break;
			   case 140: jj_3_141(); break;
			   case 141: jj_3_142(); break;
			   case 142: jj_3_143(); break;
			   case 143: jj_3_144(); break;
			   case 144: jj_3_145(); break;
			   case 145: jj_3_146(); break;
			   case 146: jj_3_147(); break;
			   case 147: jj_3_148(); break;
			   case 148: jj_3_149(); break;
			   case 149: jj_3_150(); break;
			   case 150: jj_3_151(); break;
			   case 151: jj_3_152(); break;
			   case 152: jj_3_153(); break;
			   case 153: jj_3_154(); break;
			   case 154: jj_3_155(); break;
			   case 155: jj_3_156(); break;
			   case 156: jj_3_157(); break;
			   case 157: jj_3_158(); break;
			   case 158: jj_3_159(); break;
			   case 159: jj_3_160(); break;
			   case 160: jj_3_161(); break;
			   case 161: jj_3_162(); break;
			   case 162: jj_3_163(); break;
			   case 163: jj_3_164(); break;
			   case 164: jj_3_165(); break;
			   case 165: jj_3_166(); break;
			   case 166: jj_3_167(); break;
			   case 167: jj_3_168(); break;
			   case 168: jj_3_169(); break;
			   case 169: jj_3_170(); break;
			   case 170: jj_3_171(); break;
			   case 171: jj_3_172(); break;
			   case 172: jj_3_173(); break;
			   case 173: jj_3_174(); break;
			   case 174: jj_3_175(); break;
			   case 175: jj_3_176(); break;
			   case 176: jj_3_177(); break;
			   case 177: jj_3_178(); break;
			   case 178: jj_3_179(); break;
			   case 179: jj_3_180(); break;
			   case 180: jj_3_181(); break;
			   case 181: jj_3_182(); break;
			   case 182: jj_3_183(); break;
			   case 183: jj_3_184(); break;
			   case 184: jj_3_185(); break;
			   case 185: jj_3_186(); break;
			   case 186: jj_3_187(); break;
			   case 187: jj_3_188(); break;
			   case 188: jj_3_189(); break;
			   case 189: jj_3_190(); break;
			   case 190: jj_3_191(); break;
			   case 191: jj_3_192(); break;
			   case 192: jj_3_193(); break;
			   case 193: jj_3_194(); break;
			   case 194: jj_3_195(); break;
			   case 195: jj_3_196(); break;
			   case 196: jj_3_197(); break;
			   case 197: jj_3_198(); break;
			   case 198: jj_3_199(); break;
			   case 199: jj_3_200(); break;
			   case 200: jj_3_201(); break;
			   case 201: jj_3_202(); break;
			   case 202: jj_3_203(); break;
			   case 203: jj_3_204(); break;
			   case 204: jj_3_205(); break;
			   case 205: jj_3_206(); break;
			   case 206: jj_3_207(); break;
			   case 207: jj_3_208(); break;
			   case 208: jj_3_209(); break;
			   case 209: jj_3_210(); break;
			   case 210: jj_3_211(); break;
			   case 211: jj_3_212(); 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;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy