From c85a8b7c03d0f0efb03205c57044784edf1fb7df Mon Sep 17 00:00:00 2001 From: gmantele <gmantele@ari.uni-heidelberg.de> Date: Thu, 10 Apr 2014 11:42:37 +0200 Subject: [PATCH] ADQL: Fix 2 bugs: 1/ let the function ROUND having 2 parameters 2/ wrap Operations (WrappedOperand) with brackets when there are brackets in the ADQL query --- src/adql/parser/ADQLParser.java | 839 +++++++++--------- src/adql/parser/adqlGrammar.jj | 32 +- .../query/operand/function/MathFunction.java | 71 +- .../operand/function/MathFunctionType.java | 29 +- 4 files changed, 491 insertions(+), 480 deletions(-) diff --git a/src/adql/parser/ADQLParser.java b/src/adql/parser/ADQLParser.java index ff43fa3..b1649f8 100644 --- a/src/adql/parser/ADQLParser.java +++ b/src/adql/parser/ADQLParser.java @@ -1591,74 +1591,63 @@ public class ADQLParser implements ADQLParserConstants { String expr; ADQLColumn column; ADQLOperand op; - switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){ - case STRING_LITERAL: - case SCIENTIFIC_NUMBER: - case UNSIGNED_FLOAT: - case UNSIGNED_INTEGER: - try{ - switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){ - case SCIENTIFIC_NUMBER: - case UNSIGNED_FLOAT: - case UNSIGNED_INTEGER: - // unsigned_value_specification - expr = UnsignedNumeric(); - { - if (true) - return queryFactory.createNumericConstant(expr); - } - break; - case STRING_LITERAL: - expr = String(); - { - if (true) - return queryFactory.createStringConstant(expr); - } - break; - default: - jj_la1[46] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); + try{ + switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){ + case SCIENTIFIC_NUMBER: + case UNSIGNED_FLOAT: + case UNSIGNED_INTEGER: + // unsigned_value_specification + expr = UnsignedNumeric(); + { + if (true) + return queryFactory.createNumericConstant(expr); } - }catch(Exception ex){ + break; + case STRING_LITERAL: + expr = String(); { if (true) - throw generateParseException(ex); + return queryFactory.createStringConstant(expr); } - } - break; - case DELIMITED_IDENTIFIER: - case REGULAR_IDENTIFIER: - column = Column(); - { - if (true) - return column; - } - break; - case AVG: - case MAX: - case MIN: - case SUM: - case COUNT: - op = SqlFunction(); - { - if (true) - return op; - } - break; - case LEFT_PAR: - jj_consume_token(LEFT_PAR); - op = ValueExpression(); - jj_consume_token(RIGHT_PAR); - { - if (true) - return op; - } - break; - default: - jj_la1[47] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); + break; + case DELIMITED_IDENTIFIER: + case REGULAR_IDENTIFIER: + column = Column(); + { + if (true) + return column; + } + break; + case AVG: + case MAX: + case MIN: + case SUM: + case COUNT: + op = SqlFunction(); + { + if (true) + return op; + } + break; + case LEFT_PAR: + jj_consume_token(LEFT_PAR); + op = ValueExpression(); + jj_consume_token(RIGHT_PAR); + { + if (true) + return queryFactory.createWrappedOperand(op); + } + break; + default: + jj_la1[46] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + }catch(Exception ex){ + { + if (true) + throw generateParseException(ex); + } } throw new Error("Missing return statement in function"); }finally{ @@ -1680,7 +1669,7 @@ public class ADQLParser implements ADQLParserConstants { valueExpr = GeometryValueFunction(); break; default: - jj_la1[48] = jj_gen; + jj_la1[47] = jj_gen; if (jj_2_4(2147483647)){ valueExpr = NumericExpression(); }else if (jj_2_5(2147483647)){ @@ -1735,7 +1724,7 @@ public class ADQLParser implements ADQLParserConstants { valueExpr = NumericExpression(); break; default: - jj_la1[49] = jj_gen; + jj_la1[48] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1768,14 +1757,14 @@ public class ADQLParser implements ADQLParserConstants { sign = jj_consume_token(MINUS); break; default: - jj_la1[50] = jj_gen; + jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } rightOp = NumericExpression(); break; default: - jj_la1[51] = jj_gen; + jj_la1[50] = jj_gen; ; } if (sign == null){ @@ -1817,14 +1806,14 @@ public class ADQLParser implements ADQLParserConstants { sign = jj_consume_token(DIVIDE); break; default: - jj_la1[52] = jj_gen; + jj_la1[51] = jj_gen; jj_consume_token(-1); throw new ParseException(); } rightOp = NumericTerm(); break; default: - jj_la1[53] = jj_gen; + jj_la1[52] = jj_gen; ; } if (sign == null){ @@ -1866,13 +1855,13 @@ public class ADQLParser implements ADQLParserConstants { negative = true; 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_7(2)){ @@ -1894,7 +1883,7 @@ public class ADQLParser implements ADQLParserConstants { op = ValueExpressionPrimary(); break; default: - jj_la1[56] = jj_gen; + jj_la1[55] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1932,7 +1921,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); @@ -1970,7 +1959,7 @@ public class ADQLParser implements ADQLParserConstants { op = ExtractCoordSys(); break; default: - jj_la1[58] = jj_gen; + jj_la1[57] = jj_gen; if (jj_2_8(2)){ op = UserDefinedFunction(); }else{ @@ -1990,7 +1979,7 @@ public class ADQLParser implements ADQLParserConstants { op = ValueExpressionPrimary(); break; default: - jj_la1[59] = jj_gen; + jj_la1[58] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2025,7 +2014,7 @@ public class ADQLParser implements ADQLParserConstants { gf = GeometryValueFunction(); break; default: - jj_la1[60] = jj_gen; + jj_la1[59] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2058,7 +2047,7 @@ public class ADQLParser implements ADQLParserConstants { notOp = true; break; default: - jj_la1[61] = jj_gen; + jj_la1[60] = jj_gen; ; } constraint = Constraint(); @@ -2076,7 +2065,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() : jj_ntk){ @@ -2087,7 +2076,7 @@ public class ADQLParser implements ADQLParserConstants { op = jj_consume_token(OR); break; default: - jj_la1[63] = jj_gen; + jj_la1[62] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2097,7 +2086,7 @@ public class ADQLParser implements ADQLParserConstants { notOp = true; break; default: - jj_la1[64] = jj_gen; + jj_la1[63] = jj_gen; ; } constraint = Constraint(); @@ -2147,7 +2136,7 @@ public class ADQLParser implements ADQLParserConstants { jj_consume_token(RIGHT_PAR); break; default: - jj_la1[65] = jj_gen; + jj_la1[64] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2182,7 +2171,7 @@ public class ADQLParser implements ADQLParserConstants { } break; default: - jj_la1[70] = jj_gen; + jj_la1[69] = jj_gen; if (jj_2_11(2147483647)){ column = Column(); jj_consume_token(IS); @@ -2191,7 +2180,7 @@ public class ADQLParser implements ADQLParserConstants { notToken = jj_consume_token(NOT); break; default: - jj_la1[66] = jj_gen; + jj_la1[65] = jj_gen; ; } jj_consume_token(NULL); @@ -2206,7 +2195,7 @@ public class ADQLParser implements ADQLParserConstants { notToken = jj_consume_token(NOT); break; default: - jj_la1[67] = jj_gen; + jj_la1[66] = jj_gen; ; } jj_consume_token(LIKE); @@ -2278,7 +2267,7 @@ public class ADQLParser implements ADQLParserConstants { constraint = ComparisonEnd(op); break; default: - jj_la1[68] = jj_gen; + jj_la1[67] = jj_gen; if (jj_2_10(2)){ constraint = BetweenEnd(op); }else{ @@ -2288,7 +2277,7 @@ public class ADQLParser implements ADQLParserConstants { constraint = InEnd(op); break; default: - jj_la1[69] = jj_gen; + jj_la1[68] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2296,7 +2285,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(); } @@ -2343,7 +2332,7 @@ public class ADQLParser implements ADQLParserConstants { comp = jj_consume_token(GREATER_EQUAL_THAN); break; default: - jj_la1[72] = jj_gen; + jj_la1[71] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2375,7 +2364,7 @@ public class ADQLParser implements ADQLParserConstants { notToken = jj_consume_token(NOT); break; default: - jj_la1[73] = jj_gen; + jj_la1[72] = jj_gen; ; } jj_consume_token(BETWEEN); @@ -2411,7 +2400,7 @@ public class ADQLParser implements ADQLParserConstants { not = jj_consume_token(NOT); break; default: - jj_la1[74] = jj_gen; + jj_la1[73] = jj_gen; ; } jj_consume_token(IN); @@ -2429,7 +2418,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); @@ -2439,7 +2428,7 @@ public class ADQLParser implements ADQLParserConstants { jj_consume_token(RIGHT_PAR); break; default: - jj_la1[76] = jj_gen; + jj_la1[75] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2489,7 +2478,7 @@ public class ADQLParser implements ADQLParserConstants { distinct = jj_consume_token(QUANTIFIER); break; default: - jj_la1[77] = jj_gen; + jj_la1[76] = jj_gen; ; } switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){ @@ -2549,7 +2538,7 @@ public class ADQLParser implements ADQLParserConstants { op = ValueExpression(); break; default: - jj_la1[78] = jj_gen; + jj_la1[77] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2574,7 +2563,7 @@ public class ADQLParser implements ADQLParserConstants { fct = jj_consume_token(SUM); break; default: - jj_la1[79] = jj_gen; + jj_la1[78] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2584,7 +2573,7 @@ public class ADQLParser implements ADQLParserConstants { distinct = jj_consume_token(QUANTIFIER); break; default: - jj_la1[80] = jj_gen; + jj_la1[79] = jj_gen; ; } op = ValueExpression(); @@ -2592,7 +2581,7 @@ public class ADQLParser implements ADQLParserConstants { funct = queryFactory.createSQLFunction(SQLFunctionType.valueOf(fct.image.toUpperCase()), op, distinct != null && distinct.image.equalsIgnoreCase("distinct")); break; default: - jj_la1[81] = jj_gen; + jj_la1[80] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2653,7 +2642,7 @@ public class ADQLParser implements ADQLParserConstants { t = jj_consume_token(INTERSECTS); break; default: - jj_la1[82] = jj_gen; + jj_la1[81] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2688,7 +2677,7 @@ public class ADQLParser implements ADQLParserConstants { gf = queryFactory.createCoord1(col1); break; default: - jj_la1[83] = jj_gen; + jj_la1[82] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2708,7 +2697,7 @@ public class ADQLParser implements ADQLParserConstants { gf = queryFactory.createCoord2(col1); break; default: - jj_la1[84] = jj_gen; + jj_la1[83] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2726,7 +2715,7 @@ public class ADQLParser implements ADQLParserConstants { col1 = Column(); break; default: - jj_la1[85] = jj_gen; + jj_la1[84] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2744,7 +2733,7 @@ public class ADQLParser implements ADQLParserConstants { col2 = Column(); break; default: - jj_la1[86] = jj_gen; + jj_la1[85] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2756,7 +2745,7 @@ public class ADQLParser implements ADQLParserConstants { gf = queryFactory.createDistance(gvp1, gvp2); break; default: - jj_la1[87] = jj_gen; + jj_la1[86] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2873,7 +2862,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); @@ -2892,7 +2881,7 @@ public class ADQLParser implements ADQLParserConstants { gf = queryFactory.createRegion(op); break; default: - jj_la1[89] = jj_gen; + jj_la1[88] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3012,7 +3001,7 @@ public class ADQLParser implements ADQLParserConstants { fct = UserDefinedFunction(); break; default: - jj_la1[90] = jj_gen; + jj_la1[89] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3153,7 +3142,7 @@ public class ADQLParser implements ADQLParserConstants { param1 = NumericExpression(); break; default: - jj_la1[91] = jj_gen; + jj_la1[90] = jj_gen; ; } jj_consume_token(RIGHT_PAR); @@ -3166,10 +3155,10 @@ public class ADQLParser implements ADQLParserConstants { case COMMA: jj_consume_token(COMMA); integerValue = SignedInteger(); - param2 = queryFactory.createOperation(queryFactory.createNumericConstant(integerValue), null, null); + param2 = queryFactory.createNumericConstant(integerValue); break; default: - jj_la1[92] = jj_gen; + jj_la1[91] = jj_gen; ; } jj_consume_token(RIGHT_PAR); @@ -3188,16 +3177,16 @@ public class ADQLParser implements ADQLParserConstants { case COMMA: jj_consume_token(COMMA); integerValue = SignedInteger(); - param2 = queryFactory.createOperation(queryFactory.createNumericConstant(integerValue), null, null); + param2 = queryFactory.createNumericConstant(integerValue); break; default: - jj_la1[93] = jj_gen; + jj_la1[92] = jj_gen; ; } jj_consume_token(RIGHT_PAR); break; default: - jj_la1[94] = jj_gen; + jj_la1[93] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3277,7 +3266,7 @@ public class ADQLParser implements ADQLParserConstants { jj_consume_token(RIGHT_PAR); break; default: - jj_la1[95] = jj_gen; + jj_la1[94] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3369,7 +3358,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); @@ -3378,7 +3367,7 @@ public class ADQLParser implements ADQLParserConstants { } break; default: - jj_la1[97] = jj_gen; + jj_la1[96] = jj_gen; ; } jj_consume_token(RIGHT_PAR); @@ -3574,22 +3563,22 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_112(){ - if (jj_3R_100()) + private boolean jj_3R_113(){ + if (jj_3R_101()) return true; return false; } - private boolean jj_3R_153(){ + private boolean jj_3R_152(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_165()) + if (jj_3R_164()) jj_scanpos = xsp; - if (jj_3R_166()) + if (jj_3R_165()) return true; while(true){ xsp = jj_scanpos; - if (jj_3R_167()){ + if (jj_3R_166()){ jj_scanpos = xsp; break; } @@ -3597,37 +3586,37 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_121(){ + private boolean jj_3R_122(){ if (jj_3R_144()) return true; return false; } - private boolean jj_3R_120(){ + private boolean jj_3R_121(){ if (jj_3R_143()) return true; return false; } - private boolean jj_3R_119(){ + private boolean jj_3R_120(){ if (jj_3R_142()) return true; return false; } - private boolean jj_3R_118(){ + private boolean jj_3R_119(){ if (jj_3R_141()) return true; return false; } - private boolean jj_3R_111(){ + private boolean jj_3R_112(){ if (jj_3R_23()) return true; return false; } - private boolean jj_3R_163(){ + private boolean jj_3R_162(){ if (jj_3R_49()) return true; return false; @@ -3636,9 +3625,9 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_64(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_111()){ + if (jj_3R_112()){ jj_scanpos = xsp; - if (jj_3R_112()) + if (jj_3R_113()) return true; } return false; @@ -3679,13 +3668,10 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_28(){ if (jj_3R_44()) return true; - if (jj_3R_117()) + if (jj_3R_118()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_118()) - jj_scanpos = xsp; - xsp = jj_scanpos; if (jj_3R_119()) jj_scanpos = xsp; xsp = jj_scanpos; @@ -3694,6 +3680,9 @@ public class ADQLParser implements ADQLParserConstants { xsp = jj_scanpos; if (jj_3R_121()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_122()) + jj_scanpos = xsp; return false; } @@ -3703,7 +3692,7 @@ public class ADQLParser implements ADQLParserConstants { Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_113()){ + if (jj_3R_114()){ jj_scanpos = xsp; break; } @@ -3711,10 +3700,10 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_183(){ + private boolean jj_3R_182(){ if (jj_scan_token(COMMA)) return true; - if (jj_3R_192()) + if (jj_3R_191()) return true; return false; } @@ -3727,21 +3716,21 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_182(){ + private boolean jj_3R_181(){ if (jj_scan_token(COMMA)) return true; - if (jj_3R_192()) + if (jj_3R_191()) return true; return false; } - private boolean jj_3R_105(){ + private boolean jj_3R_106(){ if (jj_scan_token(FULL)) return true; return false; } - private boolean jj_3R_171(){ + private boolean jj_3R_170(){ if (jj_scan_token(MINUS)) return true; return false; @@ -3767,18 +3756,18 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_162(){ + private boolean jj_3R_161(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(8)){ jj_scanpos = xsp; - if (jj_3R_171()) + if (jj_3R_170()) return true; } return false; } - private boolean jj_3R_161(){ + private boolean jj_3R_160(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(10)){ @@ -3786,7 +3775,7 @@ public class ADQLParser implements ADQLParserConstants { if (jj_scan_token(11)) return true; } - if (jj_3R_129()) + if (jj_3R_130()) return true; return false; } @@ -3794,12 +3783,12 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_148(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_162()) + if (jj_3R_161()) jj_scanpos = xsp; xsp = jj_scanpos; if (jj_3_7()){ jj_scanpos = xsp; - if (jj_3R_163()) + if (jj_3R_162()) return true; } return false; @@ -3819,14 +3808,14 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_108(){ + private boolean jj_3R_109(){ if (jj_scan_token(FULL)) return true; return false; } - private boolean jj_3R_181(){ - if (jj_3R_101()) + private boolean jj_3R_180(){ + if (jj_3R_102()) return true; return false; } @@ -3839,121 +3828,121 @@ public class ADQLParser implements ADQLParserConstants { if (jj_scan_token(9)) return true; } - if (jj_3R_101()) + if (jj_3R_102()) return true; return false; } - private boolean jj_3R_92(){ + private boolean jj_3R_93(){ if (jj_scan_token(TAN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_91(){ + private boolean jj_3R_92(){ if (jj_scan_token(SIN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_129(){ + private boolean jj_3R_130(){ if (jj_3R_148()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_161()) + if (jj_3R_160()) jj_scanpos = xsp; return false; } - private boolean jj_3R_90(){ + private boolean jj_3R_91(){ if (jj_scan_token(COT)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_89(){ + private boolean jj_3R_90(){ if (jj_scan_token(COS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_88(){ + private boolean jj_3R_89(){ if (jj_scan_token(ATAN2)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_87(){ + private boolean jj_3R_88(){ if (jj_scan_token(ATAN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_104(){ + private boolean jj_3R_105(){ if (jj_scan_token(RIGHT)) return true; return false; } - private boolean jj_3R_86(){ + private boolean jj_3R_87(){ if (jj_scan_token(ASIN)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_85(){ + private boolean jj_3R_86(){ if (jj_scan_token(ACOS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -3963,21 +3952,21 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_51(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_85()){ + if (jj_3R_86()){ jj_scanpos = xsp; - if (jj_3R_86()){ + if (jj_3R_87()){ jj_scanpos = xsp; - if (jj_3R_87()){ + if (jj_3R_88()){ jj_scanpos = xsp; - if (jj_3R_88()){ + if (jj_3R_89()){ jj_scanpos = xsp; - if (jj_3R_89()){ + if (jj_3R_90()){ jj_scanpos = xsp; - if (jj_3R_90()){ + if (jj_3R_91()){ jj_scanpos = xsp; - if (jj_3R_91()){ + if (jj_3R_92()){ jj_scanpos = xsp; - if (jj_3R_92()) + if (jj_3R_93()) return true; } } @@ -4003,16 +3992,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_84(){ + private boolean jj_3R_85(){ if (jj_scan_token(TRUNCATE)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_183()) + if (jj_3R_182()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4030,62 +4019,62 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_83(){ + private boolean jj_3R_84(){ if (jj_scan_token(SQRT)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_82(){ + private boolean jj_3R_83(){ if (jj_scan_token(ROUND)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_182()) + if (jj_3R_181()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_81(){ + private boolean jj_3R_82(){ if (jj_scan_token(RAND)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_181()) + if (jj_3R_180()) jj_scanpos = xsp; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_80(){ + private boolean jj_3R_81(){ if (jj_scan_token(RADIANS)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_101(){ - if (jj_3R_129()) + private boolean jj_3R_102(){ + if (jj_3R_130()) return true; Token xsp; xsp = jj_scanpos; @@ -4094,23 +4083,23 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_79(){ + private boolean jj_3R_80(){ if (jj_scan_token(POWER)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_78(){ + private boolean jj_3R_79(){ if (jj_scan_token(PI)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4120,16 +4109,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_77(){ + private boolean jj_3R_78(){ if (jj_scan_token(MOD)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4137,17 +4126,17 @@ public class ADQLParser implements ADQLParserConstants { } private boolean jj_3R_59(){ - if (jj_3R_101()) + if (jj_3R_102()) return true; return false; } - private boolean jj_3R_76(){ + private boolean jj_3R_77(){ if (jj_scan_token(LOG10)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4160,12 +4149,12 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_75(){ + private boolean jj_3R_76(){ if (jj_scan_token(LOG)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4178,72 +4167,76 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_74(){ + private boolean jj_3R_75(){ if (jj_scan_token(FLOOR)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_56(){ - if (jj_3R_101()) + private boolean jj_3R_70(){ + if (jj_scan_token(LEFT_PAR)) + return true; + if (jj_3R_41()) + return true; + if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_115(){ - if (jj_3R_133()) + private boolean jj_3R_56(){ + if (jj_3R_102()) return true; return false; } - private boolean jj_3R_73(){ + private boolean jj_3R_74(){ if (jj_scan_token(EXP)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_114(){ - if (jj_3R_132()) - return true; - return false; - } - - private boolean jj_3R_72(){ + private boolean jj_3R_73(){ if (jj_scan_token(DEGREES)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } + private boolean jj_3R_69(){ + if (jj_3R_117()) + return true; + return false; + } + private boolean jj_3R_55(){ - if (jj_3R_100()) + if (jj_3R_101()) return true; return false; } - private boolean jj_3R_71(){ + private boolean jj_3R_72(){ if (jj_scan_token(CEILING)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4270,89 +4263,74 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_70(){ - if (jj_scan_token(ABS)) - return true; - if (jj_scan_token(LEFT_PAR)) - return true; - if (jj_3R_101()) - return true; - if (jj_scan_token(RIGHT_PAR)) + private boolean jj_3R_68(){ + if (jj_3R_23()) return true; return false; } - private boolean jj_3R_69(){ + private boolean jj_3R_71(){ + if (jj_scan_token(ABS)) + return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_41()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_107(){ - if (jj_scan_token(RIGHT)) - return true; - return false; - } - - private boolean jj_3R_68(){ + private boolean jj_3R_67(){ if (jj_3R_116()) return true; return false; } - private boolean jj_3R_67(){ - if (jj_3R_23()) + private boolean jj_3R_108(){ + if (jj_scan_token(RIGHT)) return true; return false; } private boolean jj_3R_66(){ - Token xsp; - xsp = jj_scanpos; - if (jj_3R_114()){ - jj_scanpos = xsp; - if (jj_3R_115()) - return true; - } + if (jj_3R_115()) + return true; return false; } private boolean jj_3R_50(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_70()){ + if (jj_3R_71()){ jj_scanpos = xsp; - if (jj_3R_71()){ + if (jj_3R_72()){ jj_scanpos = xsp; - if (jj_3R_72()){ + if (jj_3R_73()){ jj_scanpos = xsp; - if (jj_3R_73()){ + if (jj_3R_74()){ jj_scanpos = xsp; - if (jj_3R_74()){ + if (jj_3R_75()){ jj_scanpos = xsp; - if (jj_3R_75()){ + if (jj_3R_76()){ jj_scanpos = xsp; - if (jj_3R_76()){ + if (jj_3R_77()){ jj_scanpos = xsp; - if (jj_3R_77()){ + if (jj_3R_78()){ jj_scanpos = xsp; - if (jj_3R_78()){ + if (jj_3R_79()){ jj_scanpos = xsp; - if (jj_3R_79()){ + if (jj_3R_80()){ jj_scanpos = xsp; - if (jj_3R_80()){ + if (jj_3R_81()){ jj_scanpos = xsp; - if (jj_3R_81()){ + if (jj_3R_82()){ jj_scanpos = xsp; - if (jj_3R_82()){ + if (jj_3R_83()){ jj_scanpos = xsp; - if (jj_3R_83()){ + if (jj_3R_84()){ jj_scanpos = xsp; - if (jj_3R_84()) + if (jj_3R_85()) return true; } } @@ -4371,7 +4349,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_180(){ + private boolean jj_3R_179(){ if (jj_scan_token(COMMA)) return true; if (jj_3R_14()) @@ -4406,15 +4384,18 @@ public class ADQLParser implements ADQLParserConstants { jj_scanpos = xsp; if (jj_3R_68()){ jj_scanpos = xsp; - if (jj_3R_69()) - return true; + if (jj_3R_69()){ + jj_scanpos = xsp; + if (jj_3R_70()) + return true; + } } } } return false; } - private boolean jj_3R_103(){ + private boolean jj_3R_104(){ if (jj_scan_token(LEFT)) return true; return false; @@ -4429,11 +4410,11 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_61(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_103()){ + if (jj_3R_104()){ jj_scanpos = xsp; - if (jj_3R_104()){ + if (jj_3R_105()){ jj_scanpos = xsp; - if (jj_3R_105()) + if (jj_3R_106()) return true; } } @@ -4460,7 +4441,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_193(){ + private boolean jj_3R_192(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(8)){ @@ -4471,10 +4452,10 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_192(){ + private boolean jj_3R_191(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_193()) + if (jj_3R_192()) jj_scanpos = xsp; if (jj_scan_token(UNSIGNED_INTEGER)) return true; @@ -4504,15 +4485,15 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_160(){ + private boolean jj_3R_159(){ if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; return false; } - private boolean jj_3R_132(){ + private boolean jj_3R_115(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(99)){ @@ -4526,13 +4507,13 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_187(){ + private boolean jj_3R_186(){ if (jj_3R_23()) return true; return false; } - private boolean jj_3R_179(){ + private boolean jj_3R_178(){ if (jj_scan_token(USING)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4542,7 +4523,7 @@ public class ADQLParser implements ADQLParserConstants { Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_180()){ + if (jj_3R_179()){ jj_scanpos = xsp; break; } @@ -4552,13 +4533,13 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_106(){ + private boolean jj_3R_107(){ if (jj_scan_token(LEFT)) return true; return false; } - private boolean jj_3R_185(){ + private boolean jj_3R_184(){ if (jj_3R_23()) return true; return false; @@ -4567,11 +4548,11 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_62(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_106()){ + if (jj_3R_107()){ jj_scanpos = xsp; - if (jj_3R_107()){ + if (jj_3R_108()){ jj_scanpos = xsp; - if (jj_3R_108()) + if (jj_3R_109()) return true; } } @@ -4581,15 +4562,15 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_178(){ + private boolean jj_3R_177(){ if (jj_scan_token(ON)) return true; - if (jj_3R_153()) + if (jj_3R_152()) return true; return false; } - private boolean jj_3R_128(){ + private boolean jj_3R_129(){ if (jj_scan_token(REGION)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4601,22 +4582,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_149(){ - if (jj_scan_token(STRING_LITERAL)) - return true; - return false; - } - private boolean jj_3R_147(){ if (jj_scan_token(POINT)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_158()) + if (jj_3R_157()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4624,12 +4599,18 @@ public class ADQLParser implements ADQLParserConstants { } private boolean jj_3R_133(){ + if (jj_scan_token(STRING_LITERAL)) + return true; + return false; + } + + private boolean jj_3R_116(){ Token xsp; - if (jj_3R_149()) + if (jj_3R_133()) return true; while(true){ xsp = jj_scanpos; - if (jj_3R_149()){ + if (jj_3R_133()){ jj_scanpos = xsp; break; } @@ -4658,37 +4639,37 @@ public class ADQLParser implements ADQLParserConstants { if (jj_3R_47()) return true; xsp = jj_scanpos; - if (jj_3R_178()){ + if (jj_3R_177()){ jj_scanpos = xsp; - if (jj_3R_179()) + if (jj_3R_178()) return true; } return false; } - private boolean jj_3R_127(){ + private boolean jj_3R_128(){ if (jj_scan_token(POLYGON)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_158()) + if (jj_3R_157()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_160()){ + if (jj_3R_159()){ jj_scanpos = xsp; break; } @@ -4712,13 +4693,13 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_126(){ + private boolean jj_3R_127(){ if (jj_3R_147()) return true; return false; } - private boolean jj_3R_172(){ + private boolean jj_3R_171(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(22)) @@ -4728,27 +4709,27 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_125(){ + private boolean jj_3R_126(){ if (jj_scan_token(CIRCLE)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_158()) + if (jj_3R_157()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_124(){ + private boolean jj_3R_125(){ if (jj_scan_token(CENTROID)) return true; if (jj_scan_token(LEFT_PAR)) @@ -4760,7 +4741,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_170(){ + private boolean jj_3R_169(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(45)){ @@ -4771,24 +4752,24 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_123(){ + private boolean jj_3R_124(){ if (jj_scan_token(BOX)) return true; if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_158()) + if (jj_3R_157()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_159()) + if (jj_3R_158()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; if (jj_scan_token(RIGHT_PAR)) return true; @@ -4806,31 +4787,31 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_177(){ + private boolean jj_3R_176(){ if (jj_3R_17()) return true; return false; } - private boolean jj_3R_110(){ + private boolean jj_3R_111(){ if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_173()) + if (jj_3R_172()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_173(){ + private boolean jj_3R_172(){ if (jj_3R_63()) return true; Token xsp; - if (jj_3R_177()) + if (jj_3R_176()) return true; while(true){ xsp = jj_scanpos; - if (jj_3R_177()){ + if (jj_3R_176()){ jj_scanpos = xsp; break; } @@ -4838,7 +4819,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_191(){ + private boolean jj_3R_190(){ if (jj_3R_23()) return true; return false; @@ -4850,20 +4831,20 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_100(){ + private boolean jj_3R_101(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_123()){ + if (jj_3R_124()){ jj_scanpos = xsp; - if (jj_3R_124()){ + if (jj_3R_125()){ jj_scanpos = xsp; - if (jj_3R_125()){ + if (jj_3R_126()){ jj_scanpos = xsp; - if (jj_3R_126()){ + if (jj_3R_127()){ jj_scanpos = xsp; - if (jj_3R_127()){ + if (jj_3R_128()){ jj_scanpos = xsp; - if (jj_3R_128()) + if (jj_3R_129()) return true; } } @@ -4873,18 +4854,18 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_150(){ + private boolean jj_3R_149(){ if (jj_3R_41()) return true; return false; } - private boolean jj_3R_109(){ - if (jj_3R_102()) + private boolean jj_3R_110(){ + if (jj_3R_103()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_172()) + if (jj_3R_171()) jj_scanpos = xsp; return false; } @@ -4903,13 +4884,13 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_189(){ + private boolean jj_3R_188(){ if (jj_3R_23()) return true; return false; } - private boolean jj_3R_186(){ + private boolean jj_3R_185(){ if (jj_3R_147()) return true; return false; @@ -4927,25 +4908,25 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_184(){ + private boolean jj_3R_183(){ if (jj_3R_147()) return true; return false; } - private boolean jj_3R_190(){ + private boolean jj_3R_189(){ if (jj_3R_147()) return true; return false; } - private boolean jj_3R_158(){ + private boolean jj_3R_157(){ if (jj_3R_24()) return true; return false; } - private boolean jj_3R_188(){ + private boolean jj_3R_187(){ if (jj_3R_147()) return true; return false; @@ -4954,35 +4935,35 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_63(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_109()){ + if (jj_3R_110()){ jj_scanpos = xsp; if (jj_3_2()){ jj_scanpos = xsp; - if (jj_3R_110()) + if (jj_3R_111()) return true; } } return false; } - private boolean jj_3R_97(){ + private boolean jj_3R_98(){ if (jj_scan_token(DISTANCE)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_188()){ + if (jj_3R_187()){ jj_scanpos = xsp; - if (jj_3R_189()) + if (jj_3R_188()) return true; } if (jj_scan_token(COMMA)) return true; xsp = jj_scanpos; - if (jj_3R_190()){ + if (jj_3R_189()){ jj_scanpos = xsp; - if (jj_3R_191()) + if (jj_3R_190()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -4990,16 +4971,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_96(){ + private boolean jj_3R_97(){ if (jj_scan_token(COORD2)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_186()){ + if (jj_3R_185()){ jj_scanpos = xsp; - if (jj_3R_187()) + if (jj_3R_186()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -5007,16 +4988,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_95(){ + private boolean jj_3R_96(){ if (jj_scan_token(COORD1)) return true; if (jj_scan_token(LEFT_PAR)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_184()){ + if (jj_3R_183()){ jj_scanpos = xsp; - if (jj_3R_185()) + if (jj_3R_184()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -5024,7 +5005,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_94(){ + private boolean jj_3R_95(){ if (jj_scan_token(AREA)) return true; if (jj_scan_token(LEFT_PAR)) @@ -5036,27 +5017,27 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_169(){ + private boolean jj_3R_168(){ if (jj_3R_42()) return true; return false; } - private boolean jj_3R_156(){ + private boolean jj_3R_155(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_169()){ + if (jj_3R_168()){ jj_scanpos = xsp; if (jj_scan_token(101)) return true; } xsp = jj_scanpos; - if (jj_3R_170()) + if (jj_3R_169()) jj_scanpos = xsp; return false; } - private boolean jj_3R_93(){ + private boolean jj_3R_94(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(58)){ @@ -5085,16 +5066,16 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_168(){ + private boolean jj_3R_167(){ if (jj_3R_42()) return true; return false; } - private boolean jj_3R_154(){ + private boolean jj_3R_153(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_168()){ + if (jj_3R_167()){ jj_scanpos = xsp; if (jj_scan_token(101)) return true; @@ -5105,7 +5086,7 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_60(){ if (jj_scan_token(DOT)) return true; - if (jj_3R_102()) + if (jj_3R_103()) return true; return false; } @@ -5113,15 +5094,15 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_52(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_93()){ + if (jj_3R_94()){ jj_scanpos = xsp; - if (jj_3R_94()){ + if (jj_3R_95()){ jj_scanpos = xsp; - if (jj_3R_95()){ + if (jj_3R_96()){ jj_scanpos = xsp; - if (jj_3R_96()){ + if (jj_3R_97()){ jj_scanpos = xsp; - if (jj_3R_97()) + if (jj_3R_98()) return true; } } @@ -5156,12 +5137,12 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_159(){ - if (jj_3R_101()) + private boolean jj_3R_158(){ + if (jj_3R_102()) return true; if (jj_scan_token(COMMA)) return true; - if (jj_3R_101()) + if (jj_3R_102()) return true; return false; } @@ -5184,7 +5165,7 @@ public class ADQLParser implements ADQLParserConstants { xsp = jj_scanpos; if (jj_scan_token(10)){ jj_scanpos = xsp; - if (jj_3R_150()) + if (jj_3R_149()) return true; } if (jj_scan_token(RIGHT_PAR)) @@ -5202,7 +5183,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_131(){ + private boolean jj_3R_132(){ if (jj_scan_token(DOT)) return true; if (jj_3R_14()) @@ -5210,7 +5191,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_130(){ + private boolean jj_3R_131(){ if (jj_scan_token(DOT)) return true; if (jj_3R_14()) @@ -5218,7 +5199,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_116(){ + private boolean jj_3R_117(){ Token xsp; xsp = jj_scanpos; if (jj_3R_134()){ @@ -5229,15 +5210,15 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_102(){ + private boolean jj_3R_103(){ if (jj_3R_14()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_130()) + if (jj_3R_131()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_131()) + if (jj_3R_132()) jj_scanpos = xsp; return false; } @@ -5254,7 +5235,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_122(){ + private boolean jj_3R_123(){ if (jj_scan_token(LEFT_PAR)) return true; if (jj_3R_41()) @@ -5289,7 +5270,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_99(){ + private boolean jj_3R_100(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(35)) @@ -5299,16 +5280,16 @@ public class ADQLParser implements ADQLParserConstants { xsp = jj_scanpos; if (jj_3_13()){ jj_scanpos = xsp; - if (jj_3R_122()) + if (jj_3R_123()) return true; } return false; } - private boolean jj_3R_157(){ + private boolean jj_3R_156(){ if (jj_scan_token(COMMA)) return true; - if (jj_3R_156()) + if (jj_3R_155()) return true; return false; } @@ -5316,12 +5297,12 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_144(){ if (jj_scan_token(ORDER_BY)) return true; - if (jj_3R_156()) + if (jj_3R_155()) return true; Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_157()){ + if (jj_3R_156()){ jj_scanpos = xsp; break; } @@ -5332,15 +5313,15 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_143(){ if (jj_scan_token(HAVING)) return true; - if (jj_3R_153()) + if (jj_3R_152()) return true; return false; } - private boolean jj_3R_155(){ + private boolean jj_3R_154(){ if (jj_scan_token(COMMA)) return true; - if (jj_3R_154()) + if (jj_3R_153()) return true; return false; } @@ -5361,7 +5342,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_164(){ + private boolean jj_3R_163(){ if (jj_scan_token(AS)) return true; if (jj_3R_14()) @@ -5372,12 +5353,12 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_142(){ if (jj_scan_token(GROUP_BY)) return true; - if (jj_3R_154()) + if (jj_3R_153()) return true; Token xsp; while(true){ xsp = jj_scanpos; - if (jj_3R_155()){ + if (jj_3R_154()){ jj_scanpos = xsp; break; } @@ -5386,7 +5367,7 @@ public class ADQLParser implements ADQLParserConstants { } private boolean jj_3R_54(){ - if (jj_3R_99()) + if (jj_3R_100()) return true; return false; } @@ -5408,7 +5389,7 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_141(){ if (jj_scan_token(WHERE)) return true; - if (jj_3R_153()) + if (jj_3R_152()) return true; return false; } @@ -5426,7 +5407,7 @@ public class ADQLParser implements ADQLParserConstants { } private boolean jj_3R_53(){ - if (jj_3R_98()) + if (jj_3R_99()) return true; return false; } @@ -5439,7 +5420,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_98(){ + private boolean jj_3R_99(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(12)){ @@ -5472,7 +5453,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_117(){ + private boolean jj_3R_118(){ if (jj_scan_token(FROM)) return true; if (jj_3R_47()) @@ -5540,12 +5521,12 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_152(){ + private boolean jj_3R_151(){ if (jj_3R_41()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_164()) + if (jj_3R_163()) jj_scanpos = xsp; return false; } @@ -5585,40 +5566,40 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_151(){ + private boolean jj_3R_150(){ if (jj_scan_token(ASTERISK)) return true; return false; } - private boolean jj_3R_175(){ + private boolean jj_3R_174(){ if (jj_scan_token(LEFT_PAR)) return true; - if (jj_3R_153()) + if (jj_3R_152()) return true; if (jj_scan_token(RIGHT_PAR)) return true; return false; } - private boolean jj_3R_174(){ + private boolean jj_3R_173(){ if (jj_3R_21()) return true; return false; } - private boolean jj_3R_166(){ + private boolean jj_3R_165(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_174()){ + if (jj_3R_173()){ jj_scanpos = xsp; - if (jj_3R_175()) + if (jj_3R_174()) return true; } return false; } - private boolean jj_3R_176(){ + private boolean jj_3R_175(){ if (jj_scan_token(NOT)) return true; return false; @@ -5638,7 +5619,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_167(){ + private boolean jj_3R_166(){ Token xsp; xsp = jj_scanpos; if (jj_scan_token(33)){ @@ -5647,9 +5628,9 @@ public class ADQLParser implements ADQLParserConstants { return true; } xsp = jj_scanpos; - if (jj_3R_176()) + if (jj_3R_175()) jj_scanpos = xsp; - if (jj_3R_166()) + if (jj_3R_165()) return true; return false; } @@ -5657,11 +5638,11 @@ public class ADQLParser implements ADQLParserConstants { private boolean jj_3R_138(){ Token xsp; xsp = jj_scanpos; - if (jj_3R_151()){ + if (jj_3R_150()){ jj_scanpos = xsp; if (jj_3_1()){ jj_scanpos = xsp; - if (jj_3R_152()) + if (jj_3R_151()) return true; } } @@ -5676,7 +5657,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_113(){ + private boolean jj_3R_114(){ if (jj_scan_token(COMMA)) return true; if (jj_3R_41()) @@ -5698,7 +5679,7 @@ public class ADQLParser implements ADQLParserConstants { return false; } - private boolean jj_3R_165(){ + private boolean jj_3R_164(){ if (jj_scan_token(NOT)) return true; return false; @@ -5737,7 +5718,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; @@ -5750,19 +5731,19 @@ 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,0x400,0x304,0x20,0x20,0x20,0x0,0x10,0x10,0x10,0x0,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,0x0,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,0x400,0x304,0x20,0x20,0x20,0x0,0x10,0x10,0x10,0x0,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,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,}; } private static void jj_la1_init_1(){ - jj_la1_1 = new int[]{0x0,0x1,0x400,0x800,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x6000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000,0x3f00000,0x7c0f8000,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000,0x0,0x80000000,0xf8000,0x3f00000,0x8,0x6,0x6,0x8,0x0,0x8,0x8,0x0,0x108,0x200,0xffff8000,0x0,0x8,0x8,0x0,0x0,0x0,0xffff8000,0x78000,0x0,0xf8000,0xc000000,0x800000,0x800000,0x800000,0x800000,0x7c000000,0x0,0x3f00000,0x7c000000,0x7c0f8000,0x0,0x0,0x0,0x0,0x0,0xffff8000,}; + jj_la1_1 = new int[]{0x0,0x1,0x400,0x800,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x6000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000,0x3f00000,0x7c0f8000,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000,0x0,0x80000000,0xf8000,0x3f00000,0x8,0x6,0x6,0x8,0x0,0x8,0x8,0x0,0x108,0x200,0xffff8000,0x0,0x8,0x8,0x0,0x0,0x0,0xffff8000,0x78000,0x0,0xf8000,0xc000000,0x800000,0x800000,0x800000,0x800000,0x7c000000,0x0,0x3f00000,0x7c000000,0x7c0f8000,0x0,0x0,0x0,0x0,0x0,0xffff8000,}; } private static void jj_la1_init_2(){ - jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,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,0x20000000,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xffffff,0x20ffffff,0x0,0x0,0xfffe,0xff0000,0x0,0x20ffffff,}; + jj_la1_2 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,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,0x20000000,0x0,0x0,0x0,0x0,0x20000000,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x20ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xffffff,0x20ffffff,0x0,0x0,0xfffe,0xff0000,0x0,0x20ffffff,}; } private static void jj_la1_init_3(){ - jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x3b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x23,0x23,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x30,0x0,0x0,0x38,0x3b,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x3b,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x2,0x3b,0x0,0x0,0x0,0x0,0x0,0x3b,}; + jj_la1_3 = new int[]{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x3b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x23,0x23,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x30,0x0,0x0,0x3b,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x3b,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x2,0x3b,0x0,0x0,0x0,0x0,0x0,0x3b,}; } final private JJCalls[] jj_2_rtns = new JJCalls[13]; @@ -5785,7 +5766,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(); @@ -5807,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(); @@ -5820,7 +5801,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(); @@ -5833,7 +5814,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(); @@ -5845,7 +5826,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(); @@ -5857,7 +5838,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(); @@ -5995,7 +5976,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){ diff --git a/src/adql/parser/adqlGrammar.jj b/src/adql/parser/adqlGrammar.jj index fe8fd02..bfac21d 100644 --- a/src/adql/parser/adqlGrammar.jj +++ b/src/adql/parser/adqlGrammar.jj @@ -1012,20 +1012,20 @@ String SignedInteger(): {Token sign=null, number;} { /* EXPRESSIONS */ /* *********** */ ADQLOperand ValueExpressionPrimary(): {String expr; ADQLColumn column; ADQLOperand op;} { - ( - try{ - // unsigned_value_specification - expr=UnsignedNumeric() {return queryFactory.createNumericConstant(expr);} - | expr=String() {return queryFactory.createStringConstant(expr);} - }catch(Exception ex){ - throw generateParseException(ex); - } - // column_reference - | column=Column() {return column;} - // set_function_specification - | op=SqlFunction() {return op;} - // LEFT_PAR value_expression RIGHT_PAR - | (<LEFT_PAR> op=ValueExpression() <RIGHT_PAR>) {return op;}) + try{ + (// unsigned_value_specification + expr=UnsignedNumeric() {return queryFactory.createNumericConstant(expr);} + // string + | expr=String() {return queryFactory.createStringConstant(expr);} + // column_reference + | column=Column() {return column;} + // set_function_specification + | op=SqlFunction() {return op;} + // LEFT_PAR value_expression RIGHT_PAR + | (<LEFT_PAR> op=ValueExpression() <RIGHT_PAR>) {return queryFactory.createWrappedOperand(op);}) + }catch(Exception ex){ + throw generateParseException(ex); + } } ADQLOperand ValueExpression(): {ADQLOperand valueExpr = null; } { @@ -1414,9 +1414,9 @@ MathFunction MathFunction(): {Token fct=null; ADQLOperand param1=null, param2=nu | (fct=<POWER> <LEFT_PAR> param1=NumericExpression() <COMMA> param2=NumericExpression() <RIGHT_PAR>) | (fct=<RADIANS> <LEFT_PAR> param1=NumericExpression() <RIGHT_PAR>) | (fct=<RAND> <LEFT_PAR> (param1=NumericExpression())? <RIGHT_PAR>) - | (fct=<ROUND> <LEFT_PAR> param1=NumericExpression() (<COMMA> integerValue=SignedInteger() {param2 = queryFactory.createOperation(queryFactory.createNumericConstant(integerValue), null, null);})? <RIGHT_PAR>) + | (fct=<ROUND> <LEFT_PAR> param1=NumericExpression() (<COMMA> integerValue=SignedInteger() {param2 = queryFactory.createNumericConstant(integerValue);})? <RIGHT_PAR>) | (fct=<SQRT> <LEFT_PAR> param1=NumericExpression() <RIGHT_PAR>) - | (fct=<TRUNCATE> <LEFT_PAR> param1=NumericExpression() (<COMMA> integerValue=SignedInteger() {param2 = queryFactory.createOperation(queryFactory.createNumericConstant(integerValue), null, null);})? <RIGHT_PAR>)) + | (fct=<TRUNCATE> <LEFT_PAR> param1=NumericExpression() (<COMMA> integerValue=SignedInteger() {param2 = queryFactory.createNumericConstant(integerValue);})? <RIGHT_PAR>)) { if (param1 != null) return queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2); diff --git a/src/adql/query/operand/function/MathFunction.java b/src/adql/query/operand/function/MathFunction.java index 24ce621..0e89163 100644 --- a/src/adql/query/operand/function/MathFunction.java +++ b/src/adql/query/operand/function/MathFunction.java @@ -16,18 +16,18 @@ package adql.query.operand.function; * You should have received a copy of the GNU Lesser General Public License * along with ADQLLibrary. If not, see <http://www.gnu.org/licenses/>. * - * Copyright 2012 - UDS/Centre de DonnĂ©es astronomiques de Strasbourg (CDS) + * Copyright 2012-2014 - UDS/Centre de DonnĂ©es astronomiques de Strasbourg (CDS), + * Astronomisches Rechen Institute (ARI) */ import adql.query.ADQLObject; - import adql.query.operand.ADQLOperand; /** * It represents any basic mathematical function. * - * @author Grégory Mantelet (CDS) - * @version 06/2011 + * @author Grégory Mantelet (CDS;ARI) + * @version 1.2 (03/2014) * * @see MathFunctionType */ @@ -42,6 +42,10 @@ public class MathFunction extends ADQLFunction { /** Second parameter of this function (may be null). */ private ADQLOperand param2 = null; + /** Number of given parameters. + * @since 1.2*/ + private int nbParams; + /** * Creates a mathematical function without parameter. * @@ -75,23 +79,29 @@ public class MathFunction extends ADQLFunction { * @throws Exception If the given function parameters are incorrect. */ public MathFunction(MathFunctionType t, ADQLOperand parameter1, ADQLOperand parameter2) throws Exception{ + // Set the function type: type = t; - switch(type.nbParams()){ - case 0: - if (parameter1 != null || parameter2 != null) - throw new Exception("The function " + type.name() + " must have no parameter !"); - break; - case 1: - if (parameter1 == null || parameter2 != null) - throw new Exception("The function " + type.name() + " must have only one parameter !"); - break; - case 2: - if (parameter1 == null || parameter2 == null) - throw new Exception("The function " + type.name() + " must have two parameters !"); - break; - default: - throw new Exception("Impossible for MathFunction object to have " + type.nbParams() + " ! It is limited to 2 parameters !"); + // Only two parameters can be managed inside this class. + if (type.nbMaxParams() > 2) + throw new Exception("Impossible for MathFunction object to have " + type.nbMaxParams() + " ! It is limited to 2 parameters !"); + // Compute the number of given parameters: + nbParams = ((parameter1 != null) ? 1 : 0) + ((parameter2 != null) ? 1 : 0); + // Check it and throw immediately an exception if incorrect: + if (nbParams < type.nbMinParams() || nbParams > type.nbMaxParams()){ + if (type.nbMinParams() == type.nbMaxParams()) + throw new Exception("The function " + type.name() + " must have " + ((type.nbMaxParams() == 0) ? "no parameter!" : ("exactly " + type.nbMaxParams() + " parameters!"))); + else{ + switch(type.nbMaxParams()){ + case 0: + throw new Exception("The function " + type.name() + " must have no parameter !"); + case 1: + throw new Exception("The function " + type.name() + " must have only one parameter !"); + case 2: + throw new Exception("The function " + type.name() + " must have two parameters !"); + } + } } + // Set the function parameters: param1 = parameter1; param2 = parameter2; } @@ -119,42 +129,47 @@ public class MathFunction extends ADQLFunction { return type; } + @Override public ADQLObject getCopy() throws Exception{ return new MathFunction(this); } + @Override public String getName(){ return type.name(); } + @Override public final boolean isNumeric(){ return true; } + @Override public final boolean isString(){ return false; } @Override public ADQLOperand[] getParameters(){ - if (param1 != null){ - if (param2 != null) - return new ADQLOperand[]{param1,param2}; - else + switch(getNbParameters()){ + case 1: return new ADQLOperand[]{param1}; - }else - return new ADQLOperand[0]; + case 2: + return new ADQLOperand[]{param1,param2}; + default: + return new ADQLOperand[0]; + } } @Override public int getNbParameters(){ - return type.nbParams(); + return nbParams; } @Override public ADQLOperand getParameter(int index) throws ArrayIndexOutOfBoundsException{ if (index < 0 || index >= getNbParameters()) - throw new ArrayIndexOutOfBoundsException("No " + index + "-th parameter for the function \"" + type.name() + "\" (nb required params = " + type.nbParams() + ") !"); + throw new ArrayIndexOutOfBoundsException("No " + index + "-th parameter for the function \"" + type.name() + "\" (nb required params = " + type.nbMaxParams() + ") !"); switch(index){ case 0: @@ -169,7 +184,7 @@ public class MathFunction extends ADQLFunction { @Override public ADQLOperand setParameter(int index, ADQLOperand replacer) throws ArrayIndexOutOfBoundsException, NullPointerException, Exception{ if (index < 0 || index >= getNbParameters()) - throw new ArrayIndexOutOfBoundsException("No " + index + "-th parameter for the function \"" + type.name() + "\" (nb required params = " + type.nbParams() + ") !"); + throw new ArrayIndexOutOfBoundsException("No " + index + "-th parameter for the function \"" + type.name() + "\" (nb required params = " + type.nbMaxParams() + ") !"); else if (replacer == null) throw new NullPointerException("Impossible to remove any parameter from a mathematical function ! All parameters are required !"); else{ diff --git a/src/adql/query/operand/function/MathFunctionType.java b/src/adql/query/operand/function/MathFunctionType.java index 3dca4aa..23c6062 100644 --- a/src/adql/query/operand/function/MathFunctionType.java +++ b/src/adql/query/operand/function/MathFunctionType.java @@ -22,25 +22,40 @@ package adql.query.operand.function; /** * All types of managed mathematical functions. * - * @author Grégory Mantelet (CDS) - * @version 11/2010 + * @author Grégory Mantelet (CDS,ARI) + * @version 03/2014 * * @see MathFunction */ public enum MathFunctionType{ ABS(1), CEILING(1), DEGREES(1), EXP(1), FLOOR(1), LOG(1), // returns the natural logarithm (base e) of a double value. LOG10(1), // returns the base 10 logarithm of a double value. - MOD(2), PI(0), POWER(2), RADIANS(1), SQRT(1), RAND(1), ROUND(2), TRUNCATE(2), + MOD(2), PI(0), POWER(2), RADIANS(1), SQRT(1), RAND(0,1), ROUND(1,2), TRUNCATE(1,2), ACOS(1), ASIN(1), ATAN(1), ATAN2(2), COS(1), COT(1), SIN(1), TAN(1); - private final int nbRequiredParameters; + /** @since 1.2 */ + private final int nbMinRequiredParameters; + /** @since 1.2 */ + private final int nbMaxRequiredParameters; private MathFunctionType(int nbParams){ - nbRequiredParameters = nbParams; + this(nbParams, nbParams); } - public final int nbParams(){ - return nbRequiredParameters; + /** @since 1.2 */ + private MathFunctionType(int nbMinParams, int nbMaxParams){ + nbMinRequiredParameters = nbMinParams; + nbMaxRequiredParameters = nbMaxParams; + } + + /** @since 1.2 */ + public final int nbMinParams(){ + return nbMinRequiredParameters; + } + + /** @since 1.2 */ + public final int nbMaxParams(){ + return nbMaxRequiredParameters; } } -- GitLab