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