/* Generated By:JavaCC: Do not edit this line. Parser.java */
package jeql.syntax.parser;
import java.util.*;
import jeql.syntax.*;
import jeql.syntax.util.*;
import jeql.util.*;
import com.vividsolutions.jts.geom.*;
public class Parser implements ParserConstants {
public static void main(String args[]) throws ParseException {
Parser parser = new Parser(System.in);
parser.SelectStatement();
}
/* ------------ JEQL Program ----------------------*/
final public ProgramNode Program() throws ParseException {
StatementListNode b;
List importList;
importList = ImportStatementList();
b = StatementList();
jj_consume_token(0);
{if (true) return new ProgramNode(importList, b);}
throw new Error("Missing return statement in function");
}
final public List ImportStatementList() throws ParseException {
List importList = new ArrayList();
ImportNode stmt;
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_IMPORT:
;
break;
default:
jj_la1[0] = jj_gen;
break label_1;
}
stmt = ImportStatement();
importList.add(stmt);
}
{if (true) return importList;}
throw new Error("Missing return statement in function");
}
final public ImportNode ImportStatement() throws ParseException {
ImportNode importNode = new ImportNode();
String item = null;
jj_consume_token(K_IMPORT);
importNode.setLoc(token.beginLine);
jj_consume_token(S_IDENTIFIER);
importNode.add(token.image);
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
;
break;
default:
jj_la1[1] = jj_gen;
break label_2;
}
jj_consume_token(DOT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
jj_consume_token(S_IDENTIFIER);
break;
case ASTERISK:
jj_consume_token(ASTERISK);
break;
default:
jj_la1[2] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
importNode.add(token.image);
}
jj_consume_token(SEMICOLON);
{if (true) return importNode;}
throw new Error("Missing return statement in function");
}
final public StatementListNode StatementList() throws ParseException {
StatementListNode stmtList = new StatementListNode();
ParseTreeNode stmt;
label_3:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_SELECT:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_IDENTIFIER_KEY:
;
break;
default:
jj_la1[3] = jj_gen;
break label_3;
}
stmt = Statement();
stmtList.add(stmt);
}
{if (true) return stmtList;}
throw new Error("Missing return statement in function");
}
final public StatementListNode AliasList() throws ParseException {
StatementListNode stmtList = new StatementListNode();
ParseTreeNode stmt;
stmt = ExprAssignment();
stmtList.add(stmt);
label_4:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[4] = jj_gen;
break label_4;
}
jj_consume_token(COMMA);
stmt = ExprAssignment();
stmtList.add(stmt);
}
{if (true) return stmtList;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode Statement() throws ParseException {
ParseTreeNode stmt = null;
if (jj_2_1(3)) {
stmt = Assignment();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_SELECT:
stmt = SelectExpression();
break;
default:
jj_la1[5] = jj_gen;
if (jj_2_2(3)) {
stmt = CommandCall();
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
}
jj_consume_token(SEMICOLON);
{if (true) return stmt;}
throw new Error("Missing return statement in function");
}
final public AssignmentNode Assignment() throws ParseException {
String name;
ParseTreeNode val;
int line;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
name = Identifier();
jj_consume_token(ASSIGN);
break;
case S_IDENTIFIER_KEY:
jj_consume_token(S_IDENTIFIER_KEY);
name = token.image; line = token.beginLine;
break;
default:
jj_la1[6] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
line = token.beginLine;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_SELECT:
val = SelectExpression();
break;
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
val = Expression();
break;
default:
jj_la1[7] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
AssignmentNode node = new AssignmentNode(name, val);
node.setLoc(line);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
// An assigment restricted to a basic Expression (no SELECT)
final public AssignmentNode ExprAssignment() throws ParseException {
String name;
ParseTreeNode val;
int line;
name = Identifier();
jj_consume_token(ASSIGN);
line = token.beginLine;
val = Expression();
AssignmentNode node = new AssignmentNode(name, val);
node.setLoc(line);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
/* ------------ Commands ----------------------*/
final public CommandCallNode CommandCall() throws ParseException {
String name1 = null, name2 = null;;
List args = null;
int line;
jj_consume_token(S_IDENTIFIER);
name1 = token.image;
line = token.beginLine;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
jj_consume_token(DOT);
jj_consume_token(S_IDENTIFIER);
break;
default:
jj_la1[8] = jj_gen;
;
}
name2 = token.image;
args = CmdParamList();
CommandCallNode ccn = null;
if (name2 == null)
ccn = new CommandCallNode(name1, args);
else
ccn = new CommandCallNode(name1, name2, args);
ccn.setLoc(line);
{if (true) return ccn;}
throw new Error("Missing return statement in function");
}
final public List CmdParamList() throws ParseException {
List list = new ArrayList();
CommandParameterNode item;
ParseTreeNode expr = null;
if (jj_2_3(2)) {
expr = ExpressionOrSelect();
list.add(new CommandParameterNode(expr));
} else {
;
}
label_5:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER_KEY:
;
break;
default:
jj_la1[9] = jj_gen;
break label_5;
}
item = CommandParam();
list.add(item);
}
{if (true) return list;}
throw new Error("Missing return statement in function");
}
final public CommandParameterNode CommandParam() throws ParseException {
String name;
ParseTreeNode expr = null;
int line;
jj_consume_token(S_IDENTIFIER_KEY);
name = token.image; line = token.beginLine;
if (jj_2_4(2)) {
expr = ExpressionOrSelect();
} else {
;
}
CommandParameterNode node = new CommandParameterNode(name, expr);
node.setLoc(line);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
/* ------------ SELECT clause ----------------------*/
final public SelectNode SelectStatement() throws ParseException {
SelectNode selNode;
selNode = SelectExpression();
{if (true) return selNode;}
throw new Error("Missing return statement in function");
}
final public SelectNode SelectExpression() throws ParseException {
SelectItemList selectList;
FromList from = null;
ParseTreeNode where = null;
ParseTreeNode split = null;
StatementListNode let = null;
boolean distinct = false;
ParseTreeNode limit = null;
ParseTreeNode offset = null;
List orderByList = null;
List groupByList = null;
jj_consume_token(K_SELECT);
int line = token.beginLine;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_DISTINCT:
jj_consume_token(K_DISTINCT);
distinct = true;
break;
default:
jj_la1[10] = jj_gen;
;
}
selectList = SelectList();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_LET:
let = LetClause();
break;
default:
jj_la1[11] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_FROM:
from = FromClause();
break;
default:
jj_la1[12] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_SPLIT:
split = SplitByClause();
break;
default:
jj_la1[13] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_WHERE:
where = WhereClause();
break;
default:
jj_la1[14] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_GROUP:
groupByList = GroupBy();
break;
default:
jj_la1[15] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_ORDER:
orderByList = OrderBy();
break;
default:
jj_la1[16] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_LIMIT:
jj_consume_token(K_LIMIT);
limit = Expression();
break;
default:
jj_la1[17] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_OFFSET:
jj_consume_token(K_OFFSET);
offset = Expression();
break;
default:
jj_la1[18] = jj_gen;
;
}
SelectNode node = new SelectNode(selectList, distinct, let, from, where, split, limit, offset, groupByList, orderByList );
node.setLoc(line);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
final public SelectItemList SelectList() throws ParseException {
SelectItemList list = new SelectItemList();
SelectItemNode item;
item = SelectItem();
list.add(item);
label_6:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[19] = jj_gen;
break label_6;
}
jj_consume_token(COMMA);
item = SelectItem();
list.add(item);
}
{if (true) return list;}
throw new Error("Missing return statement in function");
}
final public SelectItemNode SelectItem() throws ParseException {
ParseTreeNode expr = null;
Token nameTok;
Token alias = null;
if (jj_2_6(2)) {
expr = StarredTableRef();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_IDENTIFIER_KEY:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER_KEY:
alias = jj_consume_token(S_IDENTIFIER_KEY);
break;
default:
jj_la1[20] = jj_gen;
;
}
expr = Expression();
if (jj_2_5(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_AS:
jj_consume_token(K_AS);
break;
default:
jj_la1[21] = jj_gen;
;
}
alias = jj_consume_token(S_IDENTIFIER);
} else {
;
}
break;
default:
jj_la1[22] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
String aliasName = alias != null ? alias.toString() : null;
{if (true) return new SelectItemNode(expr, aliasName );}
throw new Error("Missing return statement in function");
}
final public TableRefNode StarredTableRef() throws ParseException {
TableRefNode expr = null;
Token nameTok;
String exceptCol = null;
List colList = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASTERISK:
jj_consume_token(ASTERISK);
expr = new TableRefNode();
expr.setLoc(token.beginLine);
break;
default:
jj_la1[23] = jj_gen;
if (jj_2_7(2)) {
nameTok = IdentifierToken();
jj_consume_token(93);
expr = new TableRefNode(nameTok.toString());
expr.setLoc(nameTok.beginLine);
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EXCEPT:
jj_consume_token(K_EXCEPT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
exceptCol = Identifier();
colList = new ArrayList();
colList.add(exceptCol);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
colList = IdentifierList();
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[24] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
expr.setExceptCols(colList);
break;
default:
jj_la1[25] = jj_gen;
;
}
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
/* ------------ LET clause ----------------------*/
final public StatementListNode LetClause() throws ParseException {
StatementListNode stmtList = null;
jj_consume_token(K_LET);
stmtList = AliasList();
{if (true) return stmtList;}
throw new Error("Missing return statement in function");
}
/* ------------ FROM clause ----------------------*/
final public FromList FromClause() throws ParseException {
Token fromTok = null;
FromList fromList = new FromList();
TableExpressionNode tblExpr;
FromItem joinItem;
fromTok = jj_consume_token(K_FROM);
tblExpr = FromTableExpr();
FromItem fromItem = new FromItem(tblExpr);
fromItem.setLoc(fromTok.beginLine);
fromList.add(fromItem);
label_7:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_INNER:
case K_JOIN:
case K_LEFT:
case K_RIGHT:
;
break;
default:
jj_la1[26] = jj_gen;
break label_7;
}
joinItem = JoinItem();
fromList.add(joinItem);
}
{if (true) return fromList;}
throw new Error("Missing return statement in function");
}
final public FromItem JoinItem() throws ParseException {
Token joinTok = null;
TableExpressionNode tblExpr = null;
ParseTreeNode onExpr = null;
int joinType = FromItem.JOIN_INNER;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_INNER:
case K_LEFT:
case K_RIGHT:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_INNER:
jj_consume_token(K_INNER);
joinType = FromItem.JOIN_INNER;
break;
case K_LEFT:
jj_consume_token(K_LEFT);
joinType = FromItem.JOIN_LEFT_OUTER;
break;
case K_RIGHT:
jj_consume_token(K_RIGHT);
joinType = FromItem.JOIN_RIGHT_OUTER;
break;
default:
jj_la1[27] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_OUTER:
jj_consume_token(K_OUTER);
if (joinType == FromItem.JOIN_INNER) joinType = FromItem.JOIN_OUTER;
break;
default:
jj_la1[28] = jj_gen;
;
}
break;
default:
jj_la1[29] = jj_gen;
;
}
joinTok = jj_consume_token(K_JOIN);
tblExpr = FromTableExpr();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_ON:
jj_consume_token(K_ON);
onExpr = BooleanExpression();
break;
default:
jj_la1[30] = jj_gen;
;
}
FromItem fromItem = new FromItem(joinType, tblExpr, onExpr);
fromItem.setLoc(joinTok.beginLine);
{if (true) return fromItem;}
throw new Error("Missing return statement in function");
}
final public TableExpressionNode FromTableExpr() throws ParseException {
Token tbl = null;
Token alias = null;
ParseTreeNode expr = null;
List colList = null;
int colListLine = 0;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPENPAREN:
jj_consume_token(OPENPAREN);
expr = SelectExpression();
jj_consume_token(CLOSEPAREN);
break;
case K_TABLE:
case OPENBRACKET:
expr = TableValue();
break;
default:
jj_la1[31] = jj_gen;
if (jj_2_8(2)) {
expr = Function();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
tbl = jj_consume_token(S_IDENTIFIER);
String tblName = tbl.toString();
expr = new TableRefNode(tblName);
expr.setLoc(tbl.beginLine);
break;
default:
jj_la1[32] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
if (jj_2_9(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_AS:
jj_consume_token(K_AS);
break;
default:
jj_la1[33] = jj_gen;
;
}
alias = jj_consume_token(S_IDENTIFIER);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPENPAREN:
jj_consume_token(OPENPAREN);
colListLine = token.beginLine;
colList = IdentifierList();
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[34] = jj_gen;
;
}
} else {
;
}
String aliasName = alias != null ? alias.toString() : null;
{if (true) return new TableExpressionNode(expr, aliasName, colList, colListLine);}
throw new Error("Missing return statement in function");
}
/* ------------ WHERE clause ----------------------*/
final public ParseTreeNode WhereClause() throws ParseException {
ParseTreeNode expr;
jj_consume_token(K_WHERE);
expr = BooleanExpression();
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
/* ------------ SPLIT BY clause ----------------------*/
final public ParseTreeNode SplitByClause() throws ParseException {
ParseTreeNode expr;
jj_consume_token(K_SPLIT);
jj_consume_token(K_BY);
expr = Expression();
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
/* ------------ GROUP BY clause ----------------------*/
// for now GROUP BY allows only a list of identifiers
// FUTURE: allow arbitrary expressions
final public List GroupBy() throws ParseException {
List result = null;
jj_consume_token(K_GROUP);
jj_consume_token(K_BY);
result = TableColumnList();
{if (true) return result;}
throw new Error("Missing return statement in function");
}
/* ------------ ORDER BY clause ----------------------*/
final public List OrderBy() throws ParseException {
List result = null;
jj_consume_token(K_ORDER);
jj_consume_token(K_BY);
result = OrderByList();
{if (true) return result;}
throw new Error("Missing return statement in function");
}
final public List OrderByList() throws ParseException {
List orderList = new ArrayList();
OrderItem item = null;
item = OrderByItem();
orderList.add(item);
label_8:
while (true) {
if (jj_2_10(2)) {
;
} else {
break label_8;
}
jj_consume_token(COMMA);
item = OrderByItem();
orderList.add(item);
}
{if (true) return orderList;}
throw new Error("Missing return statement in function");
}
final public OrderItem OrderByItem() throws ParseException {
String itemLiteral = null;
boolean isAscending = true;
// for now only allow named select columns (column indexes can be added later)
itemLiteral = Identifier();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_ASC:
case K_DESC:
isAscending = OrderDirection();
break;
default:
jj_la1[35] = jj_gen;
;
}
{if (true) return new OrderItem(itemLiteral, isAscending);}
throw new Error("Missing return statement in function");
}
final public boolean OrderDirection() throws ParseException {
boolean ascending = true;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_ASC:
jj_consume_token(K_ASC);
break;
case K_DESC:
jj_consume_token(K_DESC);
ascending = false;
break;
default:
jj_la1[36] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return ascending;}
throw new Error("Missing return statement in function");
}
/* ------------ VALUES clause ----------------------*/
// not used, and probably broken/unusable
final public ValuesNode ValuesExpression() throws ParseException {
ValuesNode values = new ValuesNode();
List exprList;
jj_consume_token(K_VALUES);
jj_consume_token(OPENPAREN);
exprList = ExpressionList();
values.add(exprList);
jj_consume_token(CLOSEPAREN);
label_9:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[37] = jj_gen;
break label_9;
}
jj_consume_token(COMMA);
jj_consume_token(OPENPAREN);
exprList = ExpressionList();
values.add(exprList);
jj_consume_token(CLOSEPAREN);
}
{if (true) return values;}
throw new Error("Missing return statement in function");
}
/* ------------ TABLE value ----------------------*/
final public TableValueNode TableValue() throws ParseException {
TableValueNode expr;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_TABLE:
expr = TableKeywordValue();
break;
case OPENBRACKET:
expr = TableBracketValue();
break;
default:
jj_la1[38] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
final public TableValueNode TableKeywordValue() throws ParseException {
TableValueNode value = new TableValueNode();
TableSchemaNode schema = null;
List exprList;
jj_consume_token(K_TABLE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
schema = TableSchemaExpr();
value.setSchema(schema);
break;
default:
jj_la1[39] = jj_gen;
;
}
jj_consume_token(OPENPAREN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPENPAREN:
jj_consume_token(OPENPAREN);
exprList = ExpressionList();
value.add(exprList);
jj_consume_token(CLOSEPAREN);
label_10:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
case OPENPAREN:
;
break;
default:
jj_la1[40] = jj_gen;
break label_10;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
jj_consume_token(COMMA);
break;
default:
jj_la1[41] = jj_gen;
;
}
jj_consume_token(OPENPAREN);
exprList = ExpressionList();
value.add(exprList);
jj_consume_token(CLOSEPAREN);
}
break;
default:
jj_la1[42] = jj_gen;
;
}
jj_consume_token(CLOSEPAREN);
{if (true) return value;}
throw new Error("Missing return statement in function");
}
final public TableValueNode TableBracketValue() throws ParseException {
TableValueNode value = new TableValueNode();
TableSchemaNode schema = null;
List exprList;
jj_consume_token(OPENBRACKET);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
schema = TableSchemaExpr();
value.setSchema(schema);
break;
default:
jj_la1[43] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPENBRACKET:
jj_consume_token(OPENBRACKET);
exprList = ExpressionList();
value.add(exprList);
jj_consume_token(CLOSEBRACKET);
label_11:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
case OPENBRACKET:
;
break;
default:
jj_la1[44] = jj_gen;
break label_11;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
jj_consume_token(COMMA);
break;
default:
jj_la1[45] = jj_gen;
;
}
jj_consume_token(OPENBRACKET);
exprList = ExpressionList();
value.add(exprList);
jj_consume_token(CLOSEBRACKET);
}
break;
default:
jj_la1[46] = jj_gen;
;
}
jj_consume_token(CLOSEBRACKET);
{if (true) return value;}
throw new Error("Missing return statement in function");
}
final public TableSchemaNode TableSchemaExpr() throws ParseException {
Token alias = null;
List colList = null;
int colListLine = 0;
alias = jj_consume_token(S_IDENTIFIER);
if (jj_2_11(2)) {
jj_consume_token(OPENPAREN);
colListLine = token.beginLine;
colList = IdentifierList();
jj_consume_token(CLOSEPAREN);
} else {
;
}
String aliasName = alias != null ? alias.toString() : null;
{if (true) return new TableSchemaNode(aliasName, colList, colListLine);}
throw new Error("Missing return statement in function");
}
/* ------------ Functions ----------------------*/
final public FunctionNode Function() throws ParseException {
String name1 = null;
String name2 = null;
List args = null;
ParseTreeNode sel = null;
FunctionNode node = new FunctionNode();
jj_consume_token(S_IDENTIFIER);
name1 = token.image;
node.setLoc(token.beginLine);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
jj_consume_token(DOT);
jj_consume_token(S_IDENTIFIER);
name2 = token.image;
break;
default:
jj_la1[47] = jj_gen;
;
}
jj_consume_token(OPENPAREN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_SELECT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case ASTERISK:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASTERISK:
jj_consume_token(ASTERISK);
args = new ArrayList();
ParseTreeNode tblRefNode = new TableRefNode();
tblRefNode.setLoc(token.beginLine);
args.add(tblRefNode);
break;
case K_SELECT:
sel = SelectExpression();
args = new ArrayList();
args.add(sel);
break;
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
args = ExpressionList();
break;
default:
jj_la1[48] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[49] = jj_gen;
;
}
jj_consume_token(CLOSEPAREN);
node.setFunction(name1, name2, args);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
/* ------------ Expressions ----------------------*/
final public ParseTreeNode Expression() throws ParseException {
ParseTreeNode expr;
expr = ConditionalExpression();
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode ExpressionOrSelect() throws ParseException {
ParseTreeNode expr;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
expr = Expression();
break;
case K_SELECT:
expr = SelectExpression();
break;
default:
jj_la1[50] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode ConditionalExpression() throws ParseException {
ParseTreeNode condExpr = null;
ParseTreeNode expr1 = null;
ParseTreeNode expr2 = null;
condExpr = BooleanExpression();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case QUESTIONMARK:
jj_consume_token(QUESTIONMARK);
expr1 = Expression();
jj_consume_token(COLON);
expr2 = Expression();
break;
default:
jj_la1[51] = jj_gen;
;
}
if (expr1 != null)
{if (true) return new ConditionalExpressionNode(condExpr, expr1, expr2);}
else
{if (true) return condExpr;}
throw new Error("Missing return statement in function");
}
/* ------------ Boolean Expressions ----------------------*/
final public ParseTreeNode BooleanExpression() throws ParseException {
ParseTreeNode e;
e = OrExpr();
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode OrExpr() throws ParseException {
ParseTreeNode e;
ParseTreeNode e2;
int line;
e = AndExpr();
label_12:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_OR:
;
break;
default:
jj_la1[52] = jj_gen;
break label_12;
}
jj_consume_token(K_OR);
String op = token.image; line = token.beginLine;
e2 = AndExpr();
e = new BinaryExpressionNode(op, e, e2, line);
}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode AndExpr() throws ParseException {
ParseTreeNode e;
ParseTreeNode e2;
int line;
e = UnaryBooleanExpr();
label_13:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_AND:
case K_XOR:
;
break;
default:
jj_la1[53] = jj_gen;
break label_13;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_AND:
jj_consume_token(K_AND);
break;
case K_XOR:
jj_consume_token(K_XOR);
break;
default:
jj_la1[54] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
String op = token.image; line = token.beginLine;
e2 = UnaryBooleanExpr();
e = new BinaryExpressionNode(op, e, e2, line);
}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode UnaryBooleanExpr() throws ParseException {
ParseTreeNode e = null;
SelectNode eSel = null;
String notOp = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_NOT:
jj_consume_token(K_NOT);
notOp = token.image;
break;
default:
jj_la1[55] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EXISTS:
jj_consume_token(K_EXISTS);
jj_consume_token(OPENPAREN);
eSel = SelectExpression();
jj_consume_token(CLOSEPAREN);
e = new ExistsNode(eSel);
break;
case K_CASE:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
e = RelationalExpr();
break;
default:
jj_la1[56] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (notOp != null)
{if (true) return new UnaryExpressionNode(notOp, e);}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode RelationalExpr() throws ParseException {
ParseTreeNode e;
ParseTreeNode e2;
String op;
int line;
e = ArithExpression();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_IN:
case K_NOT:
case GREATER:
case GREATEREQUAL:
case LESS:
case LESSEQUAL:
case EQUAL:
case NOTEQUAL:
case REGEX_FIND:
case REGEX_MATCH:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case GREATER:
case GREATEREQUAL:
case LESS:
case LESSEQUAL:
case EQUAL:
case NOTEQUAL:
case REGEX_FIND:
case REGEX_MATCH:
op = RelationalOp();
line = token.beginLine;
e2 = ArithExpression();
e = new BinaryExpressionNode(op, e, e2, line);
break;
default:
jj_la1[57] = jj_gen;
if (jj_2_12(2)) {
e = InOpExpr(e);
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
break;
default:
jj_la1[58] = jj_gen;
;
}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode InOpExpr(ParseTreeNode lhs) throws ParseException {
boolean notPresent = false;
SelectNode eSel = null;
List exprList = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_NOT:
jj_consume_token(K_NOT);
notPresent = true;
break;
default:
jj_la1[59] = jj_gen;
;
}
jj_consume_token(K_IN);
jj_consume_token(OPENPAREN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_SELECT:
eSel = SelectExpression();
break;
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
exprList = ExpressionList();
break;
default:
jj_la1[60] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(CLOSEPAREN);
if (eSel != null)
{if (true) return new InNode(lhs, eSel, notPresent);}
else
{if (true) return new InNode(lhs, exprList, notPresent);}
throw new Error("Missing return statement in function");
}
/* ------------ Arithmetic Expressions ----------------------*/
final public ParseTreeNode ArithExpression() throws ParseException {
ParseTreeNode e;
e = AddExpr();
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode AddExpr() throws ParseException {
ParseTreeNode e;
ParseTreeNode e2;
int line;
e = MultExpr();
label_14:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MINUS:
case PLUS:
;
break;
default:
jj_la1[61] = jj_gen;
break label_14;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
jj_consume_token(PLUS);
break;
case MINUS:
jj_consume_token(MINUS);
break;
default:
jj_la1[62] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
String op = token.image; line = token.beginLine;
e2 = MultExpr();
e = new BinaryExpressionNode(op, e, e2,line);
}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode MultExpr() throws ParseException {
ParseTreeNode e;
ParseTreeNode e2;
int line;
e = UnaryExpr();
label_15:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASTERISK:
case PERCENT:
case SLASH:
;
break;
default:
jj_la1[63] = jj_gen;
break label_15;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASTERISK:
jj_consume_token(ASTERISK);
break;
case SLASH:
jj_consume_token(SLASH);
break;
case PERCENT:
jj_consume_token(PERCENT);
break;
default:
jj_la1[64] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
String op = token.image; line = token.beginLine;
e2 = UnaryExpr();
e = new BinaryExpressionNode(op, e, e2,line);
}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode UnaryExpr() throws ParseException {
ParseTreeNode e = null;
String op = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MINUS:
case PLUS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
jj_consume_token(PLUS);
break;
case MINUS:
jj_consume_token(MINUS);
break;
default:
jj_la1[65] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
op = token.image;
break;
default:
jj_la1[66] = jj_gen;
;
}
e = Term();
if (op != null)
{if (true) return new UnaryExpressionNode(op, e);}
{if (true) return e;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode Term() throws ParseException {
ParseTreeNode expr = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPENPAREN:
jj_consume_token(OPENPAREN);
expr = Expression();
jj_consume_token(CLOSEPAREN);
break;
case K_CASE:
expr = CaseExpr();
break;
case S_CONST_LITERAL:
jj_consume_token(S_CONST_LITERAL);
expr = new NamedConstantNode(token.image);
expr.setLoc(token.beginLine);
break;
default:
jj_la1[68] = jj_gen;
if (jj_2_13(4)) {
expr = Geometry();
} else if (jj_2_14(4)) {
expr = Function();
} else if (jj_2_15(3)) {
expr = TableColumn();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_TABLE:
case OPENBRACKET:
expr = TableValue();
break;
case S_NUMBER:
jj_consume_token(S_NUMBER);
expr = new NumericConstantNode(token.image);
expr.setLoc(token.beginLine);
break;
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_STRING_LITERAL:
jj_consume_token(S_STRING_LITERAL);
break;
case S_RAW_STRING_LITERAL:
jj_consume_token(S_RAW_STRING_LITERAL);
break;
case S_RICH_STRING_LITERAL:
jj_consume_token(S_RICH_STRING_LITERAL);
break;
default:
jj_la1[67] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
expr = new StringLiteralNode(token.image);
expr.setLoc(token.beginLine);
break;
default:
jj_la1[69] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
{if (true) return expr;}
throw new Error("Missing return statement in function");
}
final public ParseTreeNode CaseExpr() throws ParseException {
List cases = new ArrayList();
ParseTreeNode valueExpr = null;
ParseTreeNode whenExpr = null;
ParseTreeNode thenExpr = null;
ParseTreeNode elseExpr = null;
jj_consume_token(K_CASE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_CASE:
case K_EXISTS:
case K_NOT:
case K_TABLE:
case K_LINEARRING:
case K_LINESTRING:
case K_POLYGON:
case K_POINT:
case K_MULTIPOINT:
case K_MULTILINESTRING:
case K_MULTIPOLYGON:
case K_GEOMETRYCOLLECTION:
case K_BOX:
case S_NUMBER:
case S_CONST_LITERAL:
case S_IDENTIFIER:
case S_QUOTED_IDENTIFIER:
case S_STRING_LITERAL:
case S_RAW_STRING_LITERAL:
case S_RICH_STRING_LITERAL:
case MINUS:
case OPENBRACKET:
case OPENPAREN:
case PLUS:
// presence of expression here indicates simple case; otherwise is searched case
valueExpr = Expression();
break;
default:
jj_la1[70] = jj_gen;
;
}
label_16:
while (true) {
jj_consume_token(K_WHEN);
whenExpr = Expression();
cases.add(whenExpr);
jj_consume_token(K_THEN);
thenExpr = Expression();
cases.add(thenExpr);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_WHEN:
;
break;
default:
jj_la1[71] = jj_gen;
break label_16;
}
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_ELSE:
jj_consume_token(K_ELSE);
elseExpr = Expression();
break;
default:
jj_la1[72] = jj_gen;
;
}
jj_consume_token(K_END);
{if (true) return new CaseNode(valueExpr, cases, elseExpr);}
throw new Error("Missing return statement in function");
}
/***************************************************************/
/**** ---------------- Geometry Productions ---------------- ***/
/***************************************************************/
final public ParseTreeNode Geometry() throws ParseException {
Geometry g = null;
g = GeometryTaggedText();
{if (true) return new GeometryConstantNode(g);}
throw new Error("Missing return statement in function");
}
final public Geometry GeometryTaggedText() throws ParseException {
Geometry g = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_POINT:
g = PointTaggedText();
break;
case K_LINESTRING:
g = LineStringTaggedText();
break;
case K_LINEARRING:
g = LinearRingTaggedText();
break;
case K_POLYGON:
g = PolygonTaggedText();
break;
case K_MULTIPOINT:
g = MultiPointTaggedText();
break;
case K_MULTILINESTRING:
g = MultiLineStringTaggedText();
break;
case K_MULTIPOLYGON:
g = MultiPolygonTaggedText();
break;
case K_GEOMETRYCOLLECTION:
g = GeometryCollectionTaggedText();
break;
case K_BOX:
g = BoxTaggedText();
break;
default:
jj_la1[73] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return g;}
throw new Error("Missing return statement in function");
}
final public Geometry PointTaggedText() throws ParseException {
Geometry geom;
jj_consume_token(K_POINT);
geom = PointText();
{if (true) return geom;}
throw new Error("Missing return statement in function");
}
final public Geometry PointText() throws ParseException {
Coordinate coord = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
coord = Coordinate();
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[74] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[75] = jj_gen;
;
}
{if (true) return GeometryBuilder.createPoint(coord);}
throw new Error("Missing return statement in function");
}
final public Geometry LineStringTaggedText() throws ParseException {
Geometry geom;
jj_consume_token(K_LINESTRING);
geom = LineStringText();
{if (true) return geom;}
throw new Error("Missing return statement in function");
}
final public Geometry LineStringText() throws ParseException {
Coordinate[] seq = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
seq = CoordinateSeq();
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[76] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[77] = jj_gen;
;
}
{if (true) return GeometryBuilder.createLineString(seq);}
throw new Error("Missing return statement in function");
}
final public Geometry LinearRingTaggedText() throws ParseException {
Geometry geom;
jj_consume_token(K_LINEARRING);
geom = LinearRingText();
{if (true) return geom;}
throw new Error("Missing return statement in function");
}
final public Geometry LinearRingText() throws ParseException {
Coordinate[] seq = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
seq = CoordinateSeq();
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[78] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[79] = jj_gen;
;
}
{if (true) return GeometryBuilder.createLinearRing(seq);}
throw new Error("Missing return statement in function");
}
final public Geometry BoxTaggedText() throws ParseException {
Geometry geom;
jj_consume_token(K_BOX);
geom = BoxText();
{if (true) return geom;}
throw new Error("Missing return statement in function");
}
final public Geometry BoxText() throws ParseException {
Coordinate coord1 = null;
Coordinate coord2 = null;
jj_consume_token(OPENPAREN);
coord1 = Coordinate();
jj_consume_token(COMMA);
coord2 = Coordinate();
jj_consume_token(CLOSEPAREN);
{if (true) return GeometryBuilder.createBox(coord1, coord2);}
throw new Error("Missing return statement in function");
}
final public Geometry PolygonTaggedText() throws ParseException {
Geometry geom;
jj_consume_token(K_POLYGON);
geom = PolygonText();
{if (true) return geom;}
throw new Error("Missing return statement in function");
}
final public Geometry PolygonText() throws ParseException {
Coordinate[] shell = null;
Coordinate[] hole = null;
List holes = new ArrayList();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
jj_consume_token(OPENPAREN);
shell = CoordinateSeq();
jj_consume_token(CLOSEPAREN);
label_17:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[80] = jj_gen;
break label_17;
}
jj_consume_token(COMMA);
jj_consume_token(OPENPAREN);
hole = CoordinateSeq();
jj_consume_token(CLOSEPAREN);
holes.add(hole);
}
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[81] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[82] = jj_gen;
;
}
{if (true) return GeometryBuilder.createPolygon(shell, holes);}
throw new Error("Missing return statement in function");
}
final public Geometry MultiPointTaggedText() throws ParseException {
Geometry geom;
List geoms = new ArrayList();
jj_consume_token(K_MULTIPOINT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
geom = PointText();
geoms.add(geom);
label_18:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[83] = jj_gen;
break label_18;
}
jj_consume_token(COMMA);
geom = PointText();
geoms.add(geom);
}
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[84] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[85] = jj_gen;
;
}
{if (true) return GeometryBuilder.createMultiPoint(geoms);}
throw new Error("Missing return statement in function");
}
final public Geometry MultiLineStringTaggedText() throws ParseException {
Geometry geom;
List geoms = new ArrayList();
jj_consume_token(K_MULTILINESTRING);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
geom = LineStringText();
geoms.add(geom);
label_19:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[86] = jj_gen;
break label_19;
}
jj_consume_token(COMMA);
geom = LineStringText();
geoms.add(geom);
}
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[87] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[88] = jj_gen;
;
}
{if (true) return GeometryBuilder.createMultiLineString(geoms);}
throw new Error("Missing return statement in function");
}
final public Geometry MultiPolygonTaggedText() throws ParseException {
Geometry geom;
List geoms = new ArrayList();
jj_consume_token(K_MULTIPOLYGON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
geom = PolygonText();
geoms.add(geom);
label_20:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[89] = jj_gen;
break label_20;
}
jj_consume_token(COMMA);
geom = PolygonText();
geoms.add(geom);
}
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[90] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[91] = jj_gen;
;
}
{if (true) return GeometryBuilder.createMultiPolygon(geoms);}
throw new Error("Missing return statement in function");
}
final public Geometry GeometryCollectionTaggedText() throws ParseException {
Geometry geom;
List geoms = new ArrayList();
jj_consume_token(K_GEOMETRYCOLLECTION);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
case OPENPAREN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case K_EMPTY:
jj_consume_token(K_EMPTY);
break;
case OPENPAREN:
jj_consume_token(OPENPAREN);
geom = GeometryTaggedText();
geoms.add(geom);
label_21:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[92] = jj_gen;
break label_21;
}
jj_consume_token(COMMA);
geom = GeometryTaggedText();
geoms.add(geom);
}
jj_consume_token(CLOSEPAREN);
break;
default:
jj_la1[93] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[94] = jj_gen;
;
}
{if (true) return GeometryBuilder.createGeometryCollection(geoms);}
throw new Error("Missing return statement in function");
}
final public Coordinate[] CoordinateSeq() throws ParseException {
Coordinate coord = null;
CoordinateList coordList = new CoordinateList();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_NUMBER:
case MINUS:
coord = Coordinate();
coordList.add(coord);
break;
default:
jj_la1[95] = jj_gen;
;
}
label_22:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[96] = jj_gen;
break label_22;
}
jj_consume_token(COMMA);
coord = Coordinate();
coordList.add(coord);
}
{if (true) return coordList.toCoordinateArray();}
throw new Error("Missing return statement in function");
}
final public Coordinate Coordinate() throws ParseException {
double x, y, z;
boolean negX = false, negY = false;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MINUS:
jj_consume_token(MINUS);
negX = true;
break;
default:
jj_la1[97] = jj_gen;
;
}
jj_consume_token(S_NUMBER);
x = Double.parseDouble(token.image);
x = negX ? -x : x;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MINUS:
jj_consume_token(MINUS);
negY = true;
break;
default:
jj_la1[98] = jj_gen;
;
}
jj_consume_token(S_NUMBER);
y = Double.parseDouble(token.image);
y = negY ? -y : y;
{if (true) return new Coordinate(x, y);}
throw new Error("Missing return statement in function");
}
/***************************************************************/
/** ---------------- Utility Productions --------------------- */
/***************************************************************/
final public List ExpressionList() throws ParseException {
List list = new ArrayList();
ParseTreeNode item;
item = Expression();
list.add(item);
label_23:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[99] = jj_gen;
break label_23;
}
jj_consume_token(COMMA);
item = Expression();
list.add(item);
}
{if (true) return list;}
throw new Error("Missing return statement in function");
}
final public TableColumnNode TableColumn() throws ParseException {
String s1 = null, s2 = null;
TableColumnNode node;
int line = 0;
// table.column
s1 = Identifier();
line = token.beginLine;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
jj_consume_token(DOT);
s2 = Identifier();
break;
default:
jj_la1[100] = jj_gen;
;
}
if (s2 == null)
node = new TableColumnNode(s1);
else
node = new TableColumnNode(s1, s2);
node.setLoc(line);
{if (true) return node;}
throw new Error("Missing return statement in function");
}
/* parses a list of one or more comma-separated TableColumns */
final public List TableColumnList() throws ParseException {
TableColumnNode col;
List colList = new ArrayList();
col = TableColumn();
colList.add(col);
label_24:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[101] = jj_gen;
break label_24;
}
jj_consume_token(COMMA);
col = TableColumn();
colList.add(col);
}
{if (true) return colList;}
throw new Error("Missing return statement in function");
}
final public String Identifier() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
t = jj_consume_token(S_IDENTIFIER);
break;
case S_QUOTED_IDENTIFIER:
t = jj_consume_token(S_QUOTED_IDENTIFIER);
break;
default:
jj_la1[102] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return t.toString();}
throw new Error("Missing return statement in function");
}
final public Token IdentifierToken() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S_IDENTIFIER:
t = jj_consume_token(S_IDENTIFIER);
break;
case S_QUOTED_IDENTIFIER:
t = jj_consume_token(S_QUOTED_IDENTIFIER);
break;
default:
jj_la1[103] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return t;}
throw new Error("Missing return statement in function");
}
/* parses a list of one or more comma-separated identifiers */
final public List IdentifierList() throws ParseException {
String id;
List idList = new ArrayList();
id = Identifier();
idList.add(id);
label_25:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[104] = jj_gen;
break label_25;
}
jj_consume_token(COMMA);
id = Identifier();
idList.add(id);
}
{if (true) return idList;}
throw new Error("Missing return statement in function");
}
final public String RelationalOp() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQUAL:
jj_consume_token(EQUAL);
break;
case NOTEQUAL:
jj_consume_token(NOTEQUAL);
break;
case GREATER:
jj_consume_token(GREATER);
break;
case GREATEREQUAL:
jj_consume_token(GREATEREQUAL);
break;
case LESS:
jj_consume_token(LESS);
break;
case LESSEQUAL:
jj_consume_token(LESSEQUAL);
break;
case REGEX_FIND:
jj_consume_token(REGEX_FIND);
break;
case REGEX_MATCH:
jj_consume_token(REGEX_MATCH);
break;
default:
jj_la1[105] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return token.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_3R_90() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_102()) return true;
}
return false;
}
private boolean jj_3R_129() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_131()) {
jj_scanpos = xsp;
if (jj_3_12()) return true;
}
return false;
}
private boolean jj_3R_131() {
if (jj_3R_134()) return true;
return false;
}
private boolean jj_3R_127() {
if (jj_3R_128()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_129()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_77() {
if (jj_scan_token(K_MULTIPOINT)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_90()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_124() {
if (jj_3R_127()) return true;
return false;
}
private boolean jj_3R_41() {
if (jj_3R_55()) return true;
return false;
}
private boolean jj_3R_40() {
if (jj_3R_54()) return true;
return false;
}
private boolean jj_3R_123() {
if (jj_scan_token(K_EXISTS)) return true;
if (jj_scan_token(OPENPAREN)) return true;
return false;
}
private boolean jj_3R_122() {
if (jj_scan_token(K_NOT)) return true;
return false;
}
private boolean jj_3R_112() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_121()) return true;
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_39() {
if (jj_scan_token(S_IDENTIFIER_KEY)) return true;
return false;
}
private boolean jj_3R_119() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_122()) jj_scanpos = xsp;
xsp = jj_scanpos;
if (jj_3R_123()) {
jj_scanpos = xsp;
if (jj_3R_124()) return true;
}
return false;
}
private boolean jj_3R_101() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_112()) return true;
}
return false;
}
private boolean jj_3R_38() {
if (jj_3R_49()) return true;
if (jj_scan_token(ASSIGN)) return true;
return false;
}
private boolean jj_3R_89() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_101()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_26() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_38()) {
jj_scanpos = xsp;
if (jj_3R_39()) return true;
}
xsp = jj_scanpos;
if (jj_3R_40()) {
jj_scanpos = xsp;
if (jj_3R_41()) return true;
}
return false;
}
private boolean jj_3R_120() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(7)) {
jj_scanpos = xsp;
if (jj_scan_token(43)) return true;
}
return false;
}
private boolean jj_3_2() {
if (jj_3R_27()) return true;
return false;
}
private boolean jj_3R_76() {
if (jj_scan_token(K_POLYGON)) return true;
if (jj_3R_89()) return true;
return false;
}
private boolean jj_3R_107() {
if (jj_3R_119()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_120()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3_1() {
if (jj_3R_26()) return true;
return false;
}
private boolean jj_3R_32() {
if (jj_scan_token(OPENPAREN)) return true;
return false;
}
private boolean jj_3R_94() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_106()) return true;
return false;
}
private boolean jj_3R_108() {
if (jj_scan_token(K_OR)) return true;
return false;
}
private boolean jj_3_9() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(8)) jj_scanpos = xsp;
if (jj_scan_token(S_IDENTIFIER)) return true;
xsp = jj_scanpos;
if (jj_3R_32()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_97() {
if (jj_3R_107()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_108()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_81() {
if (jj_scan_token(K_BOX)) return true;
if (jj_3R_94()) return true;
return false;
}
private boolean jj_3R_84() {
if (jj_3R_97()) return true;
return false;
}
private boolean jj_3R_111() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_121()) return true;
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3_8() {
if (jj_3R_31()) return true;
return false;
}
private boolean jj_3R_100() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_111()) return true;
}
return false;
}
private boolean jj_3R_85() {
if (jj_scan_token(QUESTIONMARK)) return true;
return false;
}
private boolean jj_3R_88() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_100()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_71() {
if (jj_3R_84()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_85()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_75() {
if (jj_scan_token(K_LINEARRING)) return true;
if (jj_3R_88()) return true;
return false;
}
private boolean jj_3R_110() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_121()) return true;
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_99() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_110()) return true;
}
return false;
}
private boolean jj_3R_45() {
if (jj_3R_54()) return true;
return false;
}
private boolean jj_3R_44() {
if (jj_3R_55()) return true;
return false;
}
private boolean jj_3R_87() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_99()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_28() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_44()) {
jj_scanpos = xsp;
if (jj_3R_45()) return true;
}
return false;
}
private boolean jj_3R_55() {
if (jj_3R_71()) return true;
return false;
}
private boolean jj_3R_74() {
if (jj_scan_token(K_LINESTRING)) return true;
if (jj_3R_87()) return true;
return false;
}
private boolean jj_3R_109() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_106()) return true;
return false;
}
private boolean jj_3R_98() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_109()) return true;
}
return false;
}
private boolean jj_3R_134() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(76)) {
jj_scanpos = xsp;
if (jj_scan_token(78)) {
jj_scanpos = xsp;
if (jj_scan_token(72)) {
jj_scanpos = xsp;
if (jj_scan_token(73)) {
jj_scanpos = xsp;
if (jj_scan_token(74)) {
jj_scanpos = xsp;
if (jj_scan_token(75)) {
jj_scanpos = xsp;
if (jj_scan_token(88)) {
jj_scanpos = xsp;
if (jj_scan_token(89)) return true;
}
}
}
}
}
}
}
return false;
}
private boolean jj_3R_86() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_98()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_68() {
if (jj_3R_82()) return true;
return false;
}
private boolean jj_3R_67() {
if (jj_3R_54()) return true;
return false;
}
private boolean jj_3R_34() {
if (jj_3R_49()) return true;
return false;
}
private boolean jj_3R_73() {
if (jj_scan_token(K_POINT)) return true;
if (jj_3R_86()) return true;
return false;
}
private boolean jj_3R_66() {
if (jj_scan_token(ASTERISK)) return true;
return false;
}
private boolean jj_3R_65() {
if (jj_3R_81()) return true;
return false;
}
private boolean jj_3R_64() {
if (jj_3R_80()) return true;
return false;
}
private boolean jj_3R_52() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_66()) {
jj_scanpos = xsp;
if (jj_3R_67()) {
jj_scanpos = xsp;
if (jj_3R_68()) return true;
}
}
return false;
}
private boolean jj_3R_63() {
if (jj_3R_79()) return true;
return false;
}
private boolean jj_3R_62() {
if (jj_3R_78()) return true;
return false;
}
private boolean jj_3R_61() {
if (jj_3R_77()) return true;
return false;
}
private boolean jj_3R_60() {
if (jj_3R_76()) return true;
return false;
}
private boolean jj_3R_59() {
if (jj_3R_75()) return true;
return false;
}
private boolean jj_3R_58() {
if (jj_3R_74()) return true;
return false;
}
private boolean jj_3R_48() {
if (jj_scan_token(DOT)) return true;
if (jj_scan_token(S_IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_57() {
if (jj_3R_73()) return true;
return false;
}
private boolean jj_3R_30() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(59)) {
jj_scanpos = xsp;
if (jj_scan_token(60)) return true;
}
return false;
}
private boolean jj_3R_31() {
if (jj_scan_token(S_IDENTIFIER)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_48()) jj_scanpos = xsp;
if (jj_scan_token(OPENPAREN)) return true;
xsp = jj_scanpos;
if (jj_3R_52()) jj_scanpos = xsp;
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_51() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_57()) {
jj_scanpos = xsp;
if (jj_3R_58()) {
jj_scanpos = xsp;
if (jj_3R_59()) {
jj_scanpos = xsp;
if (jj_3R_60()) {
jj_scanpos = xsp;
if (jj_3R_61()) {
jj_scanpos = xsp;
if (jj_3R_62()) {
jj_scanpos = xsp;
if (jj_3R_63()) {
jj_scanpos = xsp;
if (jj_3R_64()) {
jj_scanpos = xsp;
if (jj_3R_65()) return true;
}
}
}
}
}
}
}
}
return false;
}
private boolean jj_3R_36() {
if (jj_3R_51()) return true;
return false;
}
private boolean jj_3R_49() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(59)) {
jj_scanpos = xsp;
if (jj_scan_token(60)) return true;
}
return false;
}
private boolean jj_3_7() {
if (jj_3R_30()) return true;
if (jj_scan_token(93)) return true;
return false;
}
private boolean jj_3R_47() {
if (jj_scan_token(K_EXCEPT)) return true;
return false;
}
private boolean jj_3R_46() {
if (jj_scan_token(ASTERISK)) return true;
return false;
}
private boolean jj_3_11() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_34()) return true;
return false;
}
private boolean jj_3R_156() {
if (jj_scan_token(S_IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_29() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_46()) {
jj_scanpos = xsp;
if (jj_3_7()) return true;
}
xsp = jj_scanpos;
if (jj_3R_47()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_53() {
if (jj_scan_token(DOT)) return true;
if (jj_3R_49()) return true;
return false;
}
private boolean jj_3_5() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(8)) jj_scanpos = xsp;
if (jj_scan_token(S_IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_148() {
if (jj_scan_token(K_WHEN)) return true;
return false;
}
private boolean jj_3R_96() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(61)) jj_scanpos = xsp;
if (jj_3R_55()) return true;
return false;
}
private boolean jj_3R_37() {
if (jj_3R_49()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_53()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_147() {
if (jj_3R_55()) return true;
return false;
}
private boolean jj_3_6() {
if (jj_3R_29()) return true;
return false;
}
private boolean jj_3R_145() {
if (jj_scan_token(K_CASE)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_147()) jj_scanpos = xsp;
if (jj_3R_148()) return true;
while (true) {
xsp = jj_scanpos;
if (jj_3R_148()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_155() {
if (jj_scan_token(OPENBRACKET)) return true;
return false;
}
private boolean jj_3R_83() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_6()) {
jj_scanpos = xsp;
if (jj_3R_96()) return true;
}
return false;
}
private boolean jj_3R_154() {
if (jj_3R_156()) return true;
return false;
}
private boolean jj_3R_95() {
if (jj_scan_token(COMMA)) return true;
return false;
}
private boolean jj_3R_152() {
if (jj_scan_token(OPENBRACKET)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_154()) jj_scanpos = xsp;
xsp = jj_scanpos;
if (jj_3R_155()) jj_scanpos = xsp;
if (jj_scan_token(CLOSEBRACKET)) return true;
return false;
}
private boolean jj_3R_82() {
if (jj_3R_55()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_95()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_144() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(64)) {
jj_scanpos = xsp;
if (jj_scan_token(65)) {
jj_scanpos = xsp;
if (jj_scan_token(66)) return true;
}
}
return false;
}
private boolean jj_3R_70() {
if (jj_3R_83()) return true;
return false;
}
private boolean jj_3R_143() {
if (jj_scan_token(S_NUMBER)) return true;
return false;
}
private boolean jj_3R_142() {
if (jj_3R_146()) return true;
return false;
}
private boolean jj_3_15() {
if (jj_3R_37()) return true;
return false;
}
private boolean jj_3R_118() {
if (jj_scan_token(MINUS)) return true;
return false;
}
private boolean jj_3_14() {
if (jj_3R_31()) return true;
return false;
}
private boolean jj_3_13() {
if (jj_3R_36()) return true;
return false;
}
private boolean jj_3R_117() {
if (jj_scan_token(MINUS)) return true;
return false;
}
private boolean jj_3R_106() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_117()) jj_scanpos = xsp;
if (jj_scan_token(S_NUMBER)) return true;
xsp = jj_scanpos;
if (jj_3R_118()) jj_scanpos = xsp;
if (jj_scan_token(S_NUMBER)) return true;
return false;
}
private boolean jj_3R_141() {
if (jj_scan_token(S_CONST_LITERAL)) return true;
return false;
}
private boolean jj_3R_140() {
if (jj_3R_145()) return true;
return false;
}
private boolean jj_3R_153() {
if (jj_3R_156()) return true;
return false;
}
private boolean jj_3R_139() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_55()) return true;
return false;
}
private boolean jj_3R_151() {
if (jj_scan_token(K_TABLE)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_153()) jj_scanpos = xsp;
if (jj_scan_token(OPENPAREN)) return true;
return false;
}
private boolean jj_3R_138() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_139()) {
jj_scanpos = xsp;
if (jj_3R_140()) {
jj_scanpos = xsp;
if (jj_3R_141()) {
jj_scanpos = xsp;
if (jj_3_13()) {
jj_scanpos = xsp;
if (jj_3_14()) {
jj_scanpos = xsp;
if (jj_3_15()) {
jj_scanpos = xsp;
if (jj_3R_142()) {
jj_scanpos = xsp;
if (jj_3R_143()) {
jj_scanpos = xsp;
if (jj_3R_144()) return true;
}
}
}
}
}
}
}
}
return false;
}
private boolean jj_3R_69() {
if (jj_scan_token(K_DISTINCT)) return true;
return false;
}
private boolean jj_3R_150() {
if (jj_3R_152()) return true;
return false;
}
private boolean jj_3R_149() {
if (jj_3R_151()) return true;
return false;
}
private boolean jj_3R_54() {
if (jj_scan_token(K_SELECT)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_69()) jj_scanpos = xsp;
if (jj_3R_70()) return true;
return false;
}
private boolean jj_3R_126() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_106()) return true;
return false;
}
private boolean jj_3R_125() {
if (jj_3R_106()) return true;
return false;
}
private boolean jj_3R_137() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(87)) {
jj_scanpos = xsp;
if (jj_scan_token(77)) return true;
}
return false;
}
private boolean jj_3R_146() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_149()) {
jj_scanpos = xsp;
if (jj_3R_150()) return true;
}
return false;
}
private boolean jj_3R_135() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_137()) jj_scanpos = xsp;
if (jj_3R_138()) return true;
return false;
}
private boolean jj_3R_116() {
if (jj_scan_token(COMMA)) return true;
return false;
}
private boolean jj_3R_121() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_125()) jj_scanpos = xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_126()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_105() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_51()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_116()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_136() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(68)) {
jj_scanpos = xsp;
if (jj_scan_token(91)) {
jj_scanpos = xsp;
if (jj_scan_token(86)) return true;
}
}
return false;
}
private boolean jj_3R_93() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_105()) return true;
}
return false;
}
private boolean jj_3R_132() {
if (jj_3R_135()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_136()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3_4() {
if (jj_3R_28()) return true;
return false;
}
private boolean jj_3R_80() {
if (jj_scan_token(K_GEOMETRYCOLLECTION)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_93()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_115() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_89()) return true;
return false;
}
private boolean jj_3R_72() {
if (jj_scan_token(S_IDENTIFIER_KEY)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3_4()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_133() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(87)) {
jj_scanpos = xsp;
if (jj_scan_token(77)) return true;
}
return false;
}
private boolean jj_3R_104() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_89()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_115()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_130() {
if (jj_3R_132()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_133()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_92() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_104()) return true;
}
return false;
}
private boolean jj_3R_128() {
if (jj_3R_130()) return true;
return false;
}
private boolean jj_3R_56() {
if (jj_3R_72()) return true;
return false;
}
private boolean jj_3R_79() {
if (jj_scan_token(K_MULTIPOLYGON)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_92()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_33() {
if (jj_3R_49()) return true;
return false;
}
private boolean jj_3R_114() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_87()) return true;
return false;
}
private boolean jj_3_3() {
if (jj_3R_28()) return true;
return false;
}
private boolean jj_3R_43() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_3()) jj_scanpos = xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_56()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_103() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_87()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_114()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
private boolean jj_3R_91() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(44)) {
jj_scanpos = xsp;
if (jj_3R_103()) return true;
}
return false;
}
private boolean jj_3_10() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_33()) return true;
return false;
}
private boolean jj_3R_42() {
if (jj_scan_token(DOT)) return true;
if (jj_scan_token(S_IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_50() {
if (jj_scan_token(K_NOT)) return true;
return false;
}
private boolean jj_3R_78() {
if (jj_scan_token(K_MULTILINESTRING)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_91()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_35() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_50()) jj_scanpos = xsp;
if (jj_scan_token(K_IN)) return true;
if (jj_scan_token(OPENPAREN)) return true;
return false;
}
private boolean jj_3R_113() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_86()) return true;
return false;
}
private boolean jj_3R_27() {
if (jj_scan_token(S_IDENTIFIER)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_42()) jj_scanpos = xsp;
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3_12() {
if (jj_3R_35()) return true;
return false;
}
private boolean jj_3R_102() {
if (jj_scan_token(OPENPAREN)) return true;
if (jj_3R_86()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_113()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(CLOSEPAREN)) return true;
return false;
}
/** Generated Token Manager. */
public ParserTokenManager 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[106];
static private int[] jj_la1_0;
static private int[] jj_la1_1;
static private int[] jj_la1_2;
static {
jj_la1_init_0();
jj_la1_init_1();
jj_la1_init_2();
}
private static void jj_la1_init_0() {
jj_la1_0 = new int[] {0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x8020800,0x0,0x0,0x2000,0x1000000,0x40000,0x0,0x0,0x80000,0x80000000,0x4000000,0x10000000,0x0,0x0,0x100,0x8020800,0x0,0x0,0x10000,0x2c00000,0x2400000,0x0,0x2400000,0x20000000,0x0,0x0,0x100,0x0,0x1200,0x1200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8020800,0x8020800,0x8020800,0x0,0x40000000,0x80,0x80,0x8000000,0x20800,0x0,0x8200000,0x8000000,0x8020800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x8020800,0x0,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_init_1() {
jj_la1_1 = new int[] {0x0,0x0,0x8000000,0x38000008,0x0,0x8,0x38000000,0x1c7fe028,0x0,0x20000000,0x0,0x0,0x0,0x10,0x200,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x3c7fe020,0x0,0x18000000,0x0,0x4,0x4,0x1,0x4,0x0,0x20,0x8000000,0x0,0x0,0x0,0x0,0x0,0x20,0x8000000,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x1c7fe028,0x1c7fe028,0x1c7fe028,0x0,0x0,0x800,0x800,0x0,0x1c7fe020,0x0,0x0,0x0,0x1c7fe028,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x400020,0x1c7fe020,0x100,0x0,0x3fe000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x1000,0x1000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,};
}
private static void jj_la1_init_2() {
jj_la1_2 = new int[] {0x0,0x80,0x10,0x0,0x40,0x0,0x0,0x942007,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x942007,0x10,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x140000,0x0,0x0,0x100000,0x0,0x0,0x40,0x40000,0x0,0x100040,0x40,0x100000,0x0,0x40040,0x40,0x40000,0x80,0x942017,0x942017,0x942007,0x4000000,0x0,0x0,0x0,0x0,0x942007,0x3005f00,0x3005f00,0x0,0x942007,0x802000,0x802000,0x8400010,0x8400010,0x802000,0x802000,0x7,0x100000,0x40007,0x942007,0x0,0x0,0x0,0x100000,0x100000,0x100000,0x100000,0x100000,0x100000,0x40,0x100000,0x100000,0x40,0x100000,0x100000,0x40,0x100000,0x100000,0x40,0x100000,0x100000,0x40,0x100000,0x100000,0x2000,0x40,0x2000,0x2000,0x40,0x80,0x40,0x0,0x0,0x40,0x3005f00,};
}
final private JJCalls[] jj_2_rtns = new JJCalls[15];
private boolean jj_rescan = false;
private int jj_gc = 0;
/** Constructor with InputStream. */
public Parser(java.io.InputStream stream) {
this(stream, null);
}
/** Constructor with InputStream and supplied encoding */
public Parser(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 ParserTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(java.io.InputStream stream) {
ReInit(stream, null);
}
/** Reinitialise. */
public void ReInit(java.io.InputStream stream, String encoding) {
try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor. */
public Parser(java.io.Reader stream) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new ParserTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(java.io.Reader stream) {
jj_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor with generated Token Manager. */
public Parser(ParserTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(ParserTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 106; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
if (token.kind == kind) {
jj_gen++;
if (++jj_gc > 100) {
jj_gc = 0;
for (int i = 0; i < jj_2_rtns.length; i++) {
JJCalls c = jj_2_rtns[i];
while (c != null) {
if (c.gen < jj_gen) c.first = null;
c = c.next;
}
}
}
return token;
}
token = oldToken;
jj_kind = kind;
throw generateParseException();
}
static private final class LookaheadSuccess extends java.lang.Error { }
final private LookaheadSuccess jj_ls = new LookaheadSuccess();
private boolean jj_scan_token(int kind) {
if (jj_scanpos == jj_lastpos) {
jj_la--;
if (jj_scanpos.next == null) {
jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
} else {
jj_lastpos = jj_scanpos = jj_scanpos.next;
}
} else {
jj_scanpos = jj_scanpos.next;
}
if (jj_rescan) {
int i = 0; Token tok = token;
while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
if (tok != null) jj_add_error_token(kind, i);
}
if (jj_scanpos.kind != kind) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
return false;
}
/** Get the next Token. */
final public Token getNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
jj_gen++;
return token;
}
/** Get the specific Token. */
final public Token getToken(int index) {
Token t = token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.getNextToken();
}
return t;
}
private int jj_ntk() {
if ((jj_nt=token.next) == null)
return (jj_ntk = (token.next=token_source.getNextToken()).kind);
else
return (jj_ntk = jj_nt.kind);
}
private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
private int[] jj_expentry;
private int jj_kind = -1;
private int[] jj_lasttokens = new int[100];
private int jj_endpos;
private void jj_add_error_token(int kind, int pos) {
if (pos >= 100) return;
if (pos == jj_endpos + 1) {
jj_lasttokens[jj_endpos++] = kind;
} else if (jj_endpos != 0) {
jj_expentry = new int[jj_endpos];
for (int i = 0; i < jj_endpos; i++) {
jj_expentry[i] = jj_lasttokens[i];
}
jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
int[] oldentry = (int[])(it.next());
if (oldentry.length == jj_expentry.length) {
for (int i = 0; i < jj_expentry.length; i++) {
if (oldentry[i] != jj_expentry[i]) {
continue jj_entries_loop;
}
}
jj_expentries.add(jj_expentry);
break jj_entries_loop;
}
}
if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
}
}
/** Generate ParseException. */
public ParseException generateParseException() {
jj_expentries.clear();
boolean[] la1tokens = new boolean[94];
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
for (int i = 0; i < 106; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
la1tokens[j] = true;
}
if ((jj_la1_1[i] & (1<<j)) != 0) {
la1tokens[32+j] = true;
}
if ((jj_la1_2[i] & (1<<j)) != 0) {
la1tokens[64+j] = true;
}
}
}
}
for (int i = 0; i < 94; i++) {
if (la1tokens[i]) {
jj_expentry = new int[1];
jj_expentry[0] = i;
jj_expentries.add(jj_expentry);
}
}
jj_endpos = 0;
jj_rescan_token();
jj_add_error_token(0, 0);
int[][] exptokseq = new int[jj_expentries.size()][];
for (int i = 0; i < jj_expentries.size(); i++) {
exptokseq[i] = jj_expentries.get(i);
}
return new ParseException(token, exptokseq, tokenImage);
}
/** Enable tracing. */
final public void enable_tracing() {
}
/** Disable tracing. */
final public void disable_tracing() {
}
private void jj_rescan_token() {
jj_rescan = true;
for (int i = 0; i < 15; i++) {
try {
JJCalls p = jj_2_rtns[i];
do {
if (p.gen > jj_gen) {
jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
switch (i) {
case 0: jj_3_1(); break;
case 1: jj_3_2(); break;
case 2: jj_3_3(); break;
case 3: jj_3_4(); break;
case 4: jj_3_5(); break;
case 5: jj_3_6(); break;
case 6: jj_3_7(); break;
case 7: jj_3_8(); break;
case 8: jj_3_9(); break;
case 9: jj_3_10(); break;
case 10: jj_3_11(); break;
case 11: jj_3_12(); break;
case 12: jj_3_13(); break;
case 13: jj_3_14(); break;
case 14: jj_3_15(); break;
}
}
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;
}
}