diff --git a/src/adql/parser/ADQLParser.java b/src/adql/parser/ADQLParser.java index 86491d846b1fd9a91623e08601cf2bd9c313c514..0ebb8f6a8b91924b9586f0e7bdfc9eb46590d16d 100644 --- a/src/adql/parser/ADQLParser.java +++ b/src/adql/parser/ADQLParser.java @@ -1904,76 +1904,25 @@ public class ADQLParser implements ADQLParserConstants { ((WrappedOperand)valueExpr).setPosition(new TextPosition(left, right)); }else if (jj_2_7(2147483647)){ valueExpr = UserDefinedFunction(); + }else if (jj_2_8(2)){ + valueExpr = GeometryValueFunction(); + }else if (jj_2_9(2147483647)){ + valueExpr = Column(); + }else if (jj_2_10(2147483647)){ + valueExpr = StringFactor(); + }else if (jj_2_11(3)){ + valueExpr = Factor(); }else{ switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ - case BOX: - case CENTROID: - case CIRCLE: - case POINT: - case POLYGON: - case REGION:{ - valueExpr = GeometryValueFunction(); + case DELIMITED_IDENTIFIER: + case REGULAR_IDENTIFIER:{ + valueExpr = Column(); break; } default: jj_la1[48] = jj_gen; - if (jj_2_8(2147483647)){ - valueExpr = Column(); - }else if (jj_2_9(2147483647)){ - valueExpr = StringFactor(); - }else{ - switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ - case LEFT_PAR: - case PLUS: - case MINUS: - case AVG: - case MAX: - case MIN: - case SUM: - case COUNT: - case CONTAINS: - case INTERSECTS: - case AREA: - case COORD1: - case COORD2: - case DISTANCE: - case ABS: - case CEILING: - case DEGREES: - case EXP: - case FLOOR: - case LOG: - case LOG10: - case MOD: - case PI: - case POWER: - case RADIANS: - case RAND: - case ROUND: - case SQRT: - case TRUNCATE: - case ACOS: - case ASIN: - case ATAN: - case ATAN2: - case COS: - case COT: - case SIN: - case TAN: - case DELIMITED_IDENTIFIER: - case REGULAR_IDENTIFIER: - case SCIENTIFIC_NUMBER: - case UNSIGNED_FLOAT: - case UNSIGNED_INTEGER:{ - valueExpr = Factor(); - break; - } - default: - jj_la1[49] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } + jj_consume_token(-1); + throw new ParseException(); } } { @@ -2011,7 +1960,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[50] = jj_gen; + jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2019,7 +1968,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[51] = jj_gen;; + jj_la1[50] = jj_gen;; } if (sign == null){ if ("" != null) @@ -2064,7 +2013,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[52] = jj_gen; + jj_la1[51] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2072,7 +2021,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[53] = jj_gen;; + jj_la1[52] = jj_gen;; } if (sign == null){ if ("" != null) @@ -2118,16 +2067,16 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[54] = jj_gen; + jj_la1[53] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[55] = jj_gen;; + jj_la1[54] = jj_gen;; } - if (jj_2_10(2)){ + if (jj_2_12(2)){ op = NumericFunction(); }else{ switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2146,7 +2095,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[56] = jj_gen; + jj_la1[55] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2191,7 +2140,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[57] = jj_gen; + jj_la1[56] = jj_gen; break label_9; } jj_consume_token(CONCAT); @@ -2234,8 +2183,8 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[58] = jj_gen; - if (jj_2_11(2)){ + jj_la1[57] = jj_gen; + if (jj_2_13(2)){ op = UserDefinedFunction(); ((UserDefinedFunction)op).setExpectedType('S'); }else{ @@ -2248,7 +2197,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[59] = jj_gen; + jj_la1[58] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2285,7 +2234,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[60] = jj_gen; + jj_la1[59] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2322,7 +2271,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[61] = jj_gen;; + jj_la1[60] = jj_gen;; } constraint = Constraint(); if (notOp){ @@ -2344,7 +2293,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[62] = jj_gen; + jj_la1[61] = jj_gen; break label_10; } switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2357,7 +2306,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[63] = jj_gen; + jj_la1[62] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2368,7 +2317,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[64] = jj_gen;; + jj_la1[63] = jj_gen;; } constraint = Constraint(); if (notOp){ @@ -2409,7 +2358,7 @@ public class ADQLParser implements ADQLParserConstants { try{ ADQLConstraint constraint = null; Token start, end; - if (jj_2_12(2147483647)){ + if (jj_2_14(2147483647)){ constraint = Predicate(); }else{ switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2429,7 +2378,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[65] = jj_gen; + jj_la1[64] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2467,8 +2416,8 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[70] = jj_gen; - if (jj_2_14(2147483647)){ + jj_la1[69] = jj_gen; + if (jj_2_16(2147483647)){ column = Column(); jj_consume_token(IS); switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2477,7 +2426,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[66] = jj_gen;; + jj_la1[65] = jj_gen;; } end = jj_consume_token(NULL); IsNull in = queryFactory.createIsNull((notToken != null), column); @@ -2486,7 +2435,7 @@ public class ADQLParser implements ADQLParserConstants { if ("" != null) return in; } - }else if (jj_2_15(2147483647)){ + }else if (jj_2_17(2147483647)){ strExpr1 = StringExpression(); switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ case NOT:{ @@ -2494,7 +2443,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[67] = jj_gen;; + jj_la1[66] = jj_gen;; } jj_consume_token(LIKE); strExpr2 = StringExpression(); @@ -2568,8 +2517,8 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[68] = jj_gen; - if (jj_2_13(2)){ + jj_la1[67] = jj_gen; + if (jj_2_15(2)){ constraint = BetweenEnd(op); }else{ switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2579,7 +2528,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[69] = jj_gen; + jj_la1[68] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2588,7 +2537,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[71] = jj_gen; + jj_la1[70] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2641,7 +2590,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[72] = jj_gen; + jj_la1[71] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2676,7 +2625,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[73] = jj_gen;; + jj_la1[72] = jj_gen;; } start = jj_consume_token(BETWEEN); min = ValueExpression(); @@ -2716,10 +2665,10 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[74] = jj_gen;; + jj_la1[73] = jj_gen;; } start = jj_consume_token(IN); - if (jj_2_16(2)){ + if (jj_2_18(2)){ q = SubQueryExpression(); }else{ switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ @@ -2734,7 +2683,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[75] = jj_gen; + jj_la1[74] = jj_gen; break label_11; } jj_consume_token(COMMA); @@ -2745,7 +2694,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[76] = jj_gen; + jj_la1[75] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2800,7 +2749,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[77] = jj_gen;; + jj_la1[76] = jj_gen;; } switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){ case ASTERISK:{ @@ -2861,7 +2810,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[78] = jj_gen; + jj_la1[77] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2892,7 +2841,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[79] = jj_gen; + jj_la1[78] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2903,7 +2852,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[80] = jj_gen;; + jj_la1[79] = jj_gen;; } op = ValueExpression(); end = jj_consume_token(RIGHT_PAR); @@ -2912,7 +2861,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[81] = jj_gen; + jj_la1[80] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2975,7 +2924,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[82] = jj_gen; + jj_la1[81] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3015,7 +2964,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[83] = jj_gen; + jj_la1[82] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3039,7 +2988,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[84] = jj_gen; + jj_la1[83] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3060,7 +3009,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[85] = jj_gen; + jj_la1[84] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3082,7 +3031,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[86] = jj_gen; + jj_la1[85] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3097,7 +3046,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[87] = jj_gen; + jj_la1[86] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3208,7 +3157,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[88] = jj_gen; + jj_la1[87] = jj_gen; break label_12; } jj_consume_token(COMMA); @@ -3229,7 +3178,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[89] = jj_gen; + jj_la1[88] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3362,7 +3311,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[90] = jj_gen; + jj_la1[89] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3514,7 +3463,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[91] = jj_gen;; + jj_la1[90] = jj_gen;; } end = jj_consume_token(RIGHT_PAR); break; @@ -3530,7 +3479,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[92] = jj_gen;; + jj_la1[91] = jj_gen;; } end = jj_consume_token(RIGHT_PAR); break; @@ -3553,13 +3502,13 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[93] = jj_gen;; + jj_la1[92] = jj_gen;; } end = jj_consume_token(RIGHT_PAR); break; } default: - jj_la1[94] = jj_gen; + jj_la1[93] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3646,7 +3595,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[95] = jj_gen; + jj_la1[94] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3737,7 +3686,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[96] = jj_gen; + jj_la1[95] = jj_gen; break label_13; } jj_consume_token(COMMA); @@ -3747,7 +3696,7 @@ public class ADQLParser implements ADQLParserConstants { break; } default: - jj_la1[97] = jj_gen;; + jj_la1[96] = jj_gen;; } end = jj_consume_token(RIGHT_PAR); //System.out.println("INFO [ADQLParser]: \""+fct.image+"\" (from line "+fct.beginLine+" and column "+fct.beginColumn+" to line "+token.endLine+" and column "+(token.endColumn+1)+") is considered as an user defined function !"); @@ -3975,24 +3924,42 @@ public class ADQLParser implements ADQLParserConstants { } } - private boolean jj_3R_107(){ - if (jj_scan_token(RIGHT)) + private boolean jj_2_17(int xla){ + jj_la = xla; + jj_lastpos = jj_scanpos = token; + try{ + return !jj_3_17(); + }catch(LookaheadSuccess ls){ return true; - return false; + }finally{ + jj_save(16, xla); + } } - private boolean jj_3R_55(){ + private boolean jj_2_18(int xla){ + jj_la = xla; + jj_lastpos = jj_scanpos = token; + try{ + return !jj_3_18(); + }catch(LookaheadSuccess ls){ + return true; + }finally{ + jj_save(17, xla); + } + } + + private boolean jj_3R_65(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_96()){ + if (jj_3R_107()){ jj_scanpos = xsp; - if (jj_3R_97()){ + if (jj_3R_108()){ jj_scanpos = xsp; - if (jj_3R_98()){ + if (jj_3R_109()){ jj_scanpos = xsp; - if (jj_3R_99()){ + if (jj_3R_110()){ jj_scanpos = xsp; - if (jj_3R_100()) + if (jj_3R_111()) return true; } } @@ -4001,17 +3968,17 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_135(){ - if (jj_3R_101()) + private boolean jj_3R_137(){ + if (jj_3R_112()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; return false; } - private boolean jj_3R_139(){ + private boolean jj_3R_134(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(48)){ @@ -4030,28 +3997,20 @@ public class ADQLParser implements ADQLParserConstants { xsp = jj_scanpos; if (jj_scan_token(19)) jj_scanpos = xsp; - if (jj_3R_42()) + if (jj_3R_51()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_128(){ - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(98)){ - jj_scanpos = xsp; - if (jj_scan_token(99)){ - jj_scanpos = xsp; - if (jj_scan_token(100)) - return true; - } - } + private boolean jj_3R_117(){ + if (jj_scan_token(RIGHT)) + return true; return false; } - private boolean jj_3R_138(){ + private boolean jj_3R_133(){ if (jj_scan_token(COUNT)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4063,7 +4022,7 @@ public class ADQLParser implements ADQLParserConstants { xsp = jj_scanpos; if (jj_scan_token(10)){ jj_scanpos = xsp; - if (jj_3R_151()) + if (jj_3R_146()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -4071,61 +4030,75 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_103(){ + private boolean jj_3R_126(){ + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(98)){ + jj_scanpos = xsp; + if (jj_scan_token(99)){ + jj_scanpos = xsp; + if (jj_scan_token(100)) + return true; + } + } + return false; + } + + private boolean jj_3R_113(){ if (jj_scan_token(LEFT)) return true; return false; } - private boolean jj_3R_64(){ + private boolean jj_3R_73(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_103()){ + if (jj_3R_113()){ jj_scanpos = xsp; - if (jj_3R_104()){ + if (jj_3R_114()){ jj_scanpos = xsp; - if (jj_3R_105()) + if (jj_3R_115()) return true; } } return false; } - private boolean jj_3R_45(){ + private boolean jj_3R_127(){ Token xsp; xsp = jj_scanpos; - if (jj_scan_token(24)){ + if (jj_3R_133()){ jj_scanpos = xsp; - if (jj_3R_64()) + if (jj_3R_134()) return true; } return false; } - private boolean jj_3R_129(){ + private boolean jj_3R_54(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_138()){ + if (jj_scan_token(24)){ jj_scanpos = xsp; - if (jj_3R_139()) + if (jj_3R_73()) return true; } return false; } - private boolean jj_3R_37(){ + private boolean jj_3R_44(){ if (jj_scan_token(STRING_LITERAL)) return true; return false; } - private boolean jj_3R_22(){ + private boolean jj_3R_23(){ Token xsp; - if (jj_3R_37()) + if (jj_3R_44()) return true; while(true){ xsp = jj_scanpos; - if (jj_3R_37()){ + if (jj_3R_44()){ jj_scanpos = xsp; break; } @@ -4133,20 +4106,20 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_106(){ + private boolean jj_3R_116(){ if (jj_scan_token(LEFT)) return true; return false; } - private boolean jj_3R_65(){ + private boolean jj_3R_74(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_106()){ + if (jj_3R_116()){ jj_scanpos = xsp; - if (jj_3R_107()){ + if (jj_3R_117()){ jj_scanpos = xsp; - if (jj_3R_108()) + if (jj_3R_118()) return true; } } @@ -4156,43 +4129,61 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_46(){ + private boolean jj_3R_55(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(24)){ jj_scanpos = xsp; - if (jj_3R_65()) + if (jj_3R_74()) return true; } return false; } - private boolean jj_3R_33(){ + private boolean jj_3_18(){ + if (jj_3R_16()) + return true; + return false; + } + + private boolean jj_3R_35(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_46()) + if (jj_3R_55()) jj_scanpos = xsp; if (jj_scan_token(JOIN)) return true; - if (jj_3R_47()) + if (jj_3R_56()) return true; return false; } - private boolean jj_3R_32(){ + private boolean jj_3R_34(){ if (jj_scan_token(NATURAL)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_45()) + if (jj_3R_54()) jj_scanpos = xsp; if (jj_scan_token(JOIN)) return true; return false; } - private boolean jj_3_16(){ - if (jj_3R_16()) + private boolean jj_3R_28(){ + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(35)) + jj_scanpos = xsp; + if (jj_scan_token(BETWEEN)) + return true; + if (jj_3R_51()) + return true; + return false; + } + + private boolean jj_3_15(){ + if (jj_3R_28()) return true; return false; } @@ -4200,141 +4191,113 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_17(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_32()){ + if (jj_3R_34()){ jj_scanpos = xsp; - if (jj_3R_33()) + if (jj_3R_35()) return true; } return false; } - private boolean jj_3R_26(){ + private boolean jj_3_17(){ + if (jj_3R_29()) + return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(35)) jj_scanpos = xsp; - if (jj_scan_token(BETWEEN)) - return true; - if (jj_3R_42()) + if (jj_scan_token(LIKE)) return true; return false; } - private boolean jj_3R_67(){ + private boolean jj_3R_76(){ if (jj_scan_token(LEFT_PAR)) return true; return false; } - private boolean jj_3_13(){ - if (jj_3R_26()) - return true; - return false; - } - private boolean jj_3_3(){ if (jj_3R_17()) return true; return false; } - private boolean jj_3_15(){ - if (jj_3R_27()) + private boolean jj_3_16(){ + if (jj_3R_22()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(35)) - jj_scanpos = xsp; - if (jj_scan_token(LIKE)) + if (jj_scan_token(IS)) return true; return false; } - private boolean jj_3_14(){ - if (jj_3R_21()) + private boolean jj_3_2(){ + if (jj_3R_16()) return true; - if (jj_scan_token(IS)) + return false; + } + + private boolean jj_3R_75(){ + if (jj_3R_79()) return true; return false; } - private boolean jj_3_2(){ - if (jj_3R_16()) + private boolean jj_3R_132(){ + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_51()) return true; return false; } - private boolean jj_3R_66(){ - if (jj_3R_72()) + private boolean jj_3R_27(){ + if (jj_3R_51()) return true; return false; } - private boolean jj_3R_47(){ + private boolean jj_3R_56(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_66()){ + if (jj_3R_75()){ jj_scanpos = xsp; if (jj_3_2()){ jj_scanpos = xsp; - if (jj_3R_67()) + if (jj_3R_76()) return true; } } return false; } - private boolean jj_3R_132(){ - if (jj_scan_token(COMMA)) - return true; - if (jj_3R_42()) - return true; - return false; - } - - private boolean jj_3R_25(){ - if (jj_3R_42()) - return true; - return false; - } - - private boolean jj_3_12(){ + private boolean jj_3_14(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(41)){ jj_scanpos = xsp; - if (jj_3R_25()) + if (jj_3R_27()) return true; } return false; } - private boolean jj_3R_52(){ + private boolean jj_3R_60(){ if (jj_scan_token(DOT)) return true; - if (jj_3R_72()) + if (jj_3R_79()) return true; return false; } - private boolean jj_3R_21(){ - if (jj_3R_36()) - return true; - return false; - } - - private boolean jj_3R_36(){ - if (jj_3R_14()) + private boolean jj_3R_22(){ + if (jj_3R_43()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_52()) - jj_scanpos = xsp; return false; } - private boolean jj_3R_114(){ - if (jj_3R_42()) + private boolean jj_3R_120(){ + if (jj_3R_51()) return true; Token xsp; while(true){ @@ -4347,107 +4310,117 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_119(){ - if (jj_scan_token(DOT)) + private boolean jj_3R_148(){ + if (jj_scan_token(COMMA)) return true; - if (jj_3R_14()) + if (jj_3R_151()) return true; return false; } - private boolean jj_3R_118(){ - if (jj_scan_token(DOT)) + private boolean jj_3R_147(){ + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_151()) return true; + return false; + } + + private boolean jj_3R_43(){ if (jj_3R_14()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_60()) + jj_scanpos = xsp; return false; } - private boolean jj_3R_142(){ - if (jj_scan_token(COMMA)) + private boolean jj_3R_125(){ + if (jj_scan_token(DOT)) return true; - if (jj_3R_152()) + if (jj_3R_14()) return true; return false; } - private boolean jj_3R_141(){ - if (jj_scan_token(COMMA)) + private boolean jj_3R_124(){ + if (jj_scan_token(DOT)) return true; - if (jj_3R_152()) + if (jj_3R_14()) return true; return false; } - private boolean jj_3R_72(){ + private boolean jj_3R_79(){ if (jj_3R_14()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_118()) + if (jj_3R_124()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_119()) + if (jj_3R_125()) jj_scanpos = xsp; return false; } - private boolean jj_3R_29(){ + private boolean jj_3R_31(){ if (jj_scan_token(DELIMITED_IDENTIFIER)) return true; return false; } - private boolean jj_3R_28(){ + private boolean jj_3R_30(){ if (jj_scan_token(REGULAR_IDENTIFIER)) return true; return false; } - private boolean jj_3R_14(){ - Token xsp; - xsp = jj_scanpos; - if (jj_3R_28()){ - jj_scanpos = xsp; - if (jj_3R_29()) - return true; - } - return false; - } - private boolean jj_3R_131(){ - if (jj_3R_102()) + if (jj_3R_21()) return true; return false; } - private boolean jj_3R_24(){ + private boolean jj_3R_26(){ if (jj_scan_token(REGULAR_IDENTIFIER)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_114()) + if (jj_3R_120()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_140(){ - if (jj_3R_101()) + private boolean jj_3R_139(){ + if (jj_3R_112()) return true; return false; } + private boolean jj_3R_14(){ + Token xsp; + xsp = jj_scanpos; + if (jj_3R_30()){ + jj_scanpos = xsp; + if (jj_3R_31()) + return true; + } + return false; + } + private boolean jj_3R_130(){ - if (jj_3R_21()) + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_113(){ + private boolean jj_3R_119(){ Token xsp; xsp = jj_scanpos; if (jj_3R_130()){ @@ -4458,156 +4431,156 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_95(){ + private boolean jj_3R_106(){ if (jj_scan_token(TAN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_94(){ + private boolean jj_3R_105(){ if (jj_scan_token(SIN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_51(){ - if (jj_3R_71()) + private boolean jj_3R_58(){ + if (jj_3R_78()) return true; return false; } - private boolean jj_3R_93(){ + private boolean jj_3R_104(){ if (jj_scan_token(COT)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3_11(){ - if (jj_3R_24()) + private boolean jj_3_13(){ + if (jj_3R_26()) return true; return false; } - private boolean jj_3R_92(){ + private boolean jj_3R_103(){ if (jj_scan_token(COS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_91(){ + private boolean jj_3R_102(){ if (jj_scan_token(ATAN2)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_50(){ - if (jj_3R_70()) + private boolean jj_3R_57(){ + if (jj_3R_77()) return true; return false; } - private boolean jj_3R_90(){ + private boolean jj_3R_101(){ if (jj_scan_token(ATAN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_35(){ + private boolean jj_3R_36(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_50()){ + if (jj_3R_57()){ jj_scanpos = xsp; - if (jj_3_11()){ + if (jj_3_13()){ jj_scanpos = xsp; - if (jj_3R_51()) + if (jj_3R_58()) return true; } } return false; } - private boolean jj_3R_89(){ + private boolean jj_3R_100(){ if (jj_scan_token(ASIN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_88(){ + private boolean jj_3R_99(){ if (jj_scan_token(ACOS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_54(){ + private boolean jj_3R_64(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_88()){ + if (jj_3R_99()){ jj_scanpos = xsp; - if (jj_3R_89()){ + if (jj_3R_100()){ jj_scanpos = xsp; - if (jj_3R_90()){ + if (jj_3R_101()){ jj_scanpos = xsp; - if (jj_3R_91()){ + if (jj_3R_102()){ jj_scanpos = xsp; - if (jj_3R_92()){ + if (jj_3R_103()){ jj_scanpos = xsp; - if (jj_3R_93()){ + if (jj_3R_104()){ jj_scanpos = xsp; - if (jj_3R_94()){ + if (jj_3R_105()){ jj_scanpos = xsp; - if (jj_3R_95()) + if (jj_3R_106()) return true; } } @@ -4619,99 +4592,99 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_49(){ - if (jj_3R_69()) + private boolean jj_3R_46(){ + if (jj_3R_62()) return true; return false; } - private boolean jj_3R_87(){ + private boolean jj_3R_98(){ if (jj_scan_token(TRUNCATE)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_142()) + if (jj_3R_148()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_86(){ + private boolean jj_3R_97(){ if (jj_scan_token(SQRT)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_85(){ + private boolean jj_3R_96(){ if (jj_scan_token(ROUND)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_141()) + if (jj_3R_147()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_84(){ + private boolean jj_3R_95(){ if (jj_scan_token(RAND)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_140()) + if (jj_3R_139()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_83(){ + private boolean jj_3R_94(){ if (jj_scan_token(RADIANS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_82(){ + private boolean jj_3R_93(){ if (jj_scan_token(POWER)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_81(){ + private boolean jj_3R_92(){ if (jj_scan_token(PI)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4721,129 +4694,121 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_80(){ + private boolean jj_3R_91(){ if (jj_scan_token(MOD)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_79(){ + private boolean jj_3R_90(){ if (jj_scan_token(LOG10)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_78(){ + private boolean jj_3R_89(){ if (jj_scan_token(LOG)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_77(){ + private boolean jj_3R_88(){ if (jj_scan_token(FLOOR)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_76(){ + private boolean jj_3R_87(){ if (jj_scan_token(EXP)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_43(){ + private boolean jj_3R_52(){ if (jj_scan_token(CONCAT)) return true; - if (jj_3R_35()) + if (jj_3R_36()) return true; return false; } - private boolean jj_3R_75(){ + private boolean jj_3R_86(){ if (jj_scan_token(DEGREES)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_74(){ + private boolean jj_3R_85(){ if (jj_scan_token(CEILING)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_73(){ + private boolean jj_3R_84(){ if (jj_scan_token(ABS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_30(){ - if (jj_3R_14()) - return true; - if (jj_scan_token(DOT)) - return true; - return false; - } - - private boolean jj_3R_27(){ - if (jj_3R_35()) + private boolean jj_3R_29(){ + if (jj_3R_36()) return true; Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_43()){ + if (jj_3R_52()){ jj_scanpos = xsp; break; } @@ -4851,38 +4816,38 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_53(){ + private boolean jj_3R_63(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_73()){ + if (jj_3R_84()){ jj_scanpos = xsp; - if (jj_3R_74()){ + if (jj_3R_85()){ jj_scanpos = xsp; - if (jj_3R_75()){ + if (jj_3R_86()){ jj_scanpos = xsp; - if (jj_3R_76()){ + if (jj_3R_87()){ jj_scanpos = xsp; - if (jj_3R_77()){ + if (jj_3R_88()){ jj_scanpos = xsp; - if (jj_3R_78()){ + if (jj_3R_89()){ jj_scanpos = xsp; - if (jj_3R_79()){ + if (jj_3R_90()){ jj_scanpos = xsp; - if (jj_3R_80()){ + if (jj_3R_91()){ jj_scanpos = xsp; - if (jj_3R_81()){ + if (jj_3R_92()){ jj_scanpos = xsp; - if (jj_3R_82()){ + if (jj_3R_93()){ jj_scanpos = xsp; - if (jj_3R_83()){ + if (jj_3R_94()){ jj_scanpos = xsp; - if (jj_3R_84()){ + if (jj_3R_95()){ jj_scanpos = xsp; - if (jj_3R_85()){ + if (jj_3R_96()){ jj_scanpos = xsp; - if (jj_3R_86()){ + if (jj_3R_97()){ jj_scanpos = xsp; - if (jj_3R_87()) + if (jj_3R_98()) return true; } } @@ -4901,58 +4866,54 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_68(){ + private boolean jj_3R_61(){ if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_41(){ - if (jj_3R_24()) + private boolean jj_3R_50(){ + if (jj_3R_26()) return true; return false; } - private boolean jj_3R_40(){ - if (jj_3R_55()) + private boolean jj_3R_49(){ + if (jj_3R_65()) return true; return false; } - private boolean jj_3R_15(){ - if (jj_3R_14()) - return true; - if (jj_scan_token(DOT)) + private boolean jj_3R_48(){ + if (jj_3R_64()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_30()) - jj_scanpos = xsp; return false; } - private boolean jj_3R_39(){ - if (jj_3R_54()) + private boolean jj_3R_32(){ + if (jj_3R_14()) + return true; + if (jj_scan_token(DOT)) return true; return false; } - private boolean jj_3R_38(){ - if (jj_3R_53()) + private boolean jj_3R_47(){ + if (jj_3R_63()) return true; return false; } - private boolean jj_3R_23(){ + private boolean jj_3R_25(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_38()){ + if (jj_3R_47()){ jj_scanpos = xsp; - if (jj_3R_39()){ + if (jj_3R_48()){ jj_scanpos = xsp; - if (jj_3R_40()){ + if (jj_3R_49()){ jj_scanpos = xsp; - if (jj_3R_41()) + if (jj_3R_50()) return true; } } @@ -4960,24 +4921,36 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3_10(){ - if (jj_3R_23()) + private boolean jj_3_12(){ + if (jj_3R_25()) return true; return false; } - private boolean jj_3R_48(){ + private boolean jj_3R_45(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(8)){ jj_scanpos = xsp; - if (jj_3R_68()) + if (jj_3R_61()) return true; } return false; } - private boolean jj_3R_133(){ + private boolean jj_3R_15(){ + if (jj_3R_14()) + return true; + if (jj_scan_token(DOT)) + return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_32()) + jj_scanpos = xsp; + return false; + } + + private boolean jj_3R_135(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(10)){ @@ -4985,53 +4958,104 @@ public class ADQLParser implements ADQLParserConstants { if (jj_scan_token(11)) return true; } - if (jj_3R_120()) + if (jj_3R_128()) return true; return false; } - private boolean jj_3R_34(){ + private boolean jj_3R_24(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_48()) + if (jj_3R_45()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3_10()){ + if (jj_3_12()){ jj_scanpos = xsp; - if (jj_3R_49()) + if (jj_3R_46()) return true; } return false; } - private boolean jj_3R_70(){ + private boolean jj_3R_77(){ if (jj_scan_token(COORDSYS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_113()) + if (jj_3R_119()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_146(){ - if (jj_3R_21()) + private boolean jj_3R_143(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_144(){ - if (jj_3R_21()) + private boolean jj_3R_141(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_137(){ + private boolean jj_3R_138(){ if (jj_scan_token(COMMA)) return true; + if (jj_3R_137()) + return true; + return false; + } + + private boolean jj_3R_129(){ + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(8)){ + jj_scanpos = xsp; + if (jj_scan_token(9)) + return true; + } + if (jj_3R_112()) + return true; + return false; + } + + private boolean jj_3R_59(){ + if (jj_scan_token(POINT)) + return true; + if (jj_scan_token(LEFT_PAR)) + return true; + if (jj_3R_136()) + return true; + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_137()) + return true; + if (jj_scan_token(RIGHT_PAR)) + return true; + return false; + } + + private boolean jj_3R_128(){ + if (jj_3R_24()) + return true; + Token xsp; + xsp = jj_scanpos; if (jj_3R_135()) + jj_scanpos = xsp; + return false; + } + + private boolean jj_3R_42(){ + if (jj_scan_token(REGION)) + return true; + if (jj_scan_token(LEFT_PAR)) + return true; + if (jj_3R_29()) + return true; + if (jj_scan_token(RIGHT_PAR)) return true; return false; } @@ -5051,7 +5075,7 @@ public class ADQLParser implements ADQLParserConstants { } private boolean jj_3R_19(){ - if (jj_3R_34()) + if (jj_3R_24()) return true; Token xsp; xsp = jj_scanpos; @@ -5069,73 +5093,76 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_121(){ - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(8)){ - jj_scanpos = xsp; - if (jj_scan_token(9)) - return true; - } - if (jj_3R_101()) - return true; - return false; - } - private boolean jj_3R_20(){ - if (jj_3R_35()) + if (jj_3R_36()) return true; if (jj_scan_token(CONCAT)) return true; return false; } - private boolean jj_3R_136(){ - if (jj_scan_token(POINT)) + private boolean jj_3R_41(){ + if (jj_scan_token(POLYGON)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_134()) + if (jj_3R_136()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_135()) + if (jj_3R_137()) return true; + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_137()) + return true; + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_137()) + return true; + Token xsp; + while(true){ + xsp = jj_scanpos; + if (jj_3R_138()){ + jj_scanpos = xsp; + break; + } + } if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_120(){ - if (jj_3R_34()) + private boolean jj_3R_72(){ + if (jj_3R_22()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_133()) - jj_scanpos = xsp; return false; } - private boolean jj_3R_127(){ - if (jj_scan_token(REGION)) - return true; - if (jj_scan_token(LEFT_PAR)) - return true; - if (jj_3R_27()) + private boolean jj_3R_40(){ + if (jj_3R_59()) return true; - if (jj_scan_token(RIGHT_PAR)) + return false; + } + + private boolean jj_3_10(){ + if (jj_3R_23()) return true; return false; } - private boolean jj_3_9(){ - if (jj_3R_22()) + private boolean jj_3R_112(){ + if (jj_3R_128()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) + jj_scanpos = xsp; return false; } - private boolean jj_3_8(){ - if (jj_3R_21()) + private boolean jj_3_9(){ + if (jj_3R_22()) return true; return false; } @@ -5154,46 +5181,34 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3_5(){ - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(64)){ - jj_scanpos = xsp; - if (jj_3R_20()) - return true; - } - return false; - } - - private boolean jj_3R_126(){ - if (jj_scan_token(POLYGON)) + private boolean jj_3R_39(){ + if (jj_scan_token(CIRCLE)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_134()) + if (jj_3R_136()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_135()) + if (jj_3R_137()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_135()) - return true; - if (jj_scan_token(COMMA)) + if (jj_3R_112()) return true; - if (jj_3R_135()) + if (jj_scan_token(RIGHT_PAR)) return true; + return false; + } + + private boolean jj_3_5(){ Token xsp; - while(true){ - xsp = jj_scanpos; - if (jj_3R_137()){ - jj_scanpos = xsp; - break; - } + xsp = jj_scanpos; + if (jj_scan_token(64)){ + jj_scanpos = xsp; + if (jj_3R_20()) + return true; } - if (jj_scan_token(RIGHT_PAR)) - return true; return false; } @@ -5219,181 +5234,145 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_63(){ - if (jj_3R_34()) - return true; - return false; - } - - private boolean jj_3R_125(){ - if (jj_3R_136()) + private boolean jj_3R_38(){ + if (jj_scan_token(CENTROID)) + return true; + if (jj_scan_token(LEFT_PAR)) + return true; + if (jj_3R_119()) + return true; + if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_62(){ - if (jj_3R_35()) + private boolean jj_3_11(){ + if (jj_3R_24()) return true; return false; } - private boolean jj_3R_61(){ - if (jj_3R_21()) + private boolean jj_3R_71(){ + if (jj_3R_36()) return true; return false; } - private boolean jj_3R_101(){ - if (jj_3R_120()) + private boolean jj_3R_70(){ + if (jj_3R_22()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_121()) - jj_scanpos = xsp; return false; } - private boolean jj_3R_60(){ - if (jj_3R_102()) + private boolean jj_3_8(){ + if (jj_3R_21()) return true; return false; } - private boolean jj_3R_59(){ - if (jj_3R_24()) + private boolean jj_3R_69(){ + if (jj_3R_26()) return true; return false; } - private boolean jj_3R_58(){ + private boolean jj_3R_68(){ if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_42()) + if (jj_3R_51()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_57(){ - if (jj_3R_27()) - return true; - return false; - } - - private boolean jj_3R_124(){ - if (jj_scan_token(CIRCLE)) + private boolean jj_3R_37(){ + if (jj_scan_token(BOX)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_134()) + if (jj_3R_136()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_135()) + if (jj_3R_137()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_112()) + return true; + if (jj_scan_token(COMMA)) + return true; + if (jj_3R_112()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_44(){ - if (jj_scan_token(SELECT)) + private boolean jj_3R_67(){ + if (jj_3R_29()) return true; return false; } - private boolean jj_3R_56(){ - if (jj_3R_101()) + private boolean jj_3R_53(){ + if (jj_scan_token(SELECT)) return true; return false; } - private boolean jj_3R_123(){ - if (jj_scan_token(CENTROID)) - return true; - if (jj_scan_token(LEFT_PAR)) - return true; - if (jj_3R_113()) + private boolean jj_3R_66(){ + if (jj_3R_112()) return true; - if (jj_scan_token(RIGHT_PAR)) + return false; + } + + private boolean jj_3R_150(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_117(){ + private boolean jj_3R_123(){ if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_27()) + if (jj_3R_29()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_16(){ - if (jj_scan_token(LEFT_PAR)) - return true; - if (jj_3R_31()) + private boolean jj_3R_142(){ + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_122(){ - if (jj_scan_token(BOX)) - return true; + private boolean jj_3R_16(){ if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_134()) - return true; - if (jj_scan_token(COMMA)) - return true; - if (jj_3R_135()) - return true; - if (jj_scan_token(COMMA)) - return true; - if (jj_3R_101()) - return true; - if (jj_scan_token(COMMA)) - return true; - if (jj_3R_101()) - return true; - if (jj_scan_token(RIGHT_PAR)) - return true; - return false; - } - - private boolean jj_3R_116(){ - if (jj_3R_21()) + if (jj_3R_33()) return true; return false; } - private boolean jj_3R_42(){ + private boolean jj_3R_21(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_56()){ + if (jj_3R_37()){ jj_scanpos = xsp; - if (jj_3R_57()){ + if (jj_3R_38()){ jj_scanpos = xsp; - if (jj_3R_58()){ + if (jj_3R_39()){ jj_scanpos = xsp; - if (jj_3R_59()){ + if (jj_3R_40()){ jj_scanpos = xsp; - if (jj_3R_60()){ + if (jj_3R_41()){ jj_scanpos = xsp; - if (jj_3R_61()){ - jj_scanpos = xsp; - if (jj_3R_62()){ - jj_scanpos = xsp; - if (jj_3R_63()) - return true; - } - } + if (jj_3R_42()) + return true; } } } @@ -5402,45 +5381,48 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_115(){ - if (jj_3R_22()) - return true; - return false; - } - - private boolean jj_3R_150(){ - if (jj_3R_21()) + private boolean jj_3R_146(){ + if (jj_3R_51()) return true; return false; } - private boolean jj_3R_105(){ - if (jj_scan_token(FULL)) + private boolean jj_3R_140(){ + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_145(){ - if (jj_3R_136()) + private boolean jj_3R_122(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_102(){ + private boolean jj_3R_51(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_122()){ + if (jj_3R_66()){ jj_scanpos = xsp; - if (jj_3R_123()){ + if (jj_3R_67()){ jj_scanpos = xsp; - if (jj_3R_124()){ + if (jj_3R_68()){ jj_scanpos = xsp; - if (jj_3R_125()){ + if (jj_3R_69()){ jj_scanpos = xsp; - if (jj_3R_126()){ + if (jj_3_8()){ jj_scanpos = xsp; - if (jj_3R_127()) - return true; + if (jj_3R_70()){ + jj_scanpos = xsp; + if (jj_3R_71()){ + jj_scanpos = xsp; + if (jj_3_11()){ + jj_scanpos = xsp; + if (jj_3R_72()) + return true; + } + } + } } } } @@ -5449,123 +5431,100 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_151(){ - if (jj_3R_42()) + private boolean jj_3R_145(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_143(){ - if (jj_3R_136()) + private boolean jj_3R_121(){ + if (jj_3R_23()) return true; return false; } - private boolean jj_3R_112(){ - if (jj_scan_token(LEFT_PAR)) + private boolean jj_3R_149(){ + if (jj_3R_59()) return true; - if (jj_3R_101()) + return false; + } + + private boolean jj_3R_136(){ + if (jj_3R_29()) return true; - if (jj_scan_token(RIGHT_PAR)) + return false; + } + + private boolean jj_3R_115(){ + if (jj_scan_token(FULL)) return true; return false; } - private boolean jj_3R_148(){ - if (jj_3R_21()) + private boolean jj_3R_83(){ + if (jj_scan_token(LEFT_PAR)) + return true; + if (jj_3R_112()) + return true; + if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_111(){ - if (jj_3R_129()) + private boolean jj_3R_144(){ + if (jj_3R_59()) return true; return false; } - private boolean jj_3R_149(){ - if (jj_3R_136()) + private boolean jj_3R_82(){ + if (jj_3R_127()) return true; return false; } - private boolean jj_3R_71(){ + private boolean jj_3R_78(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_115()){ + if (jj_3R_121()){ jj_scanpos = xsp; - if (jj_3R_116()){ + if (jj_3R_122()){ jj_scanpos = xsp; - if (jj_3R_117()) + if (jj_3R_123()) return true; } } return false; } - private boolean jj_3R_110(){ - if (jj_3R_21()) - return true; - return false; - } - - private boolean jj_3R_134(){ - if (jj_3R_27()) - return true; - return false; - } - - private boolean jj_3R_109(){ - if (jj_3R_128()) + private boolean jj_3R_81(){ + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_147(){ - if (jj_3R_136()) + private boolean jj_3R_80(){ + if (jj_3R_126()) return true; return false; } - private boolean jj_3R_108(){ + private boolean jj_3R_118(){ if (jj_scan_token(FULL)) return true; return false; } - private boolean jj_3R_69(){ - Token xsp; - xsp = jj_scanpos; - if (jj_3R_109()){ - jj_scanpos = xsp; - if (jj_3R_110()){ - jj_scanpos = xsp; - if (jj_3R_111()){ - jj_scanpos = xsp; - if (jj_3R_112()) - return true; - } - } - } - return false; - } - - private boolean jj_3R_31(){ - if (jj_3R_44()) - return true; - return false; - } - - private boolean jj_3R_100(){ + private boolean jj_3R_111(){ if (jj_scan_token(DISTANCE)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_147()){ + if (jj_3R_144()){ jj_scanpos = xsp; - if (jj_3R_148()) + if (jj_3R_145()) return true; } if (jj_scan_token(COMMA)) @@ -5581,16 +5540,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_99(){ + private boolean jj_3R_110(){ if (jj_scan_token(COORD2)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_145()){ + if (jj_3R_142()){ jj_scanpos = xsp; - if (jj_3R_146()) + if (jj_3R_143()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -5598,16 +5557,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_98(){ + private boolean jj_3R_109(){ if (jj_scan_token(COORD1)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_143()){ + if (jj_3R_140()){ jj_scanpos = xsp; - if (jj_3R_144()) + if (jj_3R_141()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -5615,36 +5574,42 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_97(){ + private boolean jj_3R_108(){ if (jj_scan_token(AREA)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_113()) + if (jj_3R_119()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_104(){ - if (jj_scan_token(RIGHT)) - return true; - return false; - } - - private boolean jj_3R_153(){ + private boolean jj_3R_62(){ Token xsp; xsp = jj_scanpos; - if (jj_scan_token(8)){ + if (jj_3R_80()){ jj_scanpos = xsp; - if (jj_scan_token(9)) - return true; + if (jj_3R_81()){ + jj_scanpos = xsp; + if (jj_3R_82()){ + jj_scanpos = xsp; + if (jj_3R_83()) + return true; + } + } } return false; } - private boolean jj_3R_96(){ + private boolean jj_3R_33(){ + if (jj_3R_53()) + return true; + return false; + } + + private boolean jj_3R_107(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(59)){ @@ -5654,21 +5619,38 @@ public class ADQLParser implements ADQLParserConstants { } if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_113()) + if (jj_3R_119()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_113()) + if (jj_3R_119()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } + private boolean jj_3R_114(){ + if (jj_scan_token(RIGHT)) + return true; + return false; + } + private boolean jj_3R_152(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_153()) + if (jj_scan_token(8)){ + jj_scanpos = xsp; + if (jj_scan_token(9)) + return true; + } + return false; + } + + private boolean jj_3R_151(){ + Token xsp; + xsp = jj_scanpos; + if (jj_3R_152()) jj_scanpos = xsp; if (jj_scan_token(UNSIGNED_INTEGER)) return true; @@ -5686,7 +5668,7 @@ public class ADQLParser implements ADQLParserConstants { private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; - final private int[] jj_la1 = new int[98]; + final private int[] jj_la1 = new int[97]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -5699,22 +5681,22 @@ public class ADQLParser implements ADQLParserConstants { } private static void jj_la1_init_0(){ - jj_la1_0 = new int[]{0x41,0x0,0x0,0x0,0x0,0x80000,0x100000,0x20,0x0,0x0,0x400000,0x400000,0x400,0x304,0x20,0x20,0x20,0x0,0x10,0x10,0x10,0x0,0x0,0x0,0x400000,0x400000,0x400000,0x0,0x4,0x3d800000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x20,0xc0000000,0x3d800000,0x0,0x0,0x0,0x300,0x300,0x4,0x4,0x0,0x304,0x300,0x300,0xc00,0xc00,0x300,0x300,0x4,0x80,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x3f000,0x0,0x0,0x304,0x3f000,0x0,0x0,0x20,0x4,0x80000,0x704,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x304,0x20,0x20,0x0,0x0,0x20,0x304,}; + jj_la1_0 = new int[]{0x41,0x0,0x0,0x0,0x0,0x80000,0x100000,0x20,0x0,0x0,0x400000,0x400000,0x400,0x304,0x20,0x20,0x20,0x0,0x10,0x10,0x10,0x0,0x0,0x0,0x400000,0x400000,0x400000,0x0,0x4,0x3d800000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x1c000000,0x2000000,0x1d000000,0x1d000000,0x20,0xc0000000,0x3d800000,0x0,0x0,0x0,0x300,0x300,0x4,0x4,0x0,0x300,0x300,0xc00,0xc00,0x300,0x300,0x4,0x80,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x3f000,0x0,0x0,0x304,0x3f000,0x0,0x0,0x20,0x4,0x80000,0x704,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x304,0x20,0x20,0x0,0x0,0x20,0x304,}; } private static void jj_la1_init_1(){ - jj_la1_1 = new int[]{0x0,0x1,0x800,0x1000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000,0xc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x7e00000,0xf81f0000,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x0,0x0,0x7e00000,0x8,0x6,0x6,0x8,0x0,0x8,0x8,0x0,0x108,0x200,0xffff0000,0x0,0x8,0x8,0x0,0x0,0x0,0xffff0000,0xf0000,0x0,0x1f0000,0x18000000,0x1000000,0x1000000,0x1000000,0x1000000,0xf8000000,0x0,0x7e00000,0xf8000000,0xf81f0000,0x0,0x0,0x0,0x0,0x0,0xffff0000,}; + jj_la1_1 = new int[]{0x0,0x1,0x800,0x1000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000,0xc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0000,0x0,0x0,0x0,0x7e00000,0x8,0x6,0x6,0x8,0x0,0x8,0x8,0x0,0x108,0x200,0xffff0000,0x0,0x8,0x8,0x0,0x0,0x0,0xffff0000,0xf0000,0x0,0x1f0000,0x18000000,0x1000000,0x1000000,0x1000000,0x1000000,0xf8000000,0x0,0x7e00000,0xf8000000,0xf81f0000,0x0,0x0,0x0,0x0,0x0,0xffff0000,}; } private static void jj_la1_init_2(){ - jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x80000000,0x0,0x91ffffff,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x80000000,0x90000000,0x0,0x81fffffe,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x1,0x90000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x80000000,0x2,0x0,0x0,0x1fffffe,0x81fffffe,0x0,0x0,0x1fffc,0x1fe0000,0x0,0x91ffffff,}; + jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x80000000,0x0,0x91ffffff,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x80000000,0x90000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x1,0x90000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x91ffffff,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x80000000,0x2,0x0,0x0,0x1fffffe,0x81fffffe,0x0,0x0,0x1fffc,0x1fe0000,0x0,0x91ffffff,}; } private static void jj_la1_init_3(){ - jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x18,0x0,0x0,0x1d,0x1,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1d,0x0,0x0,0x0,0x0,0x0,0x1d,}; + jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x18,0x0,0x0,0x1d,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1d,0x0,0x0,0x0,0x0,0x0,0x1d,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[16]; + final private JJCalls[] jj_2_rtns = new JJCalls[18]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -5734,7 +5716,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5756,7 +5738,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5769,7 +5751,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5782,7 +5764,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5794,7 +5776,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5806,7 +5788,7 @@ public class ADQLParser implements ADQLParserConstants { token = new Token(); jj_ntk = -1; jj_gen = 0; - for(int i = 0; i < 98; i++) + for(int i = 0; i < 97; i++) jj_la1[i] = -1; for(int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); @@ -5945,7 +5927,7 @@ public class ADQLParser implements ADQLParserConstants { la1tokens[jj_kind] = true; jj_kind = -1; } - for(int i = 0; i < 98; i++){ + for(int i = 0; i < 97; i++){ if (jj_la1[i] == jj_gen){ for(int j = 0; j < 32; j++){ if ((jj_la1_0[i] & (1 << j)) != 0){ @@ -6041,7 +6023,7 @@ public class ADQLParser implements ADQLParserConstants { private void jj_rescan_token(){ jj_rescan = true; - for(int i = 0; i < 16; i++){ + for(int i = 0; i < 18; i++){ try{ JJCalls p = jj_2_rtns[i]; do{ @@ -6097,6 +6079,12 @@ public class ADQLParser implements ADQLParserConstants { case 15: jj_3_16(); break; + case 16: + jj_3_17(); + break; + case 17: + jj_3_18(); + break; } } p = p.next; diff --git a/src/adql/parser/ParseException.java b/src/adql/parser/ParseException.java index 2751dcda98e31b93bc4285bcb35884cb65c7dc8f..230d7ce806705a7b7b4e35a0712e8ecf9bcf7cba 100644 --- a/src/adql/parser/ParseException.java +++ b/src/adql/parser/ParseException.java @@ -3,7 +3,17 @@ * * Modified by Grégory Mantelet (CDS), on March 2017 * Modifications: - * - several small modifications. + * - addition of a getPosition() function in order to get the exact location + * of the error in the original ADQL query + * - generate the error message at creation instead of doing that at each + * call of getMessage() + * - use of StringBuffer to build the error message + * - small other alterations of the generated error message + * + * Modified by Grégory Mantelet (ARI), on Sept. 2017 + * Modifications: + * - addition of a HINT in the error message when an ADQL reserved + * word is at the origin of the error (see initialise(...)) * * /!\ DO NOT RE-GENERATE THIS FILE /!\ * In case of re-generation, replace it by ParseException.java.backup (but maybe @@ -95,6 +105,22 @@ public class ParseException extends Exception { /** Line in the ADQL query where the exception occurs. */ protected TextPosition position = null; + /** Regular expression listing all ADQL reserved words. + * + * <p><i>Note 1: + * This list is built NOT from the list given in the ADQL-2.0 standard, + * but from the collation of all words potentially used in an ADQL query + * (including standard function names). + * </i></p> + * + * <p><i>Note 2: + * This regular expression is only used to display an appropriate hint + * to the user in the error message if a such word is at the origin of + * the error. (see {@link #initialise(Token, int[][], String[])} for more + * details). + * </i></p> */ + private final static String ADQL_RESERVED_WORDS_REGEX = "(ABS|ACOS|AREA|ASIN|ATAN|ATAN2|BOX|CEILING|CENTROID|CIRCLE|CONTAINS|COORD1|COORD2|COORDSYS|COS|DEGREES|DISTANCE|EXP|FLOOR|INTERSECTS|LOG|LOG10|MOD|PI|POINT|POLYGON|POWER|RADIANS|REGION|RAND|ROUND|SIN|SQRT|TOP|TAN|TRUNCATE|SELECT|TOP|DISTINCT|ALL|AS|COUNT|AVG|MAX|MIN|SUM|FROM|JOIN|CROSS|INNER|OUTER|LEFT|RIGHT|FULL|NATURAL|USING|ON|WHERE|IS|NOT|AND|OR|EXISTS|IN|LIKE|NULL|BETWEEN|ORDER|ASC|DESC|GROUP|BY|HAVING)"; + /** * Gets the position in the ADQL query of the token which generates this exception. * @@ -130,17 +156,18 @@ public class ParseException extends Exception { StringBuffer msg = new StringBuffer(); msg.append(" Encountered \""); Token tok = currentToken.next; + StringBuffer tokenName = new StringBuffer(); for(int i = 0; i < maxSize; i++){ if (i != 0) - msg.append(' '); + tokenName.append(' '); if (tok.kind == 0){ - msg.append(tokenImage[0]); + tokenName.append(tokenImage[0]); break; } - msg.append(add_escapes(tok.image)); + tokenName.append(add_escapes(tok.image)); tok = tok.next; } - msg.append("\"."); + msg.append(tokenName.toString()).append("\"."); // Append the expected tokens list: if (expectedTokenSequences.length == 1){ @@ -150,6 +177,11 @@ public class ParseException extends Exception { } msg.append(expected); + // Append a hint about reserved words if it is one: + String word = tokenName.toString().trim(); + if (word.toUpperCase().matches(ADQL_RESERVED_WORDS_REGEX)) + msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"); + return msg.toString(); /*String eol = System.getProperty("line.separator", "\n"); StringBuffer expected = new StringBuffer(); diff --git a/src/adql/parser/ParseException.java.backup b/src/adql/parser/ParseException.java.backup index 2751dcda98e31b93bc4285bcb35884cb65c7dc8f..230d7ce806705a7b7b4e35a0712e8ecf9bcf7cba 100644 --- a/src/adql/parser/ParseException.java.backup +++ b/src/adql/parser/ParseException.java.backup @@ -3,7 +3,17 @@ * * Modified by Grégory Mantelet (CDS), on March 2017 * Modifications: - * - several small modifications. + * - addition of a getPosition() function in order to get the exact location + * of the error in the original ADQL query + * - generate the error message at creation instead of doing that at each + * call of getMessage() + * - use of StringBuffer to build the error message + * - small other alterations of the generated error message + * + * Modified by Grégory Mantelet (ARI), on Sept. 2017 + * Modifications: + * - addition of a HINT in the error message when an ADQL reserved + * word is at the origin of the error (see initialise(...)) * * /!\ DO NOT RE-GENERATE THIS FILE /!\ * In case of re-generation, replace it by ParseException.java.backup (but maybe @@ -95,6 +105,22 @@ public class ParseException extends Exception { /** Line in the ADQL query where the exception occurs. */ protected TextPosition position = null; + /** Regular expression listing all ADQL reserved words. + * + * <p><i>Note 1: + * This list is built NOT from the list given in the ADQL-2.0 standard, + * but from the collation of all words potentially used in an ADQL query + * (including standard function names). + * </i></p> + * + * <p><i>Note 2: + * This regular expression is only used to display an appropriate hint + * to the user in the error message if a such word is at the origin of + * the error. (see {@link #initialise(Token, int[][], String[])} for more + * details). + * </i></p> */ + private final static String ADQL_RESERVED_WORDS_REGEX = "(ABS|ACOS|AREA|ASIN|ATAN|ATAN2|BOX|CEILING|CENTROID|CIRCLE|CONTAINS|COORD1|COORD2|COORDSYS|COS|DEGREES|DISTANCE|EXP|FLOOR|INTERSECTS|LOG|LOG10|MOD|PI|POINT|POLYGON|POWER|RADIANS|REGION|RAND|ROUND|SIN|SQRT|TOP|TAN|TRUNCATE|SELECT|TOP|DISTINCT|ALL|AS|COUNT|AVG|MAX|MIN|SUM|FROM|JOIN|CROSS|INNER|OUTER|LEFT|RIGHT|FULL|NATURAL|USING|ON|WHERE|IS|NOT|AND|OR|EXISTS|IN|LIKE|NULL|BETWEEN|ORDER|ASC|DESC|GROUP|BY|HAVING)"; + /** * Gets the position in the ADQL query of the token which generates this exception. * @@ -130,17 +156,18 @@ public class ParseException extends Exception { StringBuffer msg = new StringBuffer(); msg.append(" Encountered \""); Token tok = currentToken.next; + StringBuffer tokenName = new StringBuffer(); for(int i = 0; i < maxSize; i++){ if (i != 0) - msg.append(' '); + tokenName.append(' '); if (tok.kind == 0){ - msg.append(tokenImage[0]); + tokenName.append(tokenImage[0]); break; } - msg.append(add_escapes(tok.image)); + tokenName.append(add_escapes(tok.image)); tok = tok.next; } - msg.append("\"."); + msg.append(tokenName.toString()).append("\"."); // Append the expected tokens list: if (expectedTokenSequences.length == 1){ @@ -150,6 +177,11 @@ public class ParseException extends Exception { } msg.append(expected); + // Append a hint about reserved words if it is one: + String word = tokenName.toString().trim(); + if (word.toUpperCase().matches(ADQL_RESERVED_WORDS_REGEX)) + msg.append(System.getProperty("line.separator", "\n")).append("(HINT: \"").append(word).append("\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"); + return msg.toString(); /*String eol = System.getProperty("line.separator", "\n"); StringBuffer expected = new StringBuffer(); diff --git a/src/adql/parser/adqlGrammar.jj b/src/adql/parser/adqlGrammar.jj index 7f67e4ebffdea92978201d506ab4550e90d6e872..8eb9fcc2673c011361b0c221d11598f39899a5ab 100644 --- a/src/adql/parser/adqlGrammar.jj +++ b/src/adql/parser/adqlGrammar.jj @@ -1192,10 +1192,21 @@ ADQLOperand ValueExpression(): {ADQLOperand valueExpr = null; Token left, right; | LOOKAHEAD(<COORDSYS> | (StringFactor() <CONCAT>)) valueExpr=StringExpression() | LOOKAHEAD(<LEFT_PAR>) left=<LEFT_PAR> valueExpr=ValueExpression() right=<RIGHT_PAR> { valueExpr = queryFactory.createWrappedOperand(valueExpr); ((WrappedOperand)valueExpr).setPosition(new TextPosition(left, right)); } | LOOKAHEAD(<REGULAR_IDENTIFIER> <LEFT_PAR>) valueExpr=UserDefinedFunction() - | valueExpr=GeometryValueFunction() + | LOOKAHEAD(2) valueExpr=GeometryValueFunction() | LOOKAHEAD(Column()) valueExpr=Column() | LOOKAHEAD(String()) valueExpr=StringFactor() - | valueExpr=Factor()) + | LOOKAHEAD(3) valueExpr=Factor() + + /* At this position in this switch, all possibilities (including + * Column()) have already been tested and failed. + * + * So, this final choice actually aims to throw an error set with the + * current token and with an error message implying that a column name + * was expected (which is generally the case in an ADQL query). + * + * Note: This choice will generally be reached if an unexpected ADQL + * word is ending the query. */ + | valueExpr=Column() ) {return valueExpr;} }catch(Exception ex){ throw generateParseException(ex); diff --git a/test/adql/parser/TestADQLParser.java b/test/adql/parser/TestADQLParser.java index 679ed01a68050b83df3d574582ba5441659caf35..bea813b5d16711d731f5a340e8e413773fcb30be 100644 --- a/test/adql/parser/TestADQLParser.java +++ b/test/adql/parser/TestADQLParser.java @@ -206,4 +206,82 @@ public class TestADQLParser { } } + @Test + public void testADQLReservedWord(){ + ADQLParser parser = new ADQLParser(); + + final String hintAbs = "\n(HINT: \"abs\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"; + final String hintPoint = "\n(HINT: \"point\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"; + final String hintExists = "\n(HINT: \"exists\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"; + final String hintLike = "\n(HINT: \"LIKE\" is a reserved ADQL word. To use it as a column/table/schema name/alias, write it between double quotes.)"; + + /* TEST AS A COLUMN/TABLE/SCHEMA NAME... */ + // ...with a numeric function name (but no param): + try{ + parser.parseQuery("select abs from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintAbs)); + } + // ...with a geometric function name (but no param): + try{ + parser.parseQuery("select point from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintPoint)); + } + // ...with an ADQL function name (but no param): + try{ + parser.parseQuery("select exists from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintExists)); + } + // ...with an ADQL syntax item: + try{ + parser.parseQuery("select LIKE from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintLike)); + } + + /* TEST AS AN ALIAS... */ + // ...with a numeric function name (but no param): + try{ + parser.parseQuery("select aCol AS abs from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintAbs)); + } + // ...with a geometric function name (but no param): + try{ + parser.parseQuery("select aCol AS point from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintPoint)); + } + // ...with an ADQL function name (but no param): + try{ + parser.parseQuery("select aCol AS exists from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintExists)); + } + // ...with an ADQL syntax item: + try{ + parser.parseQuery("select aCol AS LIKE from aTable"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintLike)); + } + + /* TEST AT THE END OF THE QUERY (AND IN A WHERE) */ + try{ + parser.parseQuery("select aCol from aTable WHERE toto = abs"); + }catch(Throwable t){ + assertEquals(ParseException.class, t.getClass()); + assertTrue(t.getMessage().endsWith(hintAbs)); + } + } + }