diff --git a/arangod/Aql/grammar.cpp b/arangod/Aql/grammar.cpp index 40c00ae54d..a0e3cdb1f1 100644 --- a/arangod/Aql/grammar.cpp +++ b/arangod/Aql/grammar.cpp @@ -171,10 +171,10 @@ extern int Aqldebug; T_NIN = 309, UMINUS = 310, UPLUS = 311, - EXPANSION = 312, - FUNCCALL = 313, - REFERENCE = 314, - INDEXED = 315 + FUNCCALL = 312, + REFERENCE = 313, + INDEXED = 314, + EXPANSION = 315 }; #endif @@ -495,16 +495,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 744 +#define YYLAST 784 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 62 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 70 +#define YYNNTS 74 /* YYNRULES -- Number of rules. */ -#define YYNRULES 152 +#define YYNRULES 160 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 265 +#define YYNSTATES 274 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -556,22 +556,23 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 200, 200, 202, 204, 206, 208, 210, 215, 217, - 222, 226, 232, 234, 239, 241, 243, 245, 247, 249, - 254, 263, 271, 276, 278, 283, 290, 300, 300, 314, - 330, 357, 384, 416, 446, 448, 453, 460, 463, 469, - 483, 500, 500, 514, 514, 525, 528, 534, 540, 543, - 546, 549, 555, 560, 567, 575, 578, 584, 595, 606, - 615, 627, 632, 641, 653, 658, 661, 667, 667, 719, - 722, 722, 738, 741, 744, 747, 750, 753, 756, 762, - 769, 786, 786, 798, 801, 804, 810, 813, 816, 819, - 822, 825, 828, 831, 834, 837, 840, 843, 846, 849, - 852, 858, 864, 866, 871, 874, 874, 893, 896, 902, - 905, 911, 911, 920, 922, 927, 930, 936, 939, 953, - 953, 962, 964, 969, 971, 976, 979, 982, 997, 1039, - 1046, 1058, 1070, 1082, 1090, 1098, 1098, 1121, 1124, 1130, - 1137, 1147, 1150, 1153, 1156, 1159, 1165, 1172, 1179, 1193, - 1199, 1206, 1215 + 0, 204, 204, 206, 208, 210, 212, 214, 219, 221, + 226, 230, 236, 238, 243, 245, 247, 249, 251, 253, + 258, 267, 275, 280, 282, 287, 294, 304, 304, 318, + 334, 361, 388, 420, 450, 452, 457, 464, 467, 473, + 487, 504, 504, 518, 518, 529, 532, 538, 544, 547, + 550, 553, 559, 564, 571, 579, 582, 588, 599, 610, + 619, 631, 636, 645, 657, 662, 665, 671, 671, 723, + 726, 729, 732, 735, 738, 744, 751, 768, 768, 780, + 783, 786, 792, 795, 798, 801, 804, 807, 810, 813, + 816, 819, 822, 825, 828, 831, 834, 840, 846, 848, + 853, 856, 856, 875, 878, 884, 887, 893, 893, 902, + 904, 909, 912, 918, 921, 935, 935, 944, 946, 951, + 953, 958, 961, 964, 979, 982, 988, 991, 997, 1000, + 1003, 1009, 1012, 1018, 1060, 1063, 1066, 1073, 1083, 1083, + 1099, 1114, 1128, 1142, 1142, 1193, 1196, 1202, 1209, 1219, + 1222, 1225, 1228, 1231, 1237, 1244, 1251, 1265, 1271, 1278, + 1287 }; #endif @@ -595,7 +596,7 @@ static const char *const yytname[] = "\">= operator\"", "\"+ operator\"", "\"- operator\"", "\"* operator\"", "\"/ operator\"", "\"% operator\"", "\"?\"", "\":\"", "\"::\"", "\"..\"", "\",\"", "\"(\"", "\")\"", "\"{\"", "\"}\"", "\"[\"", "\"]\"", "T_NIN", - "UMINUS", "UPLUS", "EXPANSION", "FUNCCALL", "REFERENCE", "INDEXED", + "UMINUS", "UPLUS", "FUNCCALL", "REFERENCE", "INDEXED", "EXPANSION", "'.'", "$accept", "query", "optional_post_modification_lets", "optional_post_modification_block", "optional_statement_block_statements", "statement_block_statement", @@ -607,15 +608,17 @@ static const char *const yytname[] = "in_or_into_collection", "remove_statement", "insert_statement", "update_parameters", "update_statement", "replace_parameters", "replace_statement", "update_or_replace", "upsert_statement", "$@4", - "expression", "$@5", "function_name", "function_call", "$@6", - "operator_unary", "operator_binary", "operator_ternary", - "optional_function_call_arguments", "expression_or_query", "$@7", - "function_arguments_list", "compound_value", "array", "$@8", + "expression", "function_name", "function_call", "$@5", "operator_unary", + "operator_binary", "operator_ternary", + "optional_function_call_arguments", "expression_or_query", "$@6", + "function_arguments_list", "compound_value", "array", "$@7", "optional_array_elements", "array_elements_list", "options", "object", - "$@9", "optional_object_elements", "object_elements_list", - "object_element", "reference", "$@10", "simple_value", "numeric_value", - "value_literal", "collection_name", "bind_parameter", - "object_element_name", "variable_name", YY_NULLPTR + "$@8", "optional_object_elements", "object_elements_list", + "object_element", "array_filter_operator", "optional_array_filter", + "optional_array_limit", "optional_array_return", "reference", "$@9", + "$@10", "simple_value", "numeric_value", "value_literal", + "collection_name", "bind_parameter", "object_element_name", + "variable_name", YY_NULLPTR }; #endif @@ -639,7 +642,7 @@ static const yytype_uint16 yytoknum[] = #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-109))) -#define YYTABLE_NINF -149 +#define YYTABLE_NINF -157 #define yytable_value_is_error(Yytable_value) \ 0 @@ -648,33 +651,34 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -109, 15, 666, -109, 2, 2, 672, 672, 18, -109, - 291, 672, 672, 672, 672, -109, -109, -109, -109, -109, - 27, -109, -109, -109, -109, 32, 32, 32, 32, 32, - -109, 7, 14, -109, 35, -109, -109, -109, -31, -109, - -109, -109, -109, 672, 672, 672, 672, -109, -109, 597, - 21, -109, -109, -109, -109, -109, -109, -109, -45, -109, - -109, -109, -109, 597, 44, 45, 2, 672, 23, 468, - 468, -109, 368, -109, 403, 672, 2, 45, 55, 54, - -109, -109, -109, -109, -109, 672, 2, 672, 50, 50, - 50, 293, -109, 0, 672, 672, 69, 672, 672, 672, - 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, - 672, 672, 60, 37, 115, 3, 73, 61, -109, 48, - -109, 87, 71, -109, 333, 291, 692, 26, 45, 45, - 672, 45, 672, 45, 500, 91, -109, 61, 45, -109, - -109, -109, 597, -109, 597, -109, 72, -109, -109, 78, - 672, 75, 76, -109, 80, 597, 74, 81, 384, 672, - 612, 161, 349, 349, 450, 450, 450, 450, 6, 6, - 50, 50, 50, 532, 245, -109, 639, -109, -32, 197, - -109, -109, 2, -109, 2, 672, 672, -109, -109, -109, - -109, -109, 28, 33, 65, -109, -109, -109, -109, -109, - -109, -109, 468, -109, 468, -109, 672, 672, 2, -109, - -109, 672, 229, -109, 0, 672, -109, 672, 384, 672, - 597, 84, -109, -109, 83, 672, 90, -109, -109, -109, - -109, 597, -109, 45, 45, 435, 565, 98, -109, 597, - 102, -109, 597, 597, 597, -109, -109, 672, 261, -109, - -109, -109, -109, -109, 672, -109, 2, 672, -109, -109, - 468, -109, 597, 45, -109 + -109, 12, 673, -109, -19, -19, 712, 712, 14, -109, + 170, 712, 712, 712, 712, -109, -109, -109, -109, -109, + 9, -109, -109, -109, -109, 75, 75, 75, 75, 75, + -109, 24, 0, -109, 16, -109, -109, -109, -2, -109, + -109, -109, -109, 712, 712, 712, 712, -109, -109, 604, + 7, -109, -109, -109, -109, -109, -109, -109, -26, -109, + -109, -109, 604, 64, 65, -19, 712, 44, -109, -109, + 475, 475, -109, 375, -109, 410, 712, -19, 65, 84, + 104, -109, -109, -109, -109, -109, 712, -19, 712, 83, + 83, 83, 267, -109, -3, 712, 712, 101, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 91, 68, 646, -8, 105, 72, -109, + 71, -109, 98, 76, -109, 307, 170, 732, 18, 65, + 65, 712, 65, 712, 65, 507, 100, -109, 72, 65, + -109, -109, -109, 604, -109, 604, -109, 90, -109, -109, + 102, 712, 93, 106, -109, 108, 604, 89, 114, 391, + 712, 21, 619, 128, 128, 109, 109, 109, 109, 95, + 95, 83, 83, 83, 539, 147, -109, 679, -109, 186, + 137, -109, -109, -19, -109, -19, 712, 712, -109, -109, + -109, -109, -109, 111, 25, 28, -109, -109, -109, -109, + -109, -109, -109, 475, -109, 475, -109, 712, 712, -19, + -109, -109, 712, 235, -109, -3, 712, -109, 712, 391, + 712, 604, 129, -109, -109, 132, -109, -109, 176, -109, + -109, 604, -109, 65, 65, 442, 572, 136, -109, 604, + 149, -109, 604, 604, 604, -109, -109, 712, 712, 190, + -109, -109, -109, -109, 712, -109, -19, 712, -109, 604, + 712, 197, 475, -109, 604, 339, 712, 151, 65, 712, + 604, -109, -109, 604 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -685,54 +689,57 @@ static const yytype_uint8 yydefact[] = 12, 0, 0, 1, 0, 0, 0, 0, 27, 43, 0, 0, 0, 0, 0, 67, 13, 14, 16, 15, 37, 17, 18, 19, 2, 10, 10, 10, 10, 10, - 152, 0, 22, 23, 0, 143, 144, 145, 128, 141, - 139, 140, 149, 0, 0, 0, 70, 119, 111, 21, - 81, 129, 72, 73, 74, 76, 109, 110, 77, 75, - 142, 137, 138, 54, 0, 117, 0, 0, 52, 0, - 0, 61, 0, 64, 0, 0, 0, 117, 117, 0, - 3, 4, 5, 6, 7, 0, 0, 0, 85, 83, - 84, 0, 12, 121, 113, 0, 0, 0, 0, 0, + 160, 0, 22, 23, 0, 151, 152, 153, 133, 149, + 147, 148, 157, 0, 0, 0, 138, 115, 107, 21, + 77, 136, 69, 70, 71, 134, 105, 106, 73, 150, + 72, 135, 54, 0, 113, 0, 0, 52, 145, 146, + 0, 0, 61, 0, 64, 0, 0, 0, 113, 113, + 0, 3, 4, 5, 6, 7, 0, 0, 0, 81, + 79, 80, 0, 12, 117, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 28, - 34, 0, 44, 45, 48, 0, 0, 0, 117, 117, - 0, 117, 0, 117, 0, 38, 30, 41, 117, 31, - 9, 11, 20, 24, 25, 69, 0, 150, 151, 0, - 0, 0, 122, 123, 0, 115, 0, 114, 99, 0, - 87, 86, 93, 94, 95, 96, 97, 98, 88, 89, - 90, 91, 92, 0, 78, 80, 105, 135, 0, 0, - 130, 131, 0, 118, 0, 0, 0, 49, 50, 47, - 51, 53, 128, 141, 149, 55, 146, 147, 148, 56, - 57, 58, 0, 59, 0, 62, 0, 0, 0, 32, - 71, 0, 0, 120, 0, 0, 112, 0, 100, 0, - 104, 0, 107, 12, 103, 0, 0, 133, 132, 26, - 35, 36, 46, 117, 117, 0, 117, 42, 39, 127, - 0, 124, 125, 116, 101, 82, 106, 105, 0, 134, - 60, 63, 65, 66, 0, 33, 0, 0, 108, 136, - 0, 40, 126, 117, 68 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, + 28, 34, 0, 44, 45, 48, 0, 0, 0, 113, + 113, 0, 113, 0, 113, 0, 38, 30, 41, 113, + 31, 9, 11, 20, 24, 25, 137, 0, 158, 159, + 0, 0, 0, 118, 119, 0, 111, 0, 110, 95, + 0, 83, 82, 89, 90, 91, 92, 93, 94, 84, + 85, 86, 87, 88, 0, 74, 76, 101, 124, 0, + 143, 140, 141, 0, 114, 0, 0, 0, 49, 50, + 47, 51, 53, 133, 149, 157, 55, 154, 155, 156, + 56, 57, 58, 0, 59, 0, 62, 0, 0, 0, + 32, 139, 0, 0, 116, 0, 0, 108, 0, 96, + 0, 100, 0, 103, 12, 99, 142, 125, 126, 26, + 35, 36, 46, 113, 113, 0, 113, 42, 39, 123, + 0, 120, 121, 112, 97, 78, 102, 101, 0, 128, + 60, 63, 65, 66, 0, 33, 0, 0, 104, 127, + 0, 131, 0, 40, 122, 129, 0, 0, 113, 0, + 132, 144, 68, 130 }; /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = +static const yytype_int16 yypgoto[] = { - -109, -91, -109, 63, -109, -109, -109, -109, 68, -109, - 62, 114, -109, -109, -109, -109, -33, -109, -109, -109, - -109, -109, -109, -109, -30, -109, -109, 82, -52, -109, - -109, -109, -109, -109, -109, -109, -109, -109, -1, -109, - -109, -109, -109, -109, -109, -109, -109, -90, -109, -109, - -109, -109, -109, -109, -109, -74, -108, -109, -109, -109, - -50, -109, -109, -8, -109, -109, 39, 53, -109, -4 + -109, -91, -109, 57, -109, -109, -109, -109, 125, -109, + 122, 191, -109, -109, -109, -109, 45, -109, -109, -109, + -109, -109, -109, -109, 26, -109, -109, 153, -62, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -6, -109, + -109, -109, -109, -109, -109, -109, -16, -109, -109, -109, + -109, -109, -109, -109, -61, -108, -109, -109, -109, 19, + -109, -109, -109, -109, -109, -109, -109, -60, -109, 6, + 107, 4, -109, -1 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 79, 80, 2, 16, 17, 18, 19, 32, - 33, 65, 20, 66, 21, 119, 120, 78, 237, 138, - 208, 22, 67, 122, 123, 189, 23, 24, 128, 25, - 26, 71, 27, 73, 28, 254, 29, 75, 124, 92, - 50, 51, 113, 52, 53, 54, 221, 222, 223, 224, - 55, 56, 94, 156, 157, 118, 57, 93, 151, 152, - 153, 58, 225, 59, 60, 61, 195, 62, 154, 34 + -1, 1, 80, 81, 2, 16, 17, 18, 19, 32, + 33, 64, 20, 65, 21, 120, 121, 79, 237, 139, + 209, 22, 66, 123, 124, 190, 23, 24, 129, 25, + 26, 72, 27, 74, 28, 254, 29, 76, 125, 50, + 51, 114, 52, 53, 54, 222, 223, 224, 225, 55, + 56, 95, 157, 158, 119, 57, 94, 152, 153, 154, + 180, 249, 261, 267, 58, 93, 228, 67, 59, 60, + 196, 61, 155, 34 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -740,78 +747,82 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 31, 146, 68, 136, 139, 49, 63, 114, 226, 183, - 69, 70, 72, 74, -79, 3, 115, -79, 129, 85, - 131, 227, 133, 147, 148, 30, 180, 149, -146, 183, - 42, 64, -146, -147, -146, 96, -8, -147, -8, -147, - 64, 76, 88, 89, 90, 91, 107, 108, 109, 196, - 197, -146, 150, 198, 200, 201, -147, 203, 5, 205, - 7, 86, 121, 87, 209, -148, 112, 116, 117, -148, - 125, -148, 135, -79, 134, -146, -79, -146, 137, 96, - -147, 159, -147, 175, 142, 176, 144, 182, -148, 81, - 82, 83, 84, 155, 158, 184, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 47, -148, 179, -148, 185, 190, 191, 186, 207, - 177, 210, 211, 214, 215, 158, 213, 216, 217, 202, - 247, 204, 246, 245, 77, 35, 36, 37, 38, 39, - 40, 41, 42, 249, 43, 256, 257, 140, 143, 212, - 233, 230, 234, 44, 45, 178, 232, 258, 218, 250, - 251, 141, 255, 46, 241, 47, 199, 48, 181, 0, - 0, 0, 0, 95, 0, 220, 0, 0, 229, 0, - 121, 0, 0, 0, 231, 0, 0, 0, 0, 264, - 96, 97, 0, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 238, 235, 236, 111, 263, 95, - 239, 0, 0, 0, 242, 0, 243, 0, 244, 0, - 0, 0, 0, 0, 248, 0, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 95, 0, 111, 0, 0, 220, 0, 0, 0, - 228, 0, 261, 260, 0, 0, 262, 0, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 95, 96, 111, 0, 0, 0, 0, - 0, 0, 240, 105, 106, 107, 108, 109, 0, 0, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 95, 0, 111, 0, 0, - 0, 35, 36, 37, 259, 39, 40, 41, 42, 0, - 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 0, 0, 111, - 0, 0, 145, 187, 188, 95, 0, 0, 0, 0, - 0, 0, 0, 35, 36, 37, 0, 39, 40, 41, - 42, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 0, 96, 111, - 126, 130, 127, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 0, 0, 0, 111, 0, 96, 97, 98, + 49, 62, 147, 31, 30, 70, 71, 73, 75, 130, + 184, 132, 3, 134, 69, 181, 68, 137, 140, 42, + 148, 149, 63, 77, 150, -155, 115, 63, -156, -155, + 184, -155, -156, 96, -156, 116, 86, 89, 90, 91, + 92, 197, 198, -75, 88, 199, -75, 87, -155, 151, + 97, -156, 113, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 122, 191, 192, 112, 201, 202, + 135, 204, -155, 206, -155, -156, 136, -156, 210, -8, + 143, -8, 145, 82, 83, 84, 85, 117, 118, 156, + 159, 126, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 138, 5, 179, + 7, -154, 97, 160, 176, -154, 177, -154, 185, 183, + 182, 159, 47, 187, 97, 203, 186, 205, 208, 69, + 69, 68, 68, 246, -154, 108, 109, 110, 97, 211, + 96, 233, 217, 234, 214, 213, 212, 106, 107, 108, + 109, 110, 216, 215, 219, 112, -75, 97, -154, -75, + -154, 218, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 221, 250, 251, 112, 255, 97, 227, 245, 247, + 231, 248, 229, 256, 122, 106, 107, 108, 109, 110, + 35, 36, 37, 257, 39, 40, 41, 42, 96, 260, + 268, 235, 236, 266, 271, 141, 239, 272, 238, 144, + 242, 78, 243, 232, 244, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 230, 258, 112, 142, 241, 200, 0, 0, 0, 226, + 0, 221, 259, 0, 0, 0, 0, 96, 262, 0, + 0, 264, 0, 0, 265, 263, 0, 0, 0, 0, + 270, 0, 0, 273, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 96, + 0, 112, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 0, 0, 112, 0, 0, 146, 188, 189, 96, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, + 0, 39, 40, 41, 42, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 96, 0, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 0, 96, 111, 126, 132, 127, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 0, 0, 0, - 111, 0, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 95, 0, 111, - 0, 0, 252, 253, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 96, - 126, 111, 127, 0, 0, 0, 0, 0, 105, 106, - 107, 108, 109, 0, 0, 0, 111, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 95, 0, 111, 0, 206, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 95, 0, 111, 0, 0, 0, + 109, 110, 111, 0, 0, 112, 269, 127, 131, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 219, 95, 111, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 95, - 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 95, 0, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 96, 0, 111, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 0, 0, 0, 111, 35, - 36, 37, 38, 39, 40, 41, 42, 0, 43, 4, - 5, 6, 7, 8, 9, 10, 0, 44, 45, 0, - 0, 11, 12, 13, 14, 15, 0, 46, -102, 47, + 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, + 97, 112, 127, 133, 128, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 0, 0, 0, 112, 0, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 96, 0, 112, 0, 0, 252, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 0, 127, 112, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 96, + 0, 112, 0, 207, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 96, 0, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 220, 96, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 96, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 96, 0, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 97, 98, + 112, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 0, 0, 0, 112, 35, 36, 37, 38, + 39, 40, 41, 42, 0, 43, 4, 5, 6, 7, + 8, 9, 10, 0, 44, 45, 178, 0, 11, 12, + 13, 14, 15, 0, 46, 0, 47, 0, 48, 35, + 36, 37, 38, 39, 40, 41, 42, 0, 43, 0, + 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 46, -98, 47, 0, 48, 35, 36, 37, 38, 39, 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 45, 35, 36, 37, 192, 193, 40, 41, 194, + 44, 45, 35, 36, 37, 193, 194, 40, 41, 195, 46, 43, 47, 0, 48, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 47, 0, 48 @@ -819,75 +830,79 @@ static const yytype_int16 yytable[] = static const yytype_int16 yycheck[] = { - 4, 92, 10, 77, 78, 6, 7, 52, 40, 117, - 11, 12, 13, 14, 45, 0, 61, 48, 70, 12, - 72, 53, 74, 23, 24, 23, 23, 27, 0, 137, - 27, 13, 4, 0, 6, 29, 4, 4, 6, 6, - 13, 14, 43, 44, 45, 46, 40, 41, 42, 23, - 24, 23, 52, 27, 128, 129, 23, 131, 4, 133, - 6, 47, 66, 28, 138, 0, 45, 23, 23, 4, - 47, 6, 76, 45, 75, 47, 48, 49, 23, 29, - 47, 12, 49, 23, 85, 48, 87, 14, 23, 26, - 27, 28, 29, 94, 95, 47, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 50, 47, 114, 49, 28, 124, 125, 47, 28, - 5, 49, 44, 47, 44, 126, 51, 53, 47, 130, - 47, 132, 223, 49, 20, 20, 21, 22, 23, 24, - 25, 26, 27, 53, 29, 47, 44, 79, 86, 150, - 202, 184, 204, 38, 39, 40, 186, 247, 159, 233, - 234, 79, 236, 48, 214, 50, 127, 52, 115, -1, - -1, -1, -1, 12, -1, 176, -1, -1, 182, -1, - 184, -1, -1, -1, 185, -1, -1, -1, -1, 263, - 29, 30, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 208, 206, 207, 46, 260, 12, - 211, -1, -1, -1, 215, -1, 217, -1, 219, -1, - -1, -1, -1, -1, 225, -1, 29, 30, 31, 32, + 6, 7, 93, 4, 23, 11, 12, 13, 14, 71, + 118, 73, 0, 75, 10, 23, 10, 78, 79, 27, + 23, 24, 13, 14, 27, 0, 52, 13, 0, 4, + 138, 6, 4, 12, 6, 61, 12, 43, 44, 45, + 46, 23, 24, 45, 28, 27, 48, 47, 23, 52, + 29, 23, 45, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 65, 125, 126, 46, 129, 130, + 76, 132, 47, 134, 49, 47, 77, 49, 139, 4, + 86, 6, 88, 26, 27, 28, 29, 23, 23, 95, + 96, 47, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 23, 4, 115, + 6, 0, 29, 12, 23, 4, 48, 6, 47, 14, + 116, 127, 50, 47, 29, 131, 28, 133, 28, 125, + 126, 125, 126, 224, 23, 40, 41, 42, 29, 49, + 12, 203, 53, 205, 51, 151, 44, 38, 39, 40, + 41, 42, 44, 47, 160, 46, 45, 29, 47, 48, + 49, 47, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 177, 233, 234, 46, 236, 29, 40, 49, 47, + 186, 5, 183, 47, 185, 38, 39, 40, 41, 42, + 20, 21, 22, 44, 24, 25, 26, 27, 12, 9, + 262, 207, 208, 6, 53, 80, 212, 268, 209, 87, + 216, 20, 218, 187, 220, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 185, 247, 46, 80, 215, 128, -1, -1, -1, 53, + -1, 247, 248, -1, -1, -1, -1, 12, 254, -1, + -1, 257, -1, -1, 260, 256, -1, -1, -1, -1, + 266, -1, -1, 269, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 12, + -1, 46, -1, -1, -1, -1, -1, -1, 53, -1, + -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 12, -1, 46, -1, -1, 247, -1, -1, -1, - 53, -1, 256, 254, -1, -1, 257, -1, 29, 30, + 43, -1, -1, 46, -1, -1, 49, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, + -1, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 12, -1, 46, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 12, 29, 46, -1, -1, -1, -1, - -1, -1, 53, 38, 39, 40, 41, 42, -1, -1, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 12, -1, 46, -1, -1, - -1, 20, 21, 22, 53, 24, 25, 26, 27, -1, - -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, -1, -1, 46, - -1, -1, 49, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, 20, 21, 22, -1, 24, 25, 26, - 27, 12, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, -1, 29, 46, - 12, 13, 14, 34, 35, 36, 37, 38, 39, 40, - 41, 42, -1, -1, -1, 46, -1, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, -1, 29, 46, 12, 13, 14, 34, 35, - 36, 37, 38, 39, 40, 41, 42, -1, -1, -1, - 46, -1, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 12, -1, 46, - -1, -1, 17, 18, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 29, - 12, 46, 14, -1, -1, -1, -1, -1, 38, 39, - 40, 41, 42, -1, -1, -1, 46, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 12, -1, 46, -1, 16, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 12, -1, 46, -1, -1, -1, + 41, 42, 43, -1, -1, 46, 47, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, + 29, 46, 12, 13, 14, 34, 35, 36, 37, 38, + 39, 40, 41, 42, -1, -1, -1, 46, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 12, -1, 46, -1, -1, 17, + 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 12, 46, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, + 38, 39, 40, 41, 42, 43, -1, 12, 46, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 12, - -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 12, -1, 29, 30, 31, 32, + -1, 46, -1, 16, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 29, -1, 46, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, -1, -1, -1, 46, 20, - 21, 22, 23, 24, 25, 26, 27, -1, 29, 3, - 4, 5, 6, 7, 8, 9, -1, 38, 39, -1, - -1, 15, 16, 17, 18, 19, -1, 48, 49, 50, + 43, 12, -1, 46, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 12, 46, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 12, -1, 46, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 12, -1, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 29, 30, + 46, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, -1, -1, -1, 46, 20, 21, 22, 23, + 24, 25, 26, 27, -1, 29, 3, 4, 5, 6, + 7, 8, 9, -1, 38, 39, 40, -1, 15, 16, + 17, 18, 19, -1, 48, -1, 50, -1, 52, 20, + 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, + -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, -1, 52, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, 20, 21, 22, 23, 24, 25, 26, 27, @@ -903,30 +918,31 @@ static const yytype_uint8 yystos[] = 0, 63, 66, 0, 3, 4, 5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 67, 68, 69, 70, 74, 76, 83, 88, 89, 91, 92, 94, 96, 98, - 23, 131, 71, 72, 131, 20, 21, 22, 23, 24, + 23, 135, 71, 72, 135, 20, 21, 22, 23, 24, 25, 26, 27, 29, 38, 39, 48, 50, 52, 100, - 102, 103, 105, 106, 107, 112, 113, 118, 123, 125, - 126, 127, 129, 100, 13, 73, 75, 84, 125, 100, - 100, 93, 100, 95, 100, 99, 14, 73, 79, 64, - 65, 65, 65, 65, 65, 12, 47, 28, 100, 100, - 100, 100, 101, 119, 114, 12, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 46, 45, 104, 52, 61, 23, 23, 117, 77, - 78, 131, 85, 86, 100, 47, 12, 14, 90, 90, - 13, 90, 13, 90, 100, 131, 117, 23, 81, 117, - 70, 89, 100, 72, 100, 49, 63, 23, 24, 27, - 52, 120, 121, 122, 130, 100, 115, 116, 100, 12, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 23, 48, 5, 40, 100, - 23, 129, 14, 118, 47, 28, 47, 10, 11, 87, - 125, 125, 23, 24, 27, 128, 23, 24, 27, 128, - 117, 117, 100, 117, 100, 117, 16, 28, 82, 117, - 49, 44, 100, 51, 47, 44, 53, 47, 100, 44, - 100, 108, 109, 110, 111, 124, 40, 53, 53, 131, - 78, 100, 86, 90, 90, 100, 100, 80, 131, 100, - 53, 122, 100, 100, 100, 49, 63, 47, 100, 53, - 117, 117, 17, 18, 97, 117, 47, 44, 109, 53, - 100, 131, 100, 90, 117 + 101, 102, 104, 105, 106, 111, 112, 117, 126, 130, + 131, 133, 100, 13, 73, 75, 84, 129, 131, 133, + 100, 100, 93, 100, 95, 100, 99, 14, 73, 79, + 64, 65, 65, 65, 65, 65, 12, 47, 28, 100, + 100, 100, 100, 127, 118, 113, 12, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 46, 45, 103, 52, 61, 23, 23, 116, + 77, 78, 135, 85, 86, 100, 47, 12, 14, 90, + 90, 13, 90, 13, 90, 100, 135, 116, 23, 81, + 116, 70, 89, 100, 72, 100, 49, 63, 23, 24, + 27, 52, 119, 120, 121, 134, 100, 114, 115, 100, + 12, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 23, 48, 40, 100, + 122, 23, 133, 14, 117, 47, 28, 47, 10, 11, + 87, 129, 129, 23, 24, 27, 132, 23, 24, 27, + 132, 116, 116, 100, 116, 100, 116, 16, 28, 82, + 116, 49, 44, 100, 51, 47, 44, 53, 47, 100, + 44, 100, 107, 108, 109, 110, 53, 40, 128, 135, + 78, 100, 86, 90, 90, 100, 100, 80, 135, 100, + 53, 121, 100, 100, 100, 49, 63, 47, 5, 123, + 116, 116, 17, 18, 97, 116, 47, 44, 108, 100, + 9, 124, 100, 135, 100, 100, 6, 125, 90, 47, + 100, 53, 116, 100 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -939,15 +955,16 @@ static const yytype_uint8 yyr1[] = 80, 82, 81, 84, 83, 85, 85, 86, 87, 87, 87, 87, 88, 88, 89, 90, 90, 91, 92, 93, 93, 94, 95, 95, 96, 97, 97, 99, 98, 100, - 101, 100, 100, 100, 100, 100, 100, 100, 100, 102, - 102, 104, 103, 105, 105, 105, 106, 106, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 107, 108, 108, 109, 110, 109, 111, 111, 112, - 112, 114, 113, 115, 115, 116, 116, 117, 117, 119, - 118, 120, 120, 121, 121, 122, 122, 122, 123, 123, - 123, 123, 123, 123, 123, 124, 123, 125, 125, 126, - 126, 127, 127, 127, 127, 127, 128, 128, 128, 129, - 130, 130, 131 + 100, 100, 100, 100, 100, 101, 101, 103, 102, 104, + 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, + 108, 109, 108, 110, 110, 111, 111, 113, 112, 114, + 114, 115, 115, 116, 116, 118, 117, 119, 119, 120, + 120, 121, 121, 121, 122, 122, 123, 123, 124, 124, + 124, 125, 125, 126, 126, 126, 126, 126, 127, 126, + 126, 126, 126, 128, 126, 129, 129, 130, 130, 131, + 131, 131, 131, 131, 132, 132, 132, 133, 134, 134, + 135 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -959,16 +976,17 @@ static const yytype_uint8 yyr2[] = 3, 3, 4, 6, 1, 3, 3, 0, 2, 1, 3, 0, 3, 0, 3, 1, 3, 2, 0, 1, 1, 1, 2, 4, 2, 2, 2, 4, 4, 3, - 5, 2, 3, 5, 2, 1, 1, 0, 9, 3, - 0, 4, 1, 1, 1, 1, 1, 1, 3, 1, - 3, 0, 5, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 5, 0, 1, 1, 0, 2, 1, 3, 1, - 1, 0, 4, 0, 1, 1, 3, 0, 2, 0, - 4, 0, 1, 1, 3, 3, 5, 3, 1, 1, - 3, 3, 4, 4, 5, 0, 6, 1, 1, 1, + 5, 2, 3, 5, 2, 1, 1, 0, 9, 1, + 1, 1, 1, 1, 3, 1, 3, 0, 5, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 4, 5, 0, 1, + 1, 0, 2, 1, 3, 1, 1, 0, 4, 0, + 1, 1, 3, 0, 2, 0, 4, 0, 1, 1, + 3, 3, 5, 3, 1, 2, 0, 2, 0, 2, + 4, 0, 2, 1, 1, 1, 1, 3, 0, 4, + 3, 3, 4, 0, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1 + 1 }; @@ -1746,187 +1764,187 @@ yyreduce: switch (yyn) { case 2: -#line 200 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 1753 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 3: -#line 202 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 1760 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 4: #line 204 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1767 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1771 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 5: + case 3: #line 206 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1774 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1778 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 6: + case 4: #line 208 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1781 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1785 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 7: + case 5: #line 210 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1788 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1792 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 6: +#line 212 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 1799 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 7: +#line 214 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 1806 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 8: -#line 215 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 219 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1795 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1813 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 9: -#line 217 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 221 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1802 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1820 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 10: -#line 222 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 226 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // still need to close the scope opened by the data-modification statement parser->ast()->scopes()->endNested(); } -#line 1811 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1829 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 11: -#line 226 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 230 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // the RETURN statement will close the scope opened by the data-modification statement } -#line 1819 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1837 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 12: -#line 232 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 236 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1826 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1844 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 13: -#line 234 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 238 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1833 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1851 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 14: -#line 239 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 1840 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 15: -#line 241 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 1847 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 16: #line 243 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1854 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1858 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 17: + case 15: #line 245 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1861 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1865 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 18: + case 16: #line 247 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1868 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1872 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 19: + case 17: #line 249 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1875 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1879 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 18: +#line 251 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 1886 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 19: +#line 253 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 1893 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 20: -#line 254 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 258 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_FOR); auto node = parser->ast()->createNodeFor((yyvsp[-2].strval), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 1886 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1904 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 21: -#line 263 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 267 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // operand is a reference. can use it directly auto node = parser->ast()->createNodeFilter((yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 1896 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1914 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 22: -#line 271 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 275 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1903 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1921 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 23: -#line 276 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 280 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1910 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1928 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 24: -#line 278 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 282 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 1917 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1935 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 25: -#line 283 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 287 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeLet((yyvsp[-2].strval), (yyvsp[0].node), true); parser->ast()->addOperation(node); } -#line 1926 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1944 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 26: -#line 290 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 294 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! TRI_CaseEqualString((yyvsp[-2].strval), "COUNT")) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected qualifier '%s', expecting 'COUNT'", (yyvsp[-2].strval), yylloc.first_line, yylloc.first_column); @@ -1934,20 +1952,20 @@ yyreduce: (yyval.strval) = (yyvsp[0].strval); } -#line 1938 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1956 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 27: -#line 300 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 304 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 1947 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1965 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 28: -#line 303 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 307 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); @@ -1956,11 +1974,11 @@ yyreduce: } (yyval.node) = list; } -#line 1960 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1978 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 29: -#line 314 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 318 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -1977,11 +1995,11 @@ yyreduce: auto node = parser->ast()->createNodeCollectCount(parser->ast()->createNodeArray(), (yyvsp[-1].strval), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 1981 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 1999 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 30: -#line 330 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 334 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2009,11 +2027,11 @@ yyreduce: auto node = parser->ast()->createNodeCollectCount((yyvsp[-2].node), (yyvsp[-1].strval), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2013 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2031 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 31: -#line 357 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 361 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2041,11 +2059,11 @@ yyreduce: auto node = parser->ast()->createNodeCollect((yyvsp[-2].node), (yyvsp[-1].strval), nullptr, (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2045 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2063 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 32: -#line 384 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 388 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2078,11 +2096,11 @@ yyreduce: auto node = parser->ast()->createNodeCollect((yyvsp[-3].node), (yyvsp[-2].strval), (yyvsp[-1].node), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2082 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2100 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 33: -#line 416 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 420 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); @@ -2110,50 +2128,50 @@ yyreduce: auto node = parser->ast()->createNodeCollectExpression((yyvsp[-5].node), (yyvsp[-3].strval), (yyvsp[-1].node), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2114 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2132 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 34: -#line 446 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 450 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2121 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2139 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 35: -#line 448 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 452 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2128 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2146 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 36: -#line 453 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 457 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeAssign((yyvsp[-2].strval), (yyvsp[0].node)); parser->pushArrayElement(node); } -#line 2137 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2155 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 37: -#line 460 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 464 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = nullptr; } -#line 2145 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2163 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 38: -#line 463 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 467 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 2153 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2171 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 39: -#line 469 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 473 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->ast()->scopes()->existsVariable((yyvsp[0].strval))) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of unknown variable '%s' for KEEP", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2168,11 +2186,11 @@ yyreduce: node->setFlag(FLAG_KEEP_VARIABLENAME); parser->pushArrayElement(node); } -#line 2172 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2190 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 40: -#line 483 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 487 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->ast()->scopes()->existsVariable((yyvsp[0].strval))) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "use of unknown variable '%s' for KEEP", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2187,11 +2205,11 @@ yyreduce: node->setFlag(FLAG_KEEP_VARIABLENAME); parser->pushArrayElement(node); } -#line 2191 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2209 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 41: -#line 500 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 504 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! TRI_CaseEqualString((yyvsp[0].strval), "KEEP")) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected qualifier '%s', expecting 'KEEP'", (yyvsp[0].strval), yylloc.first_line, yylloc.first_column); @@ -2200,140 +2218,140 @@ yyreduce: auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2204 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2222 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 42: -#line 507 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 511 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); (yyval.node) = list; } -#line 2213 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2231 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 43: -#line 514 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 518 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2222 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2240 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 44: -#line 517 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 521 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); auto node = parser->ast()->createNodeSort(list); parser->ast()->addOperation(node); } -#line 2232 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2250 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 45: -#line 525 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 529 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2240 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2258 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 46: -#line 528 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 532 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushArrayElement((yyvsp[0].node)); } -#line 2248 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2266 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 47: -#line 534 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 538 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeSortElement((yyvsp[-1].node), (yyvsp[0].node)); } -#line 2256 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2274 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 48: -#line 540 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 544 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 2264 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2282 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 49: -#line 543 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 547 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 2272 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2290 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 50: -#line 546 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 550 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(false); } -#line 2280 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2298 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 51: -#line 549 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 553 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2288 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2306 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 52: -#line 555 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 559 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto offset = parser->ast()->createNodeValueInt(0); auto node = parser->ast()->createNodeLimit(offset, (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2298 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2316 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 53: -#line 560 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 564 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeLimit((yyvsp[-2].node), (yyvsp[0].node)); parser->ast()->addOperation(node); } -#line 2307 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2325 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 54: -#line 567 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 571 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeReturn((yyvsp[0].node)); parser->ast()->addOperation(node); parser->ast()->scopes()->endNested(); } -#line 2317 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2335 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 55: -#line 575 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 579 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2325 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2343 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 56: -#line 578 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 582 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2333 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2351 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 57: -#line 584 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 588 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REMOVE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2342,11 +2360,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2346 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2364 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 58: -#line 595 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 599 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_INSERT, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2355,11 +2373,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2359 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2377 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 59: -#line 606 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 610 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPDATE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2369,11 +2387,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2373 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2391 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 60: -#line 615 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 619 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPDATE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2383,18 +2401,18 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2387 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2405 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 61: -#line 627 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 631 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2394 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2412 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 62: -#line 632 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 636 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REPLACE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2404,11 +2422,11 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2408 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2426 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 63: -#line 641 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 645 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_REPLACE, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2418,44 +2436,44 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2422 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2440 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 64: -#line 653 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 657 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { } -#line 2429 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2447 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 65: -#line 658 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 662 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = static_cast(NODE_TYPE_UPDATE); } -#line 2437 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2455 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 66: -#line 661 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 665 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.intval) = static_cast(NODE_TYPE_REPLACE); } -#line 2445 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2463 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 67: -#line 667 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 671 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // reserve a variable named "$OLD", we might need it in the update expression // and in a later return thing parser->pushStack(parser->ast()->createNodeVariable(Variable::NAME_OLD, true)); } -#line 2455 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2473 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 68: -#line 671 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 675 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (! parser->configureWriteQuery(AQL_QUERY_UPSERT, (yyvsp[-1].node), (yyvsp[0].node))) { YYABORT; @@ -2501,102 +2519,59 @@ yyreduce: parser->ast()->addOperation(node); parser->setWriteNode(node); } -#line 2505 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2523 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 69: -#line 719 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 723 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[-1].node); + (yyval.node) = (yyvsp[0].node); } -#line 2513 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2531 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 70: -#line 722 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 726 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - if (parser->isModificationQuery()) { - parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); - } - parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); - parser->ast()->startSubQuery(); + (yyval.node) = (yyvsp[0].node); } -#line 2525 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2539 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 71: -#line 728 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 729 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - AstNode* node = parser->ast()->endSubQuery(); - parser->ast()->scopes()->endCurrent(); - - std::string const variableName = parser->ast()->variables()->nextName(); - auto subQuery = parser->ast()->createNodeLet(variableName.c_str(), node, false); - parser->ast()->addOperation(subQuery); - - (yyval.node) = parser->ast()->createNodeReference(variableName.c_str()); + (yyval.node) = (yyvsp[0].node); } -#line 2540 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2547 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 72: -#line 738 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 732 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2548 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2555 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 73: -#line 741 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 735 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2556 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2563 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 74: -#line 744 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2564 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 75: -#line 747 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2572 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 76: -#line 750 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2580 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 77: -#line 753 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = (yyvsp[0].node); - } -#line 2588 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 78: -#line 756 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 738 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeRange((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2596 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2571 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 79: -#line 762 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 75: +#line 744 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); @@ -2604,11 +2579,11 @@ yyreduce: ABORT_OOM } } -#line 2608 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2583 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 80: -#line 769 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 76: +#line 751 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-2].strval) == nullptr || (yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -2623,205 +2598,205 @@ yyreduce: ABORT_OOM } } -#line 2627 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2602 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 81: -#line 786 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 77: +#line 768 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushStack((yyvsp[0].strval)); auto node = parser->ast()->createNodeArray(); parser->pushStack(node); } -#line 2638 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2613 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 82: -#line 791 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 78: +#line 773 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto list = static_cast(parser->popStack()); (yyval.node) = parser->ast()->createNodeFunctionCall(static_cast(parser->popStack()), list); } -#line 2647 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2622 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 83: -#line 798 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 79: +#line 780 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_PLUS, (yyvsp[0].node)); } -#line 2655 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2630 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 84: -#line 801 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 80: +#line 783 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_MINUS, (yyvsp[0].node)); } -#line 2663 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2638 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 85: -#line 804 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 81: +#line 786 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeUnaryOperator(NODE_TYPE_OPERATOR_UNARY_NOT, (yyvsp[0].node)); } -#line 2671 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2646 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 86: -#line 810 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 82: +#line 792 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_OR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2679 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2654 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 87: -#line 813 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 83: +#line 795 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_AND, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2687 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2662 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 88: -#line 816 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 84: +#line 798 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_PLUS, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2695 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2670 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 89: -#line 819 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 85: +#line 801 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_MINUS, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2703 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2678 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 90: -#line 822 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 86: +#line 804 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_TIMES, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2711 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2686 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 91: -#line 825 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 87: +#line 807 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_DIV, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2719 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2694 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 92: -#line 828 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 88: +#line 810 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_MOD, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2727 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2702 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 93: -#line 831 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 89: +#line 813 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_EQ, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2735 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2710 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 94: -#line 834 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 90: +#line 816 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_NE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2743 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2718 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 95: -#line 837 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 91: +#line 819 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_LT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2751 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2726 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 96: -#line 840 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 92: +#line 822 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_GT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2759 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2734 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 97: -#line 843 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 93: +#line 825 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_LE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2767 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2742 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 94: +#line 828 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_GE, (yyvsp[-2].node), (yyvsp[0].node)); + } +#line 2750 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 95: +#line 831 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_IN, (yyvsp[-2].node), (yyvsp[0].node)); + } +#line 2758 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 96: +#line 834 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_NIN, (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 2766 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 97: +#line 840 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeTernaryOperator((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); + } +#line 2774 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 98: #line 846 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_GE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2775 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2781 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 99: -#line 849 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 848 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_IN, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2783 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2788 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 100: -#line 852 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = parser->ast()->createNodeBinaryOperator(NODE_TYPE_OPERATOR_BINARY_NIN, (yyvsp[-3].node), (yyvsp[0].node)); - } -#line 2791 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 101: -#line 858 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - (yyval.node) = parser->ast()->createNodeTernaryOperator((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); - } -#line 2799 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 102: -#line 864 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2806 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 103: -#line 866 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2813 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 104: -#line 871 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 853 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 2821 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2796 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 105: -#line 874 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 101: +#line 856 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if (parser->isModificationQuery()) { parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); @@ -2829,11 +2804,11 @@ yyreduce: parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); parser->ast()->startSubQuery(); } -#line 2833 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2808 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 106: -#line 880 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 102: +#line 862 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { AstNode* node = parser->ast()->endSubQuery(); parser->ast()->scopes()->endCurrent(); @@ -2844,98 +2819,98 @@ yyreduce: (yyval.node) = parser->ast()->createNodeReference(variableName.c_str()); } -#line 2848 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2823 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 103: +#line 875 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + parser->pushArrayElement((yyvsp[0].node)); + } +#line 2831 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 104: +#line 878 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + parser->pushArrayElement((yyvsp[0].node)); + } +#line 2839 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 105: +#line 884 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 2847 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 106: +#line 887 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 2855 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 107: #line 893 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - parser->pushArrayElement((yyvsp[0].node)); + auto node = parser->ast()->createNodeArray(); + parser->pushStack(node); } -#line 2856 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2864 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 108: #line 896 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - parser->pushArrayElement((yyvsp[0].node)); + (yyval.node) = static_cast(parser->popStack()); } -#line 2864 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2872 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 109: #line 902 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[0].node); } -#line 2872 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2879 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 110: -#line 905 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 904 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = (yyvsp[0].node); } -#line 2880 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2886 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 111: -#line 911 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 909 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - auto node = parser->ast()->createNodeArray(); - parser->pushStack(node); + parser->pushArrayElement((yyvsp[0].node)); } -#line 2889 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2894 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 112: -#line 914 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 912 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - (yyval.node) = static_cast(parser->popStack()); + parser->pushArrayElement((yyvsp[0].node)); } -#line 2897 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2902 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 113: -#line 920 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2904 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 114: -#line 922 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2911 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 115: -#line 927 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - parser->pushArrayElement((yyvsp[0].node)); - } -#line 2919 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 116: -#line 930 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - parser->pushArrayElement((yyvsp[0].node)); - } -#line 2927 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 117: -#line 936 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 918 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = nullptr; } -#line 2935 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2910 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 118: -#line 939 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 114: +#line 921 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-1].strval) == nullptr || (yyvsp[0].node) == nullptr) { ABORT_OOM @@ -2947,72 +2922,72 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 2951 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2926 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 119: -#line 953 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 115: +#line 935 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto node = parser->ast()->createNodeObject(); parser->pushStack(node); } -#line 2960 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2935 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 120: -#line 956 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 116: +#line 938 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = static_cast(parser->popStack()); } -#line 2968 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2943 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 117: +#line 944 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 2950 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 118: +#line 946 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 2957 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 119: +#line 951 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 2964 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 120: +#line 953 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + } +#line 2971 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 121: -#line 962 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2975 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 122: -#line 964 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2982 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 123: -#line 969 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2989 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 124: -#line 971 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - } -#line 2996 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 125: -#line 976 "arangod/Aql/grammar.y" /* yacc.c:1646 */ +#line 958 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushObjectElement((yyvsp[-2].strval), (yyvsp[0].node)); } -#line 3004 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2979 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 126: -#line 979 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 122: +#line 961 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { parser->pushObjectElement((yyvsp[-3].node), (yyvsp[0].node)); } -#line 3012 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 2987 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 127: -#line 982 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 123: +#line 964 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[-2].strval) == nullptr) { ABORT_OOM @@ -3025,11 +3000,83 @@ yyreduce: auto param = parser->ast()->createNodeParameter((yyvsp[-2].strval)); parser->pushObjectElement(param, (yyvsp[0].node)); } -#line 3029 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3004 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 124: +#line 979 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.intval) = 1; + } +#line 3012 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 125: +#line 982 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.intval) = (yyvsp[-1].intval) + 1; + } +#line 3020 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 126: +#line 988 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = nullptr; + } +#line 3028 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 127: +#line 991 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 3036 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; case 128: #line 997 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = nullptr; + } +#line 3044 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 129: +#line 1000 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeArrayLimit(nullptr, (yyvsp[0].node)); + } +#line 3052 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 130: +#line 1003 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = parser->ast()->createNodeArrayLimit((yyvsp[-2].node), (yyvsp[0].node)); + } +#line 3060 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 131: +#line 1009 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = nullptr; + } +#line 3068 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 132: +#line 1012 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 3076 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 133: +#line 1018 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // variable or collection auto ast = parser->ast(); @@ -3072,11 +3119,27 @@ yyreduce: (yyval.node) = node; } -#line 3076 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3123 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 129: -#line 1039 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 134: +#line 1060 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 3131 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 135: +#line 1063 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + (yyval.node) = (yyvsp[0].node); + } +#line 3139 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 136: +#line 1066 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); @@ -3084,135 +3147,186 @@ yyreduce: ABORT_OOM } } -#line 3088 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3151 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 130: -#line 1046 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 137: +#line 1073 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + if ((yyvsp[-1].node)->type == NODE_TYPE_EXPANSION) { + // create a dummy passthru node that reduces and evaluates the expansion first + // and the expansion on top of the stack won't be chained with any other expansions + (yyval.node) = parser->ast()->createNodePassthru((yyvsp[-1].node)); + } + else { + (yyval.node) = (yyvsp[-1].node); + } + } +#line 3166 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 138: +#line 1083 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + if (parser->isModificationQuery()) { + parser->registerParseError(TRI_ERROR_QUERY_PARSE, "unexpected subquery after data-modification operation", yylloc.first_line, yylloc.first_column); + } + parser->ast()->scopes()->start(triagens::aql::AQL_SCOPE_SUBQUERY); + parser->ast()->startSubQuery(); + } +#line 3178 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 139: +#line 1089 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + { + AstNode* node = parser->ast()->endSubQuery(); + parser->ast()->scopes()->endCurrent(); + + std::string const variableName = parser->ast()->variables()->nextName(); + auto subQuery = parser->ast()->createNodeLet(variableName.c_str(), node, false); + parser->ast()->addOperation(subQuery); + + (yyval.node) = parser->ast()->createNodeReference(variableName.c_str()); + } +#line 3193 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ + break; + + case 140: +#line 1099 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.reference if ((yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { // if left operand is an expansion already... - // patch the existing expansion - (yyvsp[-2].node)->changeMember(1, parser->ast()->createNodeAttributeAccess((yyvsp[-2].node)->getMember(1), (yyvsp[0].strval))); + // dive into the expansion's right-hand child nodes for further expansion and + // patch the bottom-most one + auto current = const_cast(parser->ast()->findExpansionSubNode((yyvsp[-2].node))); + TRI_ASSERT(current->type == NODE_TYPE_EXPANSION); + current->changeMember(1, parser->ast()->createNodeAttributeAccess(current->getMember(1), (yyvsp[0].strval))); (yyval.node) = (yyvsp[-2].node); } else { (yyval.node) = parser->ast()->createNodeAttributeAccess((yyvsp[-2].node), (yyvsp[0].strval)); } } -#line 3105 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3213 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 131: -#line 1058 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 141: +#line 1114 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // named variable access, e.g. variable.@reference if ((yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { // if left operand is an expansion already... // patch the existing expansion - (yyvsp[-2].node)->changeMember(1, parser->ast()->createNodeBoundAttributeAccess((yyvsp[-2].node)->getMember(1), (yyvsp[0].node))); + auto current = const_cast(parser->ast()->findExpansionSubNode((yyvsp[-2].node))); + TRI_ASSERT(current->type == NODE_TYPE_EXPANSION); + current->changeMember(1, parser->ast()->createNodeBoundAttributeAccess(current->getMember(1), (yyvsp[0].node))); (yyval.node) = (yyvsp[-2].node); } else { (yyval.node) = parser->ast()->createNodeBoundAttributeAccess((yyvsp[-2].node), (yyvsp[0].node)); } } -#line 3122 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3232 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 132: -#line 1070 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 142: +#line 1128 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { // indexed variable access, e.g. variable[index] if ((yyvsp[-3].node)->type == NODE_TYPE_EXPANSION) { // if left operand is an expansion already... // patch the existing expansion - (yyvsp[-3].node)->changeMember(1, parser->ast()->createNodeIndexedAccess((yyvsp[-3].node)->getMember(1), (yyvsp[-1].node))); + auto current = const_cast(parser->ast()->findExpansionSubNode((yyvsp[-3].node))); + TRI_ASSERT(current->type == NODE_TYPE_EXPANSION); + current->changeMember(1, parser->ast()->createNodeIndexedAccess(current->getMember(1), (yyvsp[-1].node))); (yyval.node) = (yyvsp[-3].node); } else { (yyval.node) = parser->ast()->createNodeIndexedAccess((yyvsp[-3].node), (yyvsp[-1].node)); } } -#line 3139 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3251 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 133: -#line 1082 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 143: +#line 1142 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { - // variable expansion, e.g. variable[*] + // variable expansion, e.g. variable[*], with optional FILTER, LIMIT and RETURN clauses + if ((yyvsp[0].intval) > 1 && (yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { + // create a dummy passthru node that reduces and evaluates the expansion first + // and the expansion on top of the stack won't be chained with any other expansions + (yyvsp[-2].node) = parser->ast()->createNodePassthru((yyvsp[-2].node)); + } + // create a temporary iterator variable std::string const nextName = parser->ast()->variables()->nextName() + "_"; char const* iteratorName = nextName.c_str(); - auto iterator = parser->ast()->createNodeIterator(iteratorName, (yyvsp[-3].node)); - (yyval.node) = parser->ast()->createNodeExpansion(iterator, parser->ast()->createNodeReference(iteratorName), false); - } -#line 3152 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - case 134: -#line 1090 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - // variable expansion, e.g. variable[**] - // create a temporary iterator variable - std::string const nextName = parser->ast()->variables()->nextName() + "_"; - char const* iteratorName = nextName.c_str(); - auto iterator = parser->ast()->createNodeIterator(iteratorName, (yyvsp[-4].node)); - (yyval.node) = parser->ast()->createNodeExpansion(iterator, parser->ast()->createNodeReference(iteratorName), true); - } -#line 3165 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ - break; - - case 135: -#line 1098 "arangod/Aql/grammar.y" /* yacc.c:1646 */ - { - // variable expansion, e.g. variable[*] - // create a temporary iterator variable - std::string const nextName = parser->ast()->variables()->nextName() + "_"; - char const* iteratorName = nextName.c_str(); - auto iterator = parser->ast()->createNodeIterator(iteratorName, (yyvsp[-2].node)); - parser->pushStack(iterator); + if ((yyvsp[-2].node)->type == NODE_TYPE_EXPANSION) { + auto iterator = parser->ast()->createNodeIterator(iteratorName, (yyvsp[-2].node)->getMember(1)); + parser->pushStack(iterator); + } + else { + auto iterator = parser->ast()->createNodeIterator(iteratorName, (yyvsp[-2].node)); + parser->pushStack(iterator); + } auto scopes = parser->ast()->scopes(); scopes->stackCurrentVariable(scopes->getVariable(iteratorName)); } -#line 3181 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3280 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 136: -#line 1108 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 144: +#line 1165 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { auto scopes = parser->ast()->scopes(); scopes->unstackCurrentVariable(); - auto iterator = static_cast(parser->popStack()); + auto iterator = static_cast(parser->popStack()); auto variableNode = iterator->getMember(0); TRI_ASSERT(variableNode->type == NODE_TYPE_VARIABLE); auto variable = static_cast(variableNode->getData()); - (yyval.node) = parser->ast()->createNodeExpansion(iterator, parser->ast()->createNodeReference(variable->name.c_str()), (yyvsp[-1].node)); + + if ((yyvsp[-7].node)->type == NODE_TYPE_EXPANSION) { + auto expand = parser->ast()->createNodeExpansion((yyvsp[-5].intval), iterator, parser->ast()->createNodeReference(variable->name.c_str()), (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node)); + (yyvsp[-7].node)->changeMember(1, expand); + (yyval.node) = (yyvsp[-7].node); +/* + auto current = const_cast(parser->ast()->findExpansionSubNode($1)); + TRI_ASSERT(current->type == NODE_TYPE_EXPANSION); + auto expand = parser->ast()->createNodeExpansion($3, iterator, parser->ast()->createNodeReference(variable->name.c_str()), $5, $6, $7); + current->changeMember(1, expand); + $$ = $1; +*/ + } + else { + (yyval.node) = parser->ast()->createNodeExpansion((yyvsp[-5].intval), iterator, parser->ast()->createNodeReference(variable->name.c_str()), (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node)); + } } -#line 3196 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3310 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 137: -#line 1121 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 145: +#line 1193 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3204 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3318 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 138: -#line 1124 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 146: +#line 1196 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3212 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3326 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 139: -#line 1130 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 147: +#line 1202 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3220,11 +3334,11 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3224 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3338 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 140: -#line 1137 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 148: +#line 1209 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].node) == nullptr) { ABORT_OOM @@ -3232,51 +3346,51 @@ yyreduce: (yyval.node) = (yyvsp[0].node); } -#line 3236 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3350 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 141: -#line 1147 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 149: +#line 1219 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueString((yyvsp[0].strval)); } -#line 3244 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3358 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 142: -#line 1150 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 150: +#line 1222 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = (yyvsp[0].node); } -#line 3252 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3366 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 143: -#line 1153 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 151: +#line 1225 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueNull(); } -#line 3260 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3374 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 144: -#line 1156 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 152: +#line 1228 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(true); } -#line 3268 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3382 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 145: -#line 1159 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 153: +#line 1231 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeValueBool(false); } -#line 3276 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3390 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1165 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 154: +#line 1237 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3284,11 +3398,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval), TRI_TRANSACTION_WRITE); } -#line 3288 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3402 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1172 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 155: +#line 1244 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3296,11 +3410,11 @@ yyreduce: (yyval.node) = parser->ast()->createNodeCollection((yyvsp[0].strval), TRI_TRANSACTION_WRITE); } -#line 3300 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3414 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1179 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 156: +#line 1251 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3312,19 +3426,19 @@ yyreduce: (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval)); } -#line 3316 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3430 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1193 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 157: +#line 1265 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.node) = parser->ast()->createNodeParameter((yyvsp[0].strval)); } -#line 3324 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3438 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 150: -#line 1199 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 158: +#line 1271 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3332,11 +3446,11 @@ yyreduce: (yyval.strval) = (yyvsp[0].strval); } -#line 3336 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3450 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 151: -#line 1206 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 159: +#line 1278 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { if ((yyvsp[0].strval) == nullptr) { ABORT_OOM @@ -3344,19 +3458,19 @@ yyreduce: (yyval.strval) = (yyvsp[0].strval); } -#line 3348 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3462 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; - case 152: -#line 1215 "arangod/Aql/grammar.y" /* yacc.c:1646 */ + case 160: +#line 1287 "arangod/Aql/grammar.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[0].strval); } -#line 3356 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3470 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ break; -#line 3360 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ +#line 3474 "arangod/Aql/grammar.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/arangod/Aql/grammar.h b/arangod/Aql/grammar.h index 3b14922c7e..6b97eace08 100644 --- a/arangod/Aql/grammar.h +++ b/arangod/Aql/grammar.h @@ -100,10 +100,10 @@ extern int Aqldebug; T_NIN = 309, UMINUS = 310, UPLUS = 311, - EXPANSION = 312, - FUNCCALL = 313, - REFERENCE = 314, - INDEXED = 315 + FUNCCALL = 312, + REFERENCE = 313, + INDEXED = 314, + EXPANSION = 315 }; #endif