diff --git a/src/lexer.c b/src/lexer.c index d95bb221..60c11335 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -1,6 +1,6 @@ -#line 2 "src/lexer.c" +#line 1 "src/lexer.c" -#line 4 "src/lexer.c" +#line 3 "src/lexer.c" #define YY_INT_ALIGNED short int @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 53 -#define YY_END_OF_BUFFER 54 +#define YY_NUM_RULES 52 +#define YY_END_OF_BUFFER 53 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,26 +582,26 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[171] = +static const flex_int16_t yy_accept[168] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 52, 51, 51, 52, 42, - 1, 37, 37, 38, 39, 37, 37, 37, 37, 37, - 37, 41, 37, 37, 37, 37, 52, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 37, 46, 46, 44, 47, 2, 3, 2, 2, 51, - 4, 50, 50, 31, 29, 27, 28, 35, 41, 49, - 20, 30, 41, 41, 0, 33, 5, 34, 0, 40, - 48, 0, 48, 6, 48, 48, 48, 48, 48, 48, - 11, 48, 48, 48, 48, 16, 48, 48, 48, 26, + 0, 0, 0, 0, 53, 51, 50, 50, 51, 41, + 1, 36, 36, 37, 38, 36, 36, 36, 36, 36, + 36, 40, 36, 36, 36, 51, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 36, + 45, 45, 43, 46, 2, 3, 2, 2, 50, 4, + 49, 49, 31, 29, 27, 28, 35, 40, 48, 20, + 30, 40, 40, 0, 33, 5, 34, 39, 47, 0, + 47, 6, 47, 47, 47, 47, 47, 47, 11, 47, + 47, 47, 47, 16, 47, 47, 47, 26, 45, 44, - 46, 45, 43, 45, 3, 2, 0, 50, 0, 50, - 49, 32, 41, 0, 41, 36, 0, 15, 48, 48, - 10, 48, 48, 17, 48, 48, 48, 48, 48, 48, - 48, 21, 0, 45, 0, 50, 48, 48, 48, 14, - 13, 48, 48, 48, 48, 48, 48, 12, 45, 50, - 24, 22, 48, 48, 48, 23, 48, 48, 45, 50, - 48, 7, 48, 9, 18, 50, 19, 8, 25, 0 + 42, 44, 3, 2, 0, 49, 0, 49, 48, 32, + 40, 0, 40, 0, 15, 47, 47, 10, 47, 47, + 17, 47, 47, 47, 47, 47, 47, 47, 21, 0, + 44, 0, 49, 47, 47, 47, 14, 13, 47, 47, + 47, 47, 47, 47, 12, 44, 49, 24, 22, 47, + 47, 47, 23, 47, 47, 44, 49, 47, 7, 47, + 9, 18, 49, 19, 8, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -646,147 +646,147 @@ static const YY_CHAR yy_meta[54] = 1, 1, 1 } ; -static const flex_int16_t yy_base[186] = +static const flex_int16_t yy_base[183] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 52, 56, 58, 340, 341, 61, 64, 317, 341, - 341, 307, 315, 341, 341, 314, 313, 341, 312, 53, - 53, 56, 311, 310, 309, 313, 0, 310, 54, 57, - 58, 59, 63, 65, 70, 67, 72, 69, 60, 79, - 306, 0, 0, 341, 83, 341, 341, 324, 107, 116, - 341, 307, 83, 341, 341, 341, 341, 341, 103, 0, - 303, 341, 104, 108, 128, 341, 341, 341, 307, 0, - 304, 301, 110, 297, 114, 75, 115, 108, 118, 119, - 293, 109, 123, 129, 132, 290, 137, 130, 139, 341, + 51, 52, 56, 58, 338, 339, 61, 64, 315, 339, + 339, 305, 313, 339, 339, 312, 311, 339, 310, 53, + 53, 56, 309, 308, 307, 0, 309, 54, 57, 58, + 59, 63, 65, 70, 67, 72, 69, 60, 79, 305, + 0, 0, 339, 83, 339, 339, 323, 107, 116, 339, + 306, 83, 339, 339, 339, 339, 339, 103, 0, 302, + 339, 104, 108, 128, 339, 339, 339, 0, 304, 301, + 110, 297, 114, 75, 115, 108, 118, 119, 293, 109, + 123, 129, 132, 290, 137, 130, 139, 339, 0, 276, - 0, 276, 341, 273, 341, 341, 297, 278, 265, 140, - 0, 341, 142, 261, 258, 341, 0, 252, 142, 145, - 250, 149, 144, 247, 151, 152, 154, 156, 157, 158, - 165, 245, 172, 231, 0, 166, 222, 164, 171, 221, - 220, 169, 172, 174, 175, 178, 179, 218, 206, 180, - 215, 214, 181, 183, 192, 213, 184, 186, 201, 193, - 198, 210, 206, 209, 89, 207, 86, 81, 37, 341, - 242, 250, 253, 259, 264, 269, 277, 285, 290, 295, - 300, 302, 307, 311, 315 + 339, 273, 339, 339, 297, 278, 265, 140, 0, 339, + 142, 261, 258, 0, 252, 142, 145, 250, 149, 144, + 247, 151, 152, 154, 156, 157, 158, 165, 245, 172, + 231, 0, 166, 222, 164, 171, 221, 220, 169, 172, + 174, 175, 178, 179, 218, 206, 180, 215, 214, 181, + 183, 192, 213, 184, 186, 201, 193, 198, 210, 206, + 209, 89, 207, 86, 81, 37, 339, 242, 250, 253, + 259, 264, 269, 277, 285, 290, 295, 300, 302, 307, + 311, 315 } ; -static const flex_int16_t yy_def[186] = +static const flex_int16_t yy_def[183] = { 0, - 170, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 171, 171, 172, 172, 170, 170, 170, 170, 170, 170, - 170, 173, 170, 170, 170, 170, 170, 170, 170, 174, - 170, 170, 170, 170, 170, 170, 175, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 170, 177, 177, 170, 178, 170, 170, 170, 170, 170, - 170, 179, 179, 170, 170, 170, 170, 170, 170, 180, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 175, - 176, 170, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 170, + 167, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 168, 168, 169, 169, 167, 167, 167, 167, 167, 167, + 167, 170, 167, 167, 167, 167, 167, 167, 167, 171, + 167, 167, 167, 167, 167, 172, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 167, + 174, 174, 167, 175, 167, 167, 167, 167, 167, 167, + 176, 176, 167, 167, 167, 167, 167, 167, 177, 167, + 167, 167, 167, 167, 167, 167, 167, 172, 173, 167, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 167, 174, 167, - 177, 170, 170, 181, 170, 170, 170, 179, 170, 179, - 180, 170, 170, 170, 170, 170, 182, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 178, 183, 173, 179, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 184, 179, - 176, 176, 176, 176, 176, 176, 176, 176, 185, 179, - 176, 176, 176, 176, 176, 179, 176, 176, 179, 0, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170 + 167, 178, 167, 167, 167, 176, 167, 176, 177, 167, + 167, 167, 167, 179, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 175, + 180, 170, 176, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 181, 176, 173, 173, 173, + 173, 173, 173, 173, 173, 182, 176, 173, 173, 173, + 173, 173, 176, 173, 173, 176, 0, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167 } ; -static const flex_int16_t yy_nxt[395] = +static const flex_int16_t yy_nxt[393] = { 0, 16, 17, 18, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 28, 28, - 33, 34, 35, 36, 37, 38, 38, 24, 16, 25, - 38, 39, 40, 41, 42, 43, 44, 38, 45, 38, - 46, 47, 38, 48, 38, 49, 38, 50, 38, 38, - 24, 51, 25, 53, 53, 109, 54, 54, 57, 58, - 57, 58, 60, 60, 60, 60, 60, 60, 68, 71, - 69, 73, 82, 74, 72, 82, 82, 82, 82, 55, - 55, 82, 75, 82, 59, 82, 59, 82, 82, 86, - 82, 75, 103, 82, 87, 97, 83, 82, 94, 82, + 33, 34, 35, 28, 36, 37, 37, 24, 16, 25, + 37, 38, 39, 40, 41, 42, 43, 37, 44, 37, + 45, 46, 37, 47, 37, 48, 37, 49, 37, 37, + 24, 50, 25, 52, 52, 107, 53, 53, 56, 57, + 56, 57, 59, 59, 59, 59, 59, 59, 67, 70, + 68, 72, 80, 73, 71, 80, 80, 80, 80, 54, + 54, 80, 74, 80, 58, 80, 58, 80, 80, 84, + 80, 74, 101, 80, 85, 95, 81, 80, 92, 80, - 84, 109, 85, 88, 82, 89, 91, 82, 90, 106, - 107, 92, 93, 110, 96, 95, 98, 60, 60, 60, - 69, 113, 120, 73, 99, 74, 82, 82, 82, 75, - 75, 104, 82, 82, 75, 106, 82, 82, 75, 75, - 114, 82, 114, 75, 118, 115, 122, 82, 82, 119, - 82, 121, 124, 126, 123, 82, 127, 82, 109, 113, - 82, 128, 82, 82, 125, 131, 129, 82, 75, 82, - 82, 130, 82, 138, 82, 82, 82, 75, 139, 141, - 136, 170, 82, 82, 109, 140, 142, 82, 132, 82, - 82, 145, 82, 82, 144, 143, 82, 82, 109, 82, + 82, 107, 83, 86, 80, 87, 89, 80, 88, 104, + 105, 90, 91, 108, 94, 93, 96, 59, 59, 59, + 68, 111, 117, 72, 97, 73, 80, 80, 80, 74, + 74, 102, 80, 80, 74, 104, 80, 80, 74, 74, + 112, 80, 112, 74, 115, 113, 119, 80, 80, 116, + 80, 118, 121, 123, 120, 80, 124, 80, 107, 111, + 80, 125, 80, 80, 122, 128, 126, 80, 74, 80, + 80, 127, 80, 135, 80, 80, 80, 74, 136, 138, + 133, 167, 80, 80, 107, 137, 139, 80, 129, 80, + 80, 142, 80, 80, 141, 140, 80, 80, 107, 80, - 153, 82, 82, 151, 82, 146, 147, 148, 152, 150, - 82, 109, 158, 160, 161, 156, 82, 154, 157, 164, - 104, 165, 155, 166, 82, 109, 163, 82, 82, 133, - 162, 82, 82, 82, 133, 167, 82, 169, 82, 82, - 82, 168, 52, 52, 52, 52, 52, 52, 52, 52, - 56, 56, 56, 56, 56, 56, 56, 56, 62, 133, - 62, 70, 70, 82, 70, 82, 70, 80, 82, 80, - 82, 80, 81, 81, 81, 115, 81, 101, 115, 101, - 101, 101, 101, 135, 101, 102, 102, 102, 102, 102, - 102, 102, 102, 108, 108, 108, 109, 108, 111, 106, + 150, 80, 80, 148, 80, 143, 144, 145, 149, 147, + 80, 107, 155, 157, 158, 153, 80, 151, 154, 161, + 102, 162, 152, 163, 80, 107, 160, 80, 80, 130, + 159, 80, 80, 80, 130, 164, 80, 166, 80, 80, + 80, 165, 51, 51, 51, 51, 51, 51, 51, 51, + 55, 55, 55, 55, 55, 55, 55, 55, 61, 130, + 61, 69, 69, 80, 69, 80, 69, 78, 80, 78, + 80, 78, 79, 79, 79, 113, 79, 99, 113, 99, + 99, 99, 99, 132, 99, 100, 100, 100, 100, 100, + 100, 100, 100, 106, 106, 106, 107, 106, 109, 104, - 111, 133, 111, 134, 133, 134, 134, 137, 82, 137, - 149, 82, 149, 149, 159, 82, 159, 159, 102, 117, - 102, 102, 82, 116, 112, 109, 105, 100, 82, 79, - 78, 77, 76, 67, 66, 65, 64, 63, 61, 170, - 15, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170 + 109, 130, 109, 131, 130, 131, 131, 134, 80, 134, + 146, 80, 146, 146, 156, 80, 156, 156, 100, 114, + 100, 100, 80, 110, 107, 103, 98, 80, 77, 76, + 75, 66, 65, 64, 63, 62, 60, 167, 15, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167 } ; -static const flex_int16_t yy_chk[395] = +static const flex_int16_t yy_chk[393] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 11, 12, 169, 11, 12, 13, 13, + 1, 1, 1, 11, 12, 166, 11, 12, 13, 13, 14, 14, 17, 17, 17, 18, 18, 18, 30, 31, - 30, 32, 39, 32, 31, 40, 41, 42, 49, 11, - 12, 43, 32, 44, 13, 46, 14, 48, 45, 41, - 47, 32, 55, 86, 42, 49, 39, 50, 46, 168, + 30, 32, 38, 32, 31, 39, 40, 41, 48, 11, + 12, 42, 32, 43, 13, 45, 14, 47, 44, 40, + 46, 32, 54, 84, 41, 48, 38, 49, 45, 165, - 39, 63, 40, 43, 167, 43, 45, 165, 44, 59, - 59, 45, 45, 63, 48, 47, 50, 60, 60, 60, - 69, 73, 86, 74, 50, 74, 88, 92, 83, 69, - 73, 55, 85, 87, 74, 59, 89, 90, 69, 73, - 75, 93, 75, 74, 83, 75, 88, 94, 98, 85, - 95, 87, 89, 92, 88, 97, 93, 99, 110, 113, - 119, 94, 123, 120, 90, 98, 95, 122, 113, 125, - 126, 97, 127, 119, 128, 129, 130, 113, 120, 123, - 110, 133, 138, 131, 136, 122, 125, 142, 99, 139, - 143, 128, 144, 145, 127, 126, 146, 147, 150, 153, + 38, 62, 39, 42, 164, 42, 44, 162, 43, 58, + 58, 44, 44, 62, 47, 46, 49, 59, 59, 59, + 68, 72, 84, 73, 49, 73, 86, 90, 81, 68, + 72, 54, 83, 85, 73, 58, 87, 88, 68, 72, + 74, 91, 74, 73, 81, 74, 86, 92, 96, 83, + 93, 85, 87, 90, 86, 95, 91, 97, 108, 111, + 116, 92, 120, 117, 88, 96, 93, 119, 111, 122, + 123, 95, 124, 116, 125, 126, 127, 111, 117, 120, + 108, 130, 135, 128, 133, 119, 122, 139, 97, 136, + 140, 125, 141, 142, 124, 123, 143, 144, 147, 150, - 142, 154, 157, 138, 158, 129, 130, 131, 139, 136, - 155, 160, 147, 150, 153, 145, 161, 143, 146, 157, - 133, 158, 144, 160, 163, 166, 155, 164, 162, 159, - 154, 156, 152, 151, 149, 161, 148, 166, 141, 140, - 137, 163, 171, 171, 171, 171, 171, 171, 171, 171, - 172, 172, 172, 172, 172, 172, 172, 172, 173, 134, - 173, 174, 174, 132, 174, 124, 174, 175, 121, 175, - 118, 175, 176, 176, 176, 115, 176, 177, 114, 177, - 177, 177, 177, 109, 177, 178, 178, 178, 178, 178, - 178, 178, 178, 179, 179, 179, 108, 179, 180, 107, + 139, 151, 154, 135, 155, 126, 127, 128, 136, 133, + 152, 157, 144, 147, 150, 142, 158, 140, 143, 154, + 130, 155, 141, 157, 160, 163, 152, 161, 159, 156, + 151, 153, 149, 148, 146, 158, 145, 163, 138, 137, + 134, 160, 168, 168, 168, 168, 168, 168, 168, 168, + 169, 169, 169, 169, 169, 169, 169, 169, 170, 131, + 170, 171, 171, 129, 171, 121, 171, 172, 118, 172, + 115, 172, 173, 173, 173, 113, 173, 174, 112, 174, + 174, 174, 174, 107, 174, 175, 175, 175, 175, 175, + 175, 175, 175, 176, 176, 176, 106, 176, 177, 105, - 180, 104, 180, 181, 102, 181, 181, 182, 96, 182, - 183, 91, 183, 183, 184, 84, 184, 184, 185, 82, - 185, 185, 81, 79, 71, 62, 58, 51, 38, 36, - 35, 34, 33, 29, 27, 26, 23, 22, 19, 15, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170 + 177, 102, 177, 178, 100, 178, 178, 179, 94, 179, + 180, 89, 180, 180, 181, 82, 181, 181, 182, 80, + 182, 182, 79, 70, 61, 57, 50, 37, 35, 34, + 33, 29, 27, 26, 23, 22, 19, 15, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167 } ; @@ -814,14 +814,14 @@ struct lexer_param; yyset_extra(yylloc->end, yyscanner); \ } while (0); -#line 818 "src/lexer.c" +#line 817 "src/lexer.c" #line 26 "src/lexer.l" static int enter(int opening, int state, yyscan_t yyscanner); static int try_exit(int closing, int state, yyscan_t yyscanner); -#line 823 "src/lexer.c" +#line 822 "src/lexer.c" #define YY_NO_INPUT 1 -#line 825 "src/lexer.c" +#line 824 "src/lexer.c" #define INITIAL 0 #define IN_PAREN 1 @@ -1116,7 +1116,7 @@ YY_DECL #line 39 "src/lexer.l" -#line 1120 "src/lexer.c" +#line 1119 "src/lexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1143,13 +1143,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 171 ) + if ( yy_current_state >= 168 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 341 ); + while ( yy_base[yy_current_state] != 339 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1359,69 +1359,64 @@ YY_RULE_SETUP case 36: YY_RULE_SETUP #line 80 "src/lexer.l" -{ return ALTERNATION; } +{ return yytext[0];} YY_BREAK case 37: YY_RULE_SETUP -#line 81 "src/lexer.l" -{ return yytext[0];} - YY_BREAK -case 38: -YY_RULE_SETUP -#line 83 "src/lexer.l" +#line 82 "src/lexer.l" { return enter(yytext[0], YY_START, yyscanner); } YY_BREAK -case 39: +case 38: YY_RULE_SETUP -#line 87 "src/lexer.l" +#line 86 "src/lexer.l" { return try_exit(yytext[0], YY_START, yyscanner); } YY_BREAK -case 40: +case 39: YY_RULE_SETUP -#line 91 "src/lexer.l" +#line 90 "src/lexer.l" { yylval->literal = jv_string_sized(yytext + 1, yyleng - 1); return FORMAT; } YY_BREAK -case 41: +case 40: YY_RULE_SETUP -#line 95 "src/lexer.l" +#line 94 "src/lexer.l" { yylval->literal = jv_parse_sized(yytext, yyleng); return LITERAL; } YY_BREAK -case 42: +case 41: YY_RULE_SETUP -#line 99 "src/lexer.l" +#line 98 "src/lexer.l" { yy_push_state(IN_QQSTRING, yyscanner); return QQSTRING_START; } YY_BREAK -case 43: +case 42: YY_RULE_SETUP -#line 105 "src/lexer.l" +#line 104 "src/lexer.l" { return enter(QQSTRING_INTERP_START, YY_START, yyscanner); } YY_BREAK -case 44: +case 43: YY_RULE_SETUP -#line 108 "src/lexer.l" +#line 107 "src/lexer.l" { yy_pop_state(yyscanner); return QQSTRING_END; } YY_BREAK -case 45: -/* rule 45 can match eol */ +case 44: +/* rule 44 can match eol */ YY_RULE_SETUP -#line 112 "src/lexer.l" +#line 111 "src/lexer.l" { /* pass escapes to the json parser */ jv escapes = jv_string_fmt("\"%.*s\"", (int)yyleng, yytext); @@ -1430,55 +1425,55 @@ YY_RULE_SETUP return QQSTRING_TEXT; } YY_BREAK -case 46: -/* rule 46 can match eol */ +case 45: +/* rule 45 can match eol */ YY_RULE_SETUP -#line 119 "src/lexer.l" +#line 118 "src/lexer.l" { yylval->literal = jv_string_sized(yytext, yyleng); return QQSTRING_TEXT; } YY_BREAK -case 47: +case 46: YY_RULE_SETUP -#line 123 "src/lexer.l" +#line 122 "src/lexer.l" { return INVALID_CHARACTER; } YY_BREAK +case 47: +YY_RULE_SETUP +#line 128 "src/lexer.l" +{ yylval->literal = jv_string(yytext); return IDENT;} + YY_BREAK case 48: YY_RULE_SETUP #line 129 "src/lexer.l" -{ yylval->literal = jv_string(yytext); return IDENT;} +{ yylval->literal = jv_string(yytext+1); return FIELD;} YY_BREAK case 49: YY_RULE_SETUP #line 130 "src/lexer.l" -{ yylval->literal = jv_string(yytext+1); return FIELD;} - YY_BREAK -case 50: -YY_RULE_SETUP -#line 131 "src/lexer.l" { yylval->literal = jv_string(yytext+1); return BINDING;} YY_BREAK -case 51: -/* rule 51 can match eol */ +case 50: +/* rule 50 can match eol */ YY_RULE_SETUP -#line 133 "src/lexer.l" +#line 132 "src/lexer.l" {} YY_BREAK +case 51: +YY_RULE_SETUP +#line 134 "src/lexer.l" +{ return INVALID_CHARACTER; } + YY_BREAK case 52: YY_RULE_SETUP -#line 135 "src/lexer.l" -{ return INVALID_CHARACTER; } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 137 "src/lexer.l" +#line 136 "src/lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1482 "src/lexer.c" +#line 1476 "src/lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(IN_PAREN): case YY_STATE_EOF(IN_BRACKET): @@ -1782,7 +1777,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 171 ) + if ( yy_current_state >= 168 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1811,11 +1806,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 171 ) + if ( yy_current_state >= 168 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 170); + yy_is_jam = (yy_current_state == 167); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2650,7 +2645,7 @@ static int yy_flex_strlen (const char * s , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 137 "src/lexer.l" +#line 136 "src/lexer.l" /* perhaps these should be calls... */ /* diff --git a/src/lexer.h b/src/lexer.h index 3792a310..97866e7c 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -2,9 +2,9 @@ #define jq_yyHEADER_H 1 #define jq_yyIN_HEADER 1 -#line 6 "src/lexer.h" +#line 5 "src/lexer.h" -#line 8 "src/lexer.h" +#line 7 "src/lexer.h" #define YY_INT_ALIGNED short int @@ -732,9 +732,9 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 137 "src/lexer.l" +#line 136 "src/lexer.l" -#line 739 "src/lexer.h" +#line 738 "src/lexer.h" #undef jq_yyIN_HEADER #endif /* jq_yyHEADER_H */ diff --git a/src/lexer.l b/src/lexer.l index 5ac46619..2990e791 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -77,7 +77,6 @@ struct lexer_param; "<=" { return LESSEQ; } ">=" { return GREATEREQ; } ".." { return REC; } -"?//" { return ALTERNATION; } "."|"?"|"="|";"|","|":"|"|"|"+"|"-"|"*"|"/"|"%"|"\$"|"<"|">" { return yytext[0];} "["|"{"|"(" { diff --git a/src/parser.c b/src/parser.c index 9c60173e..9fd97d61 100644 --- a/src/parser.c +++ b/src/parser.c @@ -180,14 +180,13 @@ struct lexer_param; SETDEFINEDOR = 293, /* "//=" */ LESSEQ = 294, /* "<=" */ GREATEREQ = 295, /* ">=" */ - ALTERNATION = 296, /* "?//" */ - QQSTRING_START = 297, /* QQSTRING_START */ - QQSTRING_TEXT = 298, /* QQSTRING_TEXT */ - QQSTRING_INTERP_START = 299, /* QQSTRING_INTERP_START */ - QQSTRING_INTERP_END = 300, /* QQSTRING_INTERP_END */ - QQSTRING_END = 301, /* QQSTRING_END */ - FUNCDEF = 302, /* FUNCDEF */ - NONOPT = 303 /* NONOPT */ + QQSTRING_START = 296, /* QQSTRING_START */ + QQSTRING_TEXT = 297, /* QQSTRING_TEXT */ + QQSTRING_INTERP_START = 298, /* QQSTRING_INTERP_START */ + QQSTRING_INTERP_END = 299, /* QQSTRING_INTERP_END */ + QQSTRING_END = 300, /* QQSTRING_END */ + FUNCDEF = 301, /* FUNCDEF */ + NONOPT = 302 /* NONOPT */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -234,14 +233,13 @@ struct lexer_param; #define SETDEFINEDOR 293 #define LESSEQ 294 #define GREATEREQ 295 -#define ALTERNATION 296 -#define QQSTRING_START 297 -#define QQSTRING_TEXT 298 -#define QQSTRING_INTERP_START 299 -#define QQSTRING_INTERP_END 300 -#define QQSTRING_END 301 -#define FUNCDEF 302 -#define NONOPT 303 +#define QQSTRING_START 296 +#define QQSTRING_TEXT 297 +#define QQSTRING_INTERP_START 298 +#define QQSTRING_INTERP_END 299 +#define QQSTRING_END 300 +#define FUNCDEF 301 +#define NONOPT 302 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -252,7 +250,7 @@ union YYSTYPE jv literal; block blk; -#line 256 "src/parser.c" +#line 254 "src/parser.c" }; typedef union YYSTYPE YYSTYPE; @@ -326,71 +324,70 @@ enum yysymbol_kind_t YYSYMBOL_SETDEFINEDOR = 38, /* "//=" */ YYSYMBOL_LESSEQ = 39, /* "<=" */ YYSYMBOL_GREATEREQ = 40, /* ">=" */ - YYSYMBOL_ALTERNATION = 41, /* "?//" */ - YYSYMBOL_QQSTRING_START = 42, /* QQSTRING_START */ - YYSYMBOL_QQSTRING_TEXT = 43, /* QQSTRING_TEXT */ - YYSYMBOL_QQSTRING_INTERP_START = 44, /* QQSTRING_INTERP_START */ - YYSYMBOL_QQSTRING_INTERP_END = 45, /* QQSTRING_INTERP_END */ - YYSYMBOL_QQSTRING_END = 46, /* QQSTRING_END */ - YYSYMBOL_FUNCDEF = 47, /* FUNCDEF */ - YYSYMBOL_48_ = 48, /* '|' */ - YYSYMBOL_49_ = 49, /* ',' */ - YYSYMBOL_50_ = 50, /* '=' */ - YYSYMBOL_51_ = 51, /* '<' */ - YYSYMBOL_52_ = 52, /* '>' */ - YYSYMBOL_53_ = 53, /* '+' */ - YYSYMBOL_54_ = 54, /* '-' */ - YYSYMBOL_55_ = 55, /* '*' */ - YYSYMBOL_56_ = 56, /* '/' */ - YYSYMBOL_57_ = 57, /* '%' */ - YYSYMBOL_NONOPT = 58, /* NONOPT */ - YYSYMBOL_59_ = 59, /* '?' */ - YYSYMBOL_60_ = 60, /* '.' */ - YYSYMBOL_61_ = 61, /* '[' */ - YYSYMBOL_62_ = 62, /* ';' */ - YYSYMBOL_63_ = 63, /* ':' */ - YYSYMBOL_64_ = 64, /* '(' */ - YYSYMBOL_65_ = 65, /* ')' */ - YYSYMBOL_66_ = 66, /* ']' */ - YYSYMBOL_67_ = 67, /* '{' */ - YYSYMBOL_68_ = 68, /* '}' */ - YYSYMBOL_69_ = 69, /* '$' */ - YYSYMBOL_YYACCEPT = 70, /* $accept */ - YYSYMBOL_TopLevel = 71, /* TopLevel */ - YYSYMBOL_Module = 72, /* Module */ - YYSYMBOL_Imports = 73, /* Imports */ - YYSYMBOL_FuncDefs = 74, /* FuncDefs */ - YYSYMBOL_Query = 75, /* Query */ - YYSYMBOL_Expr = 76, /* Expr */ - YYSYMBOL_Import = 77, /* Import */ - YYSYMBOL_ImportWhat = 78, /* ImportWhat */ - YYSYMBOL_ImportFrom = 79, /* ImportFrom */ - YYSYMBOL_FuncDef = 80, /* FuncDef */ - YYSYMBOL_Params = 81, /* Params */ - YYSYMBOL_Param = 82, /* Param */ - YYSYMBOL_StringStart = 83, /* StringStart */ - YYSYMBOL_String = 84, /* String */ - YYSYMBOL_QQString = 85, /* QQString */ - YYSYMBOL_ElseBody = 86, /* ElseBody */ - YYSYMBOL_Term = 87, /* Term */ - YYSYMBOL_Args = 88, /* Args */ - YYSYMBOL_Arg = 89, /* Arg */ - YYSYMBOL_RepPatterns = 90, /* RepPatterns */ - YYSYMBOL_Patterns = 91, /* Patterns */ - YYSYMBOL_Pattern = 92, /* Pattern */ - YYSYMBOL_ArrayPats = 93, /* ArrayPats */ - YYSYMBOL_ObjPats = 94, /* ObjPats */ - YYSYMBOL_ObjPat = 95, /* ObjPat */ - YYSYMBOL_Keyword = 96, /* Keyword */ - YYSYMBOL_DictPairs = 97, /* DictPairs */ - YYSYMBOL_DictPair = 98, /* DictPair */ - YYSYMBOL_DictExpr = 99 /* DictExpr */ + YYSYMBOL_QQSTRING_START = 41, /* QQSTRING_START */ + YYSYMBOL_QQSTRING_TEXT = 42, /* QQSTRING_TEXT */ + YYSYMBOL_QQSTRING_INTERP_START = 43, /* QQSTRING_INTERP_START */ + YYSYMBOL_QQSTRING_INTERP_END = 44, /* QQSTRING_INTERP_END */ + YYSYMBOL_QQSTRING_END = 45, /* QQSTRING_END */ + YYSYMBOL_FUNCDEF = 46, /* FUNCDEF */ + YYSYMBOL_47_ = 47, /* '|' */ + YYSYMBOL_48_ = 48, /* ',' */ + YYSYMBOL_49_ = 49, /* '=' */ + YYSYMBOL_50_ = 50, /* '<' */ + YYSYMBOL_51_ = 51, /* '>' */ + YYSYMBOL_52_ = 52, /* '+' */ + YYSYMBOL_53_ = 53, /* '-' */ + YYSYMBOL_54_ = 54, /* '*' */ + YYSYMBOL_55_ = 55, /* '/' */ + YYSYMBOL_56_ = 56, /* '%' */ + YYSYMBOL_NONOPT = 57, /* NONOPT */ + YYSYMBOL_58_ = 58, /* '?' */ + YYSYMBOL_59_ = 59, /* '.' */ + YYSYMBOL_60_ = 60, /* '[' */ + YYSYMBOL_61_ = 61, /* ';' */ + YYSYMBOL_62_ = 62, /* ':' */ + YYSYMBOL_63_ = 63, /* '(' */ + YYSYMBOL_64_ = 64, /* ')' */ + YYSYMBOL_65_ = 65, /* ']' */ + YYSYMBOL_66_ = 66, /* '{' */ + YYSYMBOL_67_ = 67, /* '}' */ + YYSYMBOL_68_ = 68, /* '$' */ + YYSYMBOL_YYACCEPT = 69, /* $accept */ + YYSYMBOL_TopLevel = 70, /* TopLevel */ + YYSYMBOL_Module = 71, /* Module */ + YYSYMBOL_Imports = 72, /* Imports */ + YYSYMBOL_FuncDefs = 73, /* FuncDefs */ + YYSYMBOL_Query = 74, /* Query */ + YYSYMBOL_Expr = 75, /* Expr */ + YYSYMBOL_Import = 76, /* Import */ + YYSYMBOL_ImportWhat = 77, /* ImportWhat */ + YYSYMBOL_ImportFrom = 78, /* ImportFrom */ + YYSYMBOL_FuncDef = 79, /* FuncDef */ + YYSYMBOL_Params = 80, /* Params */ + YYSYMBOL_Param = 81, /* Param */ + YYSYMBOL_StringStart = 82, /* StringStart */ + YYSYMBOL_String = 83, /* String */ + YYSYMBOL_QQString = 84, /* QQString */ + YYSYMBOL_ElseBody = 85, /* ElseBody */ + YYSYMBOL_Term = 86, /* Term */ + YYSYMBOL_Args = 87, /* Args */ + YYSYMBOL_Arg = 88, /* Arg */ + YYSYMBOL_RepPatterns = 89, /* RepPatterns */ + YYSYMBOL_Patterns = 90, /* Patterns */ + YYSYMBOL_Pattern = 91, /* Pattern */ + YYSYMBOL_ArrayPats = 92, /* ArrayPats */ + YYSYMBOL_ObjPats = 93, /* ObjPats */ + YYSYMBOL_ObjPat = 94, /* ObjPat */ + YYSYMBOL_Keyword = 95, /* Keyword */ + YYSYMBOL_DictPairs = 96, /* DictPairs */ + YYSYMBOL_DictPair = 97, /* DictPair */ + YYSYMBOL_DictExpr = 98 /* DictExpr */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ -#line 127 "src/parser.y" +#line 126 "src/parser.y" #include "lexer.h" struct lexer_param { @@ -543,7 +540,7 @@ static block gen_loc_object(location *loc, struct locfile *locations) { } -#line 547 "src/parser.c" +#line 544 "src/parser.c" #ifdef short @@ -870,19 +867,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 31 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1226 +#define YYLAST 1165 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 70 +#define YYNTOKENS 69 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ #define YYNRULES 168 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 312 +#define YYNSTATES 313 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 303 +#define YYMAXUTOK 302 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -899,16 +896,16 @@ static const yytype_int8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 69, 57, 2, 2, - 64, 65, 55, 53, 49, 54, 60, 56, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 63, 62, - 51, 50, 52, 59, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 68, 56, 2, 2, + 63, 64, 54, 52, 48, 53, 59, 55, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 62, 61, + 50, 49, 51, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 61, 2, 66, 2, 2, 2, 2, 2, 2, + 2, 60, 2, 65, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 67, 48, 68, 2, 2, 2, 2, + 2, 2, 2, 66, 47, 67, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -926,30 +923,30 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 58 + 45, 46, 57 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 282, 282, 285, 290, 293, 308, 311, 316, 319, - 325, 328, 331, 337, 340, 343, 349, 352, 355, 358, - 361, 364, 367, 370, 373, 376, 379, 382, 385, 388, - 391, 394, 397, 400, 403, 406, 409, 412, 415, 421, - 424, 441, 445, 449, 455, 466, 471, 477, 480, 485, - 489, 496, 499, 505, 512, 515, 518, 524, 527, 530, - 536, 539, 542, 550, 554, 557, 560, 563, 566, 569, - 572, 575, 578, 582, 588, 591, 594, 597, 600, 603, - 606, 609, 612, 615, 618, 621, 624, 627, 630, 633, - 636, 639, 642, 645, 648, 651, 654, 661, 664, 667, - 670, 673, 677, 680, 684, 702, 706, 710, 713, 725, - 730, 731, 732, 733, 736, 739, 744, 749, 752, 757, - 760, 765, 769, 772, 777, 780, 785, 788, 793, 796, - 799, 802, 805, 808, 816, 822, 825, 828, 831, 834, - 837, 840, 843, 846, 849, 852, 855, 858, 861, 864, - 867, 870, 873, 879, 882, 885, 890, 893, 896, 899, - 903, 908, 912, 916, 920, 924, 932, 938, 941 + 0, 281, 281, 284, 289, 292, 307, 310, 315, 318, + 324, 327, 330, 336, 339, 342, 348, 351, 354, 357, + 360, 363, 366, 369, 372, 375, 378, 381, 384, 387, + 390, 393, 396, 399, 402, 405, 408, 411, 414, 420, + 423, 440, 444, 448, 454, 465, 470, 476, 479, 484, + 488, 495, 498, 504, 511, 514, 517, 523, 526, 529, + 535, 538, 541, 549, 553, 556, 559, 562, 565, 568, + 571, 574, 577, 581, 587, 590, 593, 596, 599, 602, + 605, 608, 611, 614, 617, 620, 623, 626, 629, 632, + 635, 638, 641, 644, 647, 650, 653, 660, 663, 666, + 669, 672, 676, 679, 683, 701, 705, 709, 712, 724, + 729, 730, 731, 732, 735, 738, 743, 748, 751, 756, + 759, 764, 768, 771, 776, 779, 784, 787, 792, 795, + 798, 801, 804, 807, 815, 821, 824, 827, 830, 833, + 836, 839, 842, 845, 848, 851, 854, 857, 860, 863, + 866, 869, 872, 878, 881, 884, 889, 892, 895, 898, + 902, 907, 911, 915, 919, 923, 931, 937, 940 }; #endif @@ -972,16 +969,15 @@ static const char *const yytname[] = "\"elif\"", "\"reduce\"", "\"foreach\"", "\"end\"", "\"and\"", "\"or\"", "\"try\"", "\"catch\"", "\"label\"", "\"break\"", "\"$__loc__\"", "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"//=\"", "\"<=\"", - "\">=\"", "\"?//\"", "QQSTRING_START", "QQSTRING_TEXT", - "QQSTRING_INTERP_START", "QQSTRING_INTERP_END", "QQSTRING_END", - "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", - "'%'", "NONOPT", "'?'", "'.'", "'['", "';'", "':'", "'('", "')'", "']'", - "'{'", "'}'", "'$'", "$accept", "TopLevel", "Module", "Imports", - "FuncDefs", "Query", "Expr", "Import", "ImportWhat", "ImportFrom", - "FuncDef", "Params", "Param", "StringStart", "String", "QQString", - "ElseBody", "Term", "Args", "Arg", "RepPatterns", "Patterns", "Pattern", - "ArrayPats", "ObjPats", "ObjPat", "Keyword", "DictPairs", "DictPair", - "DictExpr", YY_NULLPTR + "\">=\"", "QQSTRING_START", "QQSTRING_TEXT", "QQSTRING_INTERP_START", + "QQSTRING_INTERP_END", "QQSTRING_END", "FUNCDEF", "'|'", "','", "'='", + "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "NONOPT", "'?'", "'.'", + "'['", "';'", "':'", "'('", "')'", "']'", "'{'", "'}'", "'$'", "$accept", + "TopLevel", "Module", "Imports", "FuncDefs", "Query", "Expr", "Import", + "ImportWhat", "ImportFrom", "FuncDef", "Params", "Param", "StringStart", + "String", "QQString", "ElseBody", "Term", "Args", "Arg", "RepPatterns", + "Patterns", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword", + "DictPairs", "DictPair", "DictExpr", YY_NULLPTR }; static const char * @@ -1005,38 +1001,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 31, 890, 44, 35, 11, 9, -146, -146, 38, -146, - 85, 890, 956, 956, 956, 112, 26, -146, -146, 956, - 279, 345, 412, 608, 59, 25, 1040, 890, -146, -146, - -2, -146, 4, 4, 890, 35, 692, 890, -146, -146, - 20, -18, 1073, 1105, 131, 86, -146, -146, -2, -146, - 164, 38, 108, 107, -146, 22, 104, 0, -34, 121, - 124, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 43, 882, 63, -6, 82, 84, -146, -146, 120, -146, + 147, 882, 947, 947, 947, 188, 72, -146, -146, 947, + 280, 345, 411, 604, 137, -30, 985, 882, -146, -146, + 2, -146, 31, 31, 882, -6, 687, 882, -146, -146, + 12, 105, 1016, 1047, 177, 165, -146, -146, 2, -146, + 212, 120, 175, 158, -146, 23, 172, 132, 81, 180, + 190, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, - 890, 135, 137, 134, 126, 141, 890, 890, -146, 956, - 956, 956, 956, -5, 956, 956, 956, 956, 956, 956, - 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, - 956, 956, 84, 177, 147, -146, 3, 173, 199, -146, - -146, -146, 84, 890, -146, -146, 114, 84, 77, -146, - 890, 13, 479, -5, -5, 546, 890, -146, -146, -146, - -146, -146, -146, 956, -146, 956, 956, 78, 956, 956, - -146, 663, 220, 84, -146, 1169, 505, 505, 1137, -146, - -5, 1018, 187, 166, 188, 606, 205, 1169, 1169, 1169, - 1169, 1169, 1169, 505, 505, 1169, 505, 505, 208, 208, - -146, -146, -146, -146, 890, -146, -146, 758, 176, 175, - 890, 184, 6, 57, -146, -146, 890, -146, 123, -146, - -146, 83, -146, -146, 18, 185, 189, -146, -146, 84, - 1137, 200, 200, 200, 203, 200, 200, 206, -146, -146, - -146, -42, 207, 209, 210, 890, 212, -45, -146, 213, - -5, 890, 33, 193, 28, -146, -146, 71, -146, 824, - 218, -146, -146, -146, -146, 13, 215, 890, 890, -146, - -146, 890, 890, 956, 956, -5, -146, -5, -5, -5, - 103, -5, 1018, -146, -5, 227, 84, -146, -146, 222, - 223, 226, 74, -146, -146, 890, -7, 2, 160, 163, - 200, 200, -146, -146, -146, -146, 225, -146, -146, -146, - -146, -146, -146, 235, 170, -146, 890, 890, 890, -5, - -146, -146, 18, 105, 76, -146, -146, -146, 890, -146, - 142, -146 + 882, 194, 195, 174, 218, 204, 882, 882, -146, 947, + 947, 947, 947, -2, 947, 947, 947, 947, 947, 947, + 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, + 947, 947, 71, 228, 220, -146, 79, 169, 262, -146, + -146, -146, 71, 882, -146, -146, 21, 71, 20, -146, + 882, 181, 477, -2, -2, 543, 882, -146, -146, -146, + -146, -146, -146, 947, -146, 947, 947, 134, 947, 947, + -146, 658, 273, 71, -146, 1109, 209, 209, 1078, -146, + -2, 26, 225, 239, 229, 602, 907, 1109, 1109, 1109, + 1109, 1109, 1109, 209, 209, 1109, 209, 209, 162, 162, + -146, -146, -146, -146, 882, -146, -146, 752, 231, 230, + 882, 241, 18, 271, -146, -146, 882, -146, 110, -146, + -146, 101, -146, -146, 116, 240, 247, -146, -146, 71, + 1078, 257, 257, 257, 249, 257, 257, 250, -146, -146, + -146, -46, 260, 261, 263, 882, 264, -45, -146, 275, + 330, 882, 167, 290, 29, -146, -146, 75, -146, 817, + 297, -146, -146, -146, -146, 181, 294, 882, 882, -146, + -146, 882, 882, 947, 947, -2, -146, -2, -2, -2, + 155, -2, 26, -146, -2, -2, 71, -146, -146, 299, + 300, 301, 107, -146, -146, 882, -24, 112, 192, 197, + 257, 257, -146, -146, -146, -146, 303, -146, -146, -146, + 304, -146, -146, -146, 305, 221, -146, 882, 882, 882, + -2, -146, -146, 116, 161, 143, -146, -146, -146, 882, + -146, 179, -146 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1070,20 +1066,20 @@ static const yytype_uint8 yydefact[] = 0, 0, 0, 81, 0, 66, 112, 0, 78, 0, 75, 42, 41, 115, 45, 0, 0, 0, 0, 59, 100, 0, 0, 0, 0, 0, 122, 0, 0, 0, - 0, 0, 0, 123, 0, 119, 11, 56, 80, 77, + 0, 0, 0, 123, 0, 0, 11, 56, 80, 77, 87, 86, 0, 74, 48, 0, 0, 0, 0, 0, 167, 165, 125, 134, 130, 129, 0, 132, 127, 131, - 76, 84, 83, 85, 0, 58, 0, 0, 0, 0, - 82, 46, 0, 0, 0, 133, 57, 97, 0, 99, - 0, 98 + 119, 76, 84, 83, 85, 0, 58, 0, 0, 0, + 0, 82, 46, 0, 0, 0, 133, 57, 97, 0, + 99, 0, 98 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -146, -146, -146, 236, 179, -1, 1, -146, -146, 253, - -8, -146, 53, -146, 5, -146, 7, 284, -146, 115, - -146, 60, -100, -146, -146, 48, -145, 169, -146, -140 + -146, -146, -146, 326, 243, -1, 1, -146, -146, 334, + -8, -146, 125, -146, 5, -146, 68, 353, -146, 178, + -146, 34, -131, -146, -146, 117, -145, 227, -146, -140 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1099,316 +1095,304 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 25, 159, 132, 114, 262, 212, 213, 255, 215, 216, - 41, 51, 51, 42, 43, 44, 229, 199, 295, 200, - 55, 57, 296, 263, 256, 52, 123, 46, 81, 143, - 86, 87, 47, 122, 144, 126, 127, 119, 119, 247, - 248, 86, 87, 249, 31, 18, 18, 1, 86, 87, - 86, 87, 32, 33, 86, 87, 160, 115, 116, 117, - 220, 241, 161, 242, 187, 142, 86, 87, 38, 239, - 86, 87, 240, 86, 87, 37, 86, 87, 267, 147, - 39, 86, 87, 130, 131, 153, 154, 88, 140, 40, + 25, 296, 255, 262, 159, 212, 213, 114, 215, 216, + 41, 32, 33, 42, 43, 44, 229, 86, 87, 256, + 55, 57, 263, 86, 87, 52, 123, 222, 81, 220, + 223, 88, 224, 122, 51, 126, 127, 119, 119, 51, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 160, 1, + 115, 116, 117, 31, 161, 86, 87, 18, 86, 87, + 86, 87, 18, 46, 130, 131, 86, 87, 47, 147, + 239, 196, 195, 240, 197, 153, 154, 51, 140, 225, 155, 156, 157, 158, 269, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 280, 281, 123, 192, 229, 45, 86, - 87, 188, 86, 87, 86, 87, 86, 87, 85, 198, - 265, 204, 86, 87, 136, 209, 208, 270, 308, 196, - 293, 309, 197, 214, 210, 245, 210, 210, 246, 210, - 210, 86, 87, 86, 87, 282, 81, 283, 284, 285, - 135, 287, 86, 87, 289, 137, 226, 138, 286, 141, - 307, 86, 87, 139, 189, 151, 195, 4, 5, 6, - 7, 8, 9, 232, 145, 244, 234, 146, 10, 237, - 86, 87, 11, 205, 206, 127, 12, 13, 148, 305, - 149, 14, 150, 15, 16, 17, 186, 311, 86, 87, - 152, 86, 87, 193, 231, 18, 90, 91, 86, 87, - 183, 184, 297, 185, 260, 298, 219, 19, 230, -118, - 266, 94, 301, 20, 21, 235, 190, 22, 272, 191, - 23, 236, 24, 238, 102, 103, 276, 277, 253, 251, - 278, 279, 268, 252, 210, 210, 105, 106, 107, 108, - 109, 110, 111, 109, 110, 111, 254, 226, -117, 143, - 257, 124, 258, 259, 294, 261, 264, 273, 275, -60, - 49, 290, 291, 50, -60, 292, 120, 51, 299, -60, - -60, -60, -60, -60, 300, 302, 303, 304, 274, -60, - -60, -60, 194, 48, -60, -60, -60, 310, -60, 306, - 288, 243, -60, -60, -60, -60, -60, -60, -60, -60, - 218, 18, 0, 0, -60, 0, 0, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, 0, -60, -60, - -60, -60, -60, 0, -60, -60, 53, -60, 0, 4, - 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 0, 0, 0, 20, 21, 0, 0, 22, - 0, 54, 23, 56, 24, 0, 4, 5, 6, 7, - 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, - 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, - 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 20, 21, 0, 0, 22, 0, 0, 23, - 203, 24, 0, 4, 5, 6, 7, 8, 9, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, - 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, - 16, 17, 0, 0, 0, 0, -154, -154, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 20, - 21, 0, 0, 22, -154, -154, 23, 207, 24, 0, - 4, 5, 6, 7, 8, 9, -154, -154, 107, 108, - 109, 110, 111, 0, 0, 11, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 0, 0, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 20, 21, 0, 58, - 22, 0, 59, 23, 60, 24, 51, 90, 91, 0, - 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 0, 0, 0, 0, 102, 103, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 105, 106, 107, - 108, 109, 110, 111, 217, 0, 0, 59, 0, 60, - 0, 51, 80, 0, 0, 0, -153, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 4, 5, 6, 7, - 8, 9, 0, 0, 0, 18, 0, 10, 0, 0, - 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, - 14, 0, 15, 16, 17, 0, 0, 80, 0, 0, - 0, -153, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 20, 21, 125, 0, 22, 0, 0, 23, - 0, 24, 4, 5, 6, 7, 8, 9, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 20, 21, - 0, 0, 22, 0, 233, 23, 0, 24, 4, 5, - 6, 7, 8, 9, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, + 180, 181, 182, 280, 281, 123, 192, 229, 86, 87, + 18, 188, 86, 87, 282, 132, 283, 284, 285, 198, + 287, 204, 297, 289, 290, 209, 208, 247, 248, 187, + 270, 249, 38, 143, 210, 37, 210, 210, 144, 210, + 210, 40, 86, 87, 86, 87, 81, 86, 87, 86, + 87, 39, 245, 86, 87, 246, 226, 205, 206, 306, + 189, 244, 294, 4, 5, 6, 7, 8, 9, 86, + 87, 86, 87, 232, 10, 199, 234, 200, 11, 237, + 86, 87, 12, 13, 45, 127, 142, 14, 214, 15, + 16, 17, 86, 87, 309, 85, 135, 310, 86, 87, + 18, 267, 136, 137, 86, 87, 109, 110, 111, 286, + -154, -154, 19, 139, 260, 308, 86, 87, 20, 21, + 266, 190, 22, 138, 191, 23, 141, 24, 272, 86, + 87, 150, 145, 312, 86, 87, 276, 277, -154, -154, + 278, 279, 146, 298, 210, 210, 148, 149, 299, -154, + -154, 107, 108, 109, 110, 111, 151, 226, 86, 87, + 183, 184, 152, 185, 295, 241, 193, 242, 186, 219, + -60, 49, 302, 230, 50, -60, 231, -118, 51, 235, + -60, -60, -60, -60, -60, 236, 303, 304, 305, 238, + -60, -60, -60, 251, 253, -60, -60, -60, 311, -60, + 252, 254, 143, -60, -60, -60, -60, -60, -60, -60, + -60, 18, 257, 258, -60, 259, 261, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, 264, -60, -60, + -60, -60, -60, 265, -60, -60, 53, -60, 268, 4, + 5, 6, 7, 8, 9, 273, 275, 291, 292, 293, + 10, 124, -117, 301, 11, 300, 194, 120, 12, 13, + 274, 307, 48, 14, 243, 15, 16, 17, 218, 288, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 20, 21, 0, 0, 22, 0, - 271, 23, 0, 24, 4, 5, 6, 7, 8, 9, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, + 54, 23, 56, 24, 0, 4, 5, 6, 7, 8, + 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 20, 21, 0, 0, 22, 0, 0, 23, 0, 24, - 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 0, 0, 16, 17, 0, + 20, 21, 0, 0, 22, 0, 0, 23, 203, 24, + 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 20, 21, 0, 222, - 22, 0, 223, 23, 224, 24, 51, 0, 0, 0, - 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, + 19, 0, 0, 0, 0, 0, 20, 21, 0, 0, + 22, 0, 0, 23, 207, 24, 0, 4, 5, 6, + 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, + 0, 14, 0, 0, 16, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 20, 21, 0, 58, 22, 0, 59, 23, + 60, 24, 51, 90, 91, 0, 0, 0, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, + 0, 102, 103, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 105, 106, 107, 108, 109, 110, 111, 217, + 0, 0, 59, 0, 60, 0, 51, 80, 0, 0, + 0, -153, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 89, 90, 91, 92, 93, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 94, 95, 0, 0, - 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, - 103, 0, 225, 89, 90, 91, 92, 133, 0, 0, - 104, 105, 106, 107, 108, 109, 110, 111, 0, 94, - 95, 0, 0, 0, 0, 0, 96, 97, 98, 99, - 100, 101, 102, 103, 0, 89, 90, 91, 92, 134, - 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, - 111, 94, 95, 0, 0, 0, 0, 0, 96, 97, - 98, 99, 100, 101, 102, 103, 0, 89, 90, 91, - 92, 0, 0, 0, 0, 104, 105, 106, 107, 108, + 79, 4, 5, 6, 7, 8, 9, 0, 0, 18, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, + 0, 80, 0, 0, 0, -153, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 20, 21, 125, 0, + 22, 0, 0, 23, 0, 24, 4, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 20, 21, 0, 0, 22, 0, 233, 23, 0, + 24, 4, 5, 6, 7, 8, 9, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 20, 21, 0, 0, + 22, 0, 271, 23, 0, 24, 4, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 17, 0, 0, 0, 90, 91, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 94, 0, 19, 0, 0, 0, 0, + 0, 20, 21, 0, 0, 22, 102, 103, 23, 0, + 24, 4, 5, 6, 7, 8, 9, 105, 106, 107, + 108, 109, 110, 111, 0, 0, 11, 0, 0, 0, + 12, 13, 0, 0, 0, 14, 0, 0, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 19, 0, 0, 0, 0, 0, 20, 21, 0, 0, + 22, 94, 95, 23, 0, 24, 0, 0, 96, 97, + 98, 99, 100, 101, 102, 103, 89, 90, 91, 92, + 133, 0, 0, 0, 104, 105, 106, 107, 108, 109, + 110, 111, 94, 95, 0, 0, 0, 0, 0, 96, + 97, 98, 99, 100, 101, 102, 103, 89, 90, 91, + 92, 134, 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, 111, 94, 95, 0, 0, 0, 0, 0, - 96, 97, 98, 99, 100, 101, 102, 103, 0, -154, + 96, 97, 98, 99, 100, 101, 102, 103, 89, 90, + 91, 92, 0, 0, 0, 0, 104, 105, 106, 107, + 108, 109, 110, 111, 94, 95, 0, 0, 0, 0, + 0, 96, 97, 98, 99, 100, 101, 102, 103, -154, 90, 91, 0, 0, 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, 111, 94, 95, 0, 0, 0, 0, 0, -154, -154, -154, -154, -154, -154, 102, 103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, - 105, 106, 107, 108, 109, 110, 111 + 0, 0, 0, 0, 0, 0, 0, 0, -154, 105, + 106, 107, 108, 109, 110, 111 }; static const yytype_int16 yycheck[] = { - 1, 6, 20, 5, 49, 145, 146, 49, 148, 149, - 11, 8, 8, 12, 13, 14, 161, 4, 25, 6, - 21, 22, 20, 68, 66, 20, 34, 1, 23, 63, - 48, 49, 6, 34, 68, 36, 37, 32, 33, 21, - 22, 48, 49, 25, 0, 42, 42, 16, 48, 49, - 48, 49, 17, 18, 48, 49, 61, 59, 60, 61, - 160, 4, 67, 6, 61, 65, 48, 49, 59, 63, - 48, 49, 66, 48, 49, 64, 48, 49, 45, 80, - 42, 48, 49, 63, 64, 86, 87, 62, 66, 4, - 89, 90, 91, 92, 66, 94, 95, 96, 97, 98, + 1, 25, 48, 48, 6, 145, 146, 5, 148, 149, + 11, 17, 18, 12, 13, 14, 161, 47, 48, 65, + 21, 22, 67, 47, 48, 20, 34, 1, 23, 160, + 4, 61, 6, 34, 8, 36, 37, 32, 33, 8, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 60, 16, + 58, 59, 60, 0, 66, 47, 48, 41, 47, 48, + 47, 48, 41, 1, 62, 63, 47, 48, 6, 80, + 62, 61, 61, 65, 64, 86, 87, 8, 65, 63, + 89, 90, 91, 92, 65, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 253, 254, 123, 117, 262, 6, 48, - 49, 116, 48, 49, 48, 49, 48, 49, 69, 130, - 230, 132, 48, 49, 48, 136, 135, 66, 62, 62, - 66, 65, 65, 65, 143, 62, 145, 146, 65, 148, - 149, 48, 49, 48, 49, 255, 151, 257, 258, 259, - 29, 261, 48, 49, 264, 1, 161, 59, 65, 65, - 65, 48, 49, 66, 1, 49, 62, 4, 5, 6, - 7, 8, 9, 184, 63, 62, 187, 63, 15, 190, - 48, 49, 19, 133, 134, 196, 23, 24, 63, 299, - 63, 28, 68, 30, 31, 32, 59, 65, 48, 49, - 69, 48, 49, 14, 48, 42, 11, 12, 48, 49, - 43, 44, 62, 46, 225, 62, 6, 54, 41, 41, - 231, 26, 62, 60, 61, 59, 63, 64, 239, 66, - 67, 66, 69, 59, 39, 40, 247, 248, 48, 64, - 251, 252, 59, 64, 253, 254, 51, 52, 53, 54, - 55, 56, 57, 55, 56, 57, 63, 262, 41, 63, - 63, 35, 63, 63, 275, 63, 63, 59, 63, 0, - 1, 59, 59, 4, 5, 59, 33, 8, 63, 10, - 11, 12, 13, 14, 59, 296, 297, 298, 245, 20, - 21, 22, 123, 19, 25, 26, 27, 308, 29, 302, - 262, 196, 33, 34, 35, 36, 37, 38, 39, 40, - 151, 42, -1, -1, 45, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, -1, 65, 66, 1, 68, -1, 4, - 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, - 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, - -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, -1, -1, -1, -1, 60, 61, -1, -1, 64, - -1, 66, 67, 1, 69, -1, 4, 5, 6, 7, + 109, 110, 111, 253, 254, 123, 117, 262, 47, 48, + 41, 116, 47, 48, 255, 20, 257, 258, 259, 130, + 261, 132, 20, 264, 265, 136, 135, 21, 22, 60, + 65, 25, 58, 62, 143, 63, 145, 146, 67, 148, + 149, 4, 47, 48, 47, 48, 151, 47, 48, 47, + 48, 41, 61, 47, 48, 64, 161, 133, 134, 300, + 1, 61, 65, 4, 5, 6, 7, 8, 9, 47, + 48, 47, 48, 184, 15, 4, 187, 6, 19, 190, + 47, 48, 23, 24, 6, 196, 64, 28, 64, 30, + 31, 32, 47, 48, 61, 68, 29, 64, 47, 48, + 41, 44, 47, 1, 47, 48, 54, 55, 56, 64, + 11, 12, 53, 65, 225, 64, 47, 48, 59, 60, + 231, 62, 63, 58, 65, 66, 64, 68, 239, 47, + 48, 67, 62, 64, 47, 48, 247, 248, 39, 40, + 251, 252, 62, 61, 253, 254, 62, 62, 61, 50, + 51, 52, 53, 54, 55, 56, 48, 262, 47, 48, + 42, 43, 68, 45, 275, 4, 14, 6, 58, 6, + 0, 1, 61, 58, 4, 5, 47, 58, 8, 58, + 10, 11, 12, 13, 14, 65, 297, 298, 299, 58, + 20, 21, 22, 63, 47, 25, 26, 27, 309, 29, + 63, 62, 62, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 62, 62, 44, 62, 62, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 62, 58, 59, + 60, 61, 62, 13, 64, 65, 1, 67, 58, 4, + 5, 6, 7, 8, 9, 58, 62, 58, 58, 58, + 15, 35, 58, 58, 19, 62, 123, 33, 23, 24, + 245, 303, 19, 28, 196, 30, 31, 32, 151, 262, + -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, + -1, -1, -1, -1, 59, 60, -1, -1, 63, -1, + 65, 66, 1, 68, -1, 4, 5, 6, 7, 8, + 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, + 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, + -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, + -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, + 59, 60, -1, -1, 63, -1, -1, 66, 1, 68, + -1, 4, 5, 6, 7, 8, 9, -1, -1, -1, + -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, + 23, 24, -1, -1, -1, 28, -1, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, 59, 60, -1, -1, + 63, -1, -1, 66, 1, 68, -1, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, + -1, 28, -1, -1, 31, 32, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, + -1, -1, 59, 60, -1, 1, 63, -1, 4, 66, + 6, 68, 8, 11, 12, -1, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, + -1, 39, 40, -1, -1, 41, -1, -1, -1, -1, + -1, -1, 50, 51, 52, 53, 54, 55, 56, 1, + -1, -1, 4, -1, 6, -1, 8, 63, -1, -1, + -1, 67, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 4, 5, 6, 7, 8, 9, -1, -1, 41, + -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, + 23, 24, -1, -1, -1, 28, -1, 30, 31, 32, + -1, 63, -1, -1, -1, 67, -1, -1, 41, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, 59, 60, 61, -1, + 63, -1, -1, 66, -1, 68, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, -1, 60, 61, -1, -1, 64, -1, -1, 67, - 1, 69, -1, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, -1, 15, -1, -1, -1, 19, -1, - -1, -1, 23, 24, -1, -1, -1, 28, -1, 30, - 31, 32, -1, -1, -1, -1, 11, 12, -1, -1, - -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, -1, -1, -1, -1, 60, - 61, -1, -1, 64, 39, 40, 67, 1, 69, -1, - 4, 5, 6, 7, 8, 9, 51, 52, 53, 54, - 55, 56, 57, -1, -1, 19, -1, -1, -1, 23, - 24, -1, -1, -1, 28, -1, -1, 31, 32, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, + -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, + -1, 59, 60, -1, -1, 63, -1, 65, 66, -1, + 68, 4, 5, 6, 7, 8, 9, -1, -1, -1, + -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, + 23, 24, -1, -1, -1, 28, -1, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, -1, -1, -1, -1, 60, 61, -1, 1, - 64, -1, 4, 67, 6, 69, 8, 11, 12, -1, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, -1, 39, 40, -1, -1, -1, - 42, -1, -1, -1, -1, -1, -1, 51, 52, 53, - 54, 55, 56, 57, 1, -1, -1, 4, -1, 6, - -1, 8, 64, -1, -1, -1, 68, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 4, 5, 6, 7, - 8, 9, -1, -1, -1, 42, -1, 15, -1, -1, + 53, -1, -1, -1, -1, -1, 59, 60, -1, -1, + 63, -1, 65, 66, -1, 68, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, - 28, -1, 30, 31, 32, -1, -1, 64, -1, -1, - -1, 68, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, -1, 60, 61, 62, -1, 64, -1, -1, 67, - -1, 69, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, -1, 15, -1, -1, -1, 19, -1, -1, - -1, 23, 24, -1, -1, -1, 28, -1, 30, 31, - 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 54, -1, -1, -1, -1, -1, 60, 61, - -1, -1, 64, -1, 66, 67, -1, 69, 4, 5, - 6, 7, 8, 9, -1, -1, -1, -1, -1, 15, - -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, - -1, -1, 28, -1, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, - -1, -1, -1, -1, 60, 61, -1, -1, 64, -1, - 66, 67, -1, 69, 4, 5, 6, 7, 8, 9, - -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, - -1, -1, -1, 23, 24, -1, -1, -1, 28, -1, - 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - 60, 61, -1, -1, 64, -1, -1, 67, -1, 69, - 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 19, -1, -1, -1, 23, - 24, -1, -1, -1, 28, -1, -1, 31, 32, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, -1, -1, -1, -1, 60, 61, -1, 1, - 64, -1, 4, 67, 6, 69, 8, -1, -1, -1, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, - 42, -1, -1, -1, -1, -1, 26, 27, -1, -1, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, 64, 10, 11, 12, 13, 14, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, -1, 26, - 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, - 37, 38, 39, 40, -1, 10, 11, 12, 13, 14, - -1, -1, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 26, 27, -1, -1, -1, -1, -1, 33, 34, - 35, 36, 37, 38, 39, 40, -1, 10, 11, 12, - 13, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 26, 27, -1, -1, -1, -1, -1, - 33, 34, 35, 36, 37, 38, 39, 40, -1, 10, - 11, 12, -1, -1, -1, -1, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 26, 27, -1, -1, -1, + 28, -1, 30, 31, 32, -1, -1, -1, 11, 12, + -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 26, -1, 53, -1, -1, -1, -1, + -1, 59, 60, -1, -1, 63, 39, 40, 66, -1, + 68, 4, 5, 6, 7, 8, 9, 50, 51, 52, + 53, 54, 55, 56, -1, -1, 19, -1, -1, -1, + 23, 24, -1, -1, -1, 28, -1, -1, 31, 32, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, + 53, -1, -1, -1, -1, -1, 59, 60, -1, -1, + 63, 26, 27, 66, -1, 68, -1, -1, 33, 34, + 35, 36, 37, 38, 39, 40, 10, 11, 12, 13, + 14, -1, -1, -1, 49, 50, 51, 52, 53, 54, + 55, 56, 26, 27, -1, -1, -1, -1, -1, 33, + 34, 35, 36, 37, 38, 39, 40, 10, 11, 12, + 13, 14, -1, -1, -1, 49, 50, 51, 52, 53, + 54, 55, 56, 26, 27, -1, -1, -1, -1, -1, + 33, 34, 35, 36, 37, 38, 39, 40, 10, 11, + 12, 13, -1, -1, -1, -1, 49, 50, 51, 52, + 53, 54, 55, 56, 26, 27, -1, -1, -1, -1, + -1, 33, 34, 35, 36, 37, 38, 39, 40, 10, + 11, 12, -1, -1, -1, -1, -1, 49, 50, 51, + 52, 53, 54, 55, 56, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, - 51, 52, 53, 54, 55, 56, 57 + -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, + 51, 52, 53, 54, 55, 56 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int8 yystos[] = { - 0, 16, 71, 72, 4, 5, 6, 7, 8, 9, - 15, 19, 23, 24, 28, 30, 31, 32, 42, 54, - 60, 61, 64, 67, 69, 75, 76, 80, 83, 84, - 87, 0, 17, 18, 73, 77, 78, 64, 59, 42, - 4, 75, 76, 76, 76, 6, 1, 6, 87, 1, - 4, 8, 84, 1, 66, 75, 1, 75, 1, 4, + 0, 16, 70, 71, 4, 5, 6, 7, 8, 9, + 15, 19, 23, 24, 28, 30, 31, 32, 41, 53, + 59, 60, 63, 66, 68, 74, 75, 79, 82, 83, + 86, 0, 17, 18, 72, 76, 77, 63, 58, 41, + 4, 74, 75, 75, 75, 6, 1, 6, 86, 1, + 4, 8, 83, 1, 65, 74, 1, 74, 1, 4, 6, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 64, 84, 96, 97, 98, 69, 48, 49, 62, 10, + 63, 83, 95, 96, 97, 68, 47, 48, 61, 10, 11, 12, 13, 14, 26, 27, 33, 34, 35, 36, - 37, 38, 39, 40, 50, 51, 52, 53, 54, 55, - 56, 57, 75, 85, 5, 59, 60, 61, 79, 84, - 79, 74, 75, 80, 73, 62, 75, 75, 88, 89, - 63, 64, 20, 14, 14, 29, 48, 1, 59, 66, - 66, 65, 65, 63, 68, 63, 63, 75, 63, 63, - 68, 49, 69, 75, 75, 76, 76, 76, 76, 6, - 61, 67, 90, 91, 92, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 43, 44, 46, 59, 61, 84, 1, - 63, 66, 75, 14, 74, 62, 62, 65, 75, 4, - 6, 81, 82, 1, 75, 91, 91, 1, 76, 75, - 76, 99, 99, 99, 65, 99, 99, 1, 97, 6, - 92, 93, 1, 4, 6, 64, 84, 94, 95, 96, - 41, 48, 75, 66, 75, 59, 66, 75, 59, 63, - 66, 4, 6, 89, 62, 62, 65, 21, 22, 25, - 86, 64, 64, 48, 63, 49, 66, 63, 63, 63, - 75, 63, 49, 68, 63, 92, 75, 45, 59, 66, - 66, 66, 75, 59, 82, 63, 75, 75, 75, 75, - 99, 99, 92, 92, 92, 92, 65, 92, 95, 92, - 59, 59, 59, 66, 75, 25, 20, 62, 62, 63, - 59, 62, 75, 75, 75, 92, 86, 65, 62, 65, - 75, 65 + 37, 38, 39, 40, 49, 50, 51, 52, 53, 54, + 55, 56, 74, 84, 5, 58, 59, 60, 78, 83, + 78, 73, 74, 79, 72, 61, 74, 74, 87, 88, + 62, 63, 20, 14, 14, 29, 47, 1, 58, 65, + 65, 64, 64, 62, 67, 62, 62, 74, 62, 62, + 67, 48, 68, 74, 74, 75, 75, 75, 75, 6, + 60, 66, 89, 90, 91, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 42, 43, 45, 58, 60, 83, 1, + 62, 65, 74, 14, 73, 61, 61, 64, 74, 4, + 6, 80, 81, 1, 74, 90, 90, 1, 75, 74, + 75, 98, 98, 98, 64, 98, 98, 1, 96, 6, + 91, 92, 1, 4, 6, 63, 83, 93, 94, 95, + 58, 47, 74, 65, 74, 58, 65, 74, 58, 62, + 65, 4, 6, 88, 61, 61, 64, 21, 22, 25, + 85, 63, 63, 47, 62, 48, 65, 62, 62, 62, + 74, 62, 48, 67, 62, 13, 74, 44, 58, 65, + 65, 65, 74, 58, 81, 62, 74, 74, 74, 74, + 98, 98, 91, 91, 91, 91, 64, 91, 94, 91, + 91, 58, 58, 58, 65, 74, 25, 20, 61, 61, + 62, 58, 61, 74, 74, 74, 91, 85, 64, 61, + 64, 74, 64 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = { - 0, 70, 71, 71, 72, 72, 73, 73, 74, 74, - 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, - 77, 78, 78, 78, 79, 80, 80, 81, 81, 82, - 82, 83, 83, 84, 85, 85, 85, 86, 86, 86, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 88, 88, 89, 90, 90, 91, - 91, 92, 92, 92, 93, 93, 94, 94, 95, 95, - 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 97, 97, 97, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 99, 99 + 0, 69, 70, 70, 71, 71, 72, 72, 73, 73, + 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, + 76, 77, 77, 77, 78, 79, 79, 80, 80, 81, + 81, 82, 82, 83, 84, 84, 84, 85, 85, 85, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 87, 87, 88, 89, 89, 90, + 90, 91, 91, 91, 92, 92, 93, 93, 94, 94, + 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 98, 98 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1425,7 +1409,7 @@ static const yytype_int8 yyr2[] = 5, 4, 7, 6, 6, 6, 5, 5, 2, 1, 1, 1, 2, 3, 3, 2, 3, 9, 11, 9, 5, 4, 4, 4, 2, 4, 1, 1, 1, 4, - 3, 3, 4, 3, 1, 3, 1, 3, 1, 3, + 3, 3, 4, 3, 1, 3, 1, 4, 1, 4, 1, 1, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2000,205 +1984,205 @@ yydestruct (const char *yymsg, case YYSYMBOL_IDENT: /* IDENT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2004 "src/parser.c" +#line 1988 "src/parser.c" break; case YYSYMBOL_FIELD: /* FIELD */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2010 "src/parser.c" +#line 1994 "src/parser.c" break; case YYSYMBOL_BINDING: /* BINDING */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2016 "src/parser.c" +#line 2000 "src/parser.c" break; case YYSYMBOL_LITERAL: /* LITERAL */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2022 "src/parser.c" +#line 2006 "src/parser.c" break; case YYSYMBOL_FORMAT: /* FORMAT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2028 "src/parser.c" +#line 2012 "src/parser.c" break; case YYSYMBOL_QQSTRING_TEXT: /* QQSTRING_TEXT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2034 "src/parser.c" +#line 2018 "src/parser.c" break; case YYSYMBOL_Module: /* Module */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2040 "src/parser.c" +#line 2024 "src/parser.c" break; case YYSYMBOL_Imports: /* Imports */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2046 "src/parser.c" +#line 2030 "src/parser.c" break; case YYSYMBOL_FuncDefs: /* FuncDefs */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2052 "src/parser.c" +#line 2036 "src/parser.c" break; case YYSYMBOL_Query: /* Query */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2058 "src/parser.c" +#line 2042 "src/parser.c" break; case YYSYMBOL_Expr: /* Expr */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2064 "src/parser.c" +#line 2048 "src/parser.c" break; case YYSYMBOL_Import: /* Import */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2070 "src/parser.c" +#line 2054 "src/parser.c" break; case YYSYMBOL_ImportWhat: /* ImportWhat */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2076 "src/parser.c" +#line 2060 "src/parser.c" break; case YYSYMBOL_ImportFrom: /* ImportFrom */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2082 "src/parser.c" +#line 2066 "src/parser.c" break; case YYSYMBOL_FuncDef: /* FuncDef */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2088 "src/parser.c" +#line 2072 "src/parser.c" break; case YYSYMBOL_Params: /* Params */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2094 "src/parser.c" +#line 2078 "src/parser.c" break; case YYSYMBOL_Param: /* Param */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2100 "src/parser.c" +#line 2084 "src/parser.c" break; case YYSYMBOL_StringStart: /* StringStart */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2106 "src/parser.c" +#line 2090 "src/parser.c" break; case YYSYMBOL_String: /* String */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2112 "src/parser.c" +#line 2096 "src/parser.c" break; case YYSYMBOL_QQString: /* QQString */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2118 "src/parser.c" +#line 2102 "src/parser.c" break; case YYSYMBOL_ElseBody: /* ElseBody */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2124 "src/parser.c" +#line 2108 "src/parser.c" break; case YYSYMBOL_Term: /* Term */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2130 "src/parser.c" +#line 2114 "src/parser.c" break; case YYSYMBOL_Args: /* Args */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2136 "src/parser.c" +#line 2120 "src/parser.c" break; case YYSYMBOL_Arg: /* Arg */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2142 "src/parser.c" +#line 2126 "src/parser.c" break; case YYSYMBOL_RepPatterns: /* RepPatterns */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2148 "src/parser.c" +#line 2132 "src/parser.c" break; case YYSYMBOL_Patterns: /* Patterns */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2154 "src/parser.c" +#line 2138 "src/parser.c" break; case YYSYMBOL_Pattern: /* Pattern */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2160 "src/parser.c" +#line 2144 "src/parser.c" break; case YYSYMBOL_ArrayPats: /* ArrayPats */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2166 "src/parser.c" +#line 2150 "src/parser.c" break; case YYSYMBOL_ObjPats: /* ObjPats */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2172 "src/parser.c" +#line 2156 "src/parser.c" break; case YYSYMBOL_ObjPat: /* ObjPat */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2178 "src/parser.c" +#line 2162 "src/parser.c" break; case YYSYMBOL_Keyword: /* Keyword */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); } -#line 2184 "src/parser.c" +#line 2168 "src/parser.c" break; case YYSYMBOL_DictPairs: /* DictPairs */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2190 "src/parser.c" +#line 2174 "src/parser.c" break; case YYSYMBOL_DictPair: /* DictPair */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2196 "src/parser.c" +#line 2180 "src/parser.c" break; case YYSYMBOL_DictExpr: /* DictExpr */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); } -#line 2202 "src/parser.c" +#line 2186 "src/parser.c" break; default: @@ -2502,31 +2486,31 @@ yyreduce: switch (yyn) { case 2: /* TopLevel: Module Imports Query */ -#line 282 "src/parser.y" +#line 281 "src/parser.y" { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } +#line 2494 "src/parser.c" + break; + + case 3: /* TopLevel: Module Imports FuncDefs */ +#line 284 "src/parser.y" + { + *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); +} +#line 2502 "src/parser.c" + break; + + case 4: /* Module: %empty */ +#line 289 "src/parser.y" + { + (yyval.blk) = gen_noop(); +} #line 2510 "src/parser.c" break; - case 3: /* TopLevel: Module Imports FuncDefs */ -#line 285 "src/parser.y" - { - *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); -} -#line 2518 "src/parser.c" - break; - - case 4: /* Module: %empty */ -#line 290 "src/parser.y" - { - (yyval.blk) = gen_noop(); -} -#line 2526 "src/parser.c" - break; - case 5: /* Module: "module" Query ';' */ -#line 293 "src/parser.y" +#line 292 "src/parser.y" { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yylsp[-1]), "Module metadata must be constant"); @@ -2540,286 +2524,286 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2544 "src/parser.c" +#line 2528 "src/parser.c" break; case 6: /* Imports: %empty */ -#line 308 "src/parser.y" +#line 307 "src/parser.y" + { + (yyval.blk) = gen_noop(); +} +#line 2536 "src/parser.c" + break; + + case 7: /* Imports: Import Imports */ +#line 310 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); +} +#line 2544 "src/parser.c" + break; + + case 8: /* FuncDefs: %empty */ +#line 315 "src/parser.y" { (yyval.blk) = gen_noop(); } #line 2552 "src/parser.c" break; - case 7: /* Imports: Import Imports */ -#line 311 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); + case 9: /* FuncDefs: FuncDef FuncDefs */ +#line 318 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-1].blk), (yyvsp[0].blk)); } #line 2560 "src/parser.c" break; - case 8: /* FuncDefs: %empty */ -#line 316 "src/parser.y" - { - (yyval.blk) = gen_noop(); + case 10: /* Query: FuncDef Query */ +#line 324 "src/parser.y" + { + (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } #line 2568 "src/parser.c" break; - case 9: /* FuncDefs: FuncDef FuncDefs */ -#line 319 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-1].blk), (yyvsp[0].blk)); + case 11: /* Query: Expr "as" Patterns '|' Query */ +#line 327 "src/parser.y" + { + (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } #line 2576 "src/parser.c" break; - case 10: /* Query: FuncDef Query */ -#line 325 "src/parser.y" - { - (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); -} -#line 2584 "src/parser.c" - break; - - case 11: /* Query: Expr "as" Patterns '|' Query */ -#line 328 "src/parser.y" - { - (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 2592 "src/parser.c" - break; - case 12: /* Query: "label" BINDING '|' Query */ -#line 331 "src/parser.y" +#line 330 "src/parser.y" { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[-2].literal))); (yyval.blk) = gen_location((yyloc), locations, gen_label(jv_string_value(v), (yyvsp[0].blk))); jv_free((yyvsp[-2].literal)); jv_free(v); } -#line 2603 "src/parser.c" +#line 2587 "src/parser.c" break; case 13: /* Query: Query '|' Query */ -#line 337 "src/parser.y" +#line 336 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } +#line 2595 "src/parser.c" + break; + + case 14: /* Query: Query ',' Query */ +#line 339 "src/parser.y" + { + (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 2603 "src/parser.c" + break; + + case 15: /* Query: Expr */ +#line 342 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); +} #line 2611 "src/parser.c" break; - case 14: /* Query: Query ',' Query */ -#line 340 "src/parser.y" - { - (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); + case 16: /* Expr: Expr "//" Expr */ +#line 348 "src/parser.y" + { + (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 2619 "src/parser.c" break; - case 15: /* Query: Expr */ -#line 343 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); + case 17: /* Expr: Expr '=' Expr */ +#line 351 "src/parser.y" + { + (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } #line 2627 "src/parser.c" break; - case 16: /* Expr: Expr "//" Expr */ -#line 349 "src/parser.y" + case 18: /* Expr: Expr "or" Expr */ +#line 354 "src/parser.y" { - (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 2635 "src/parser.c" break; - case 17: /* Expr: Expr '=' Expr */ -#line 352 "src/parser.y" - { - (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); + case 19: /* Expr: Expr "and" Expr */ +#line 357 "src/parser.y" + { + (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 2643 "src/parser.c" break; - case 18: /* Expr: Expr "or" Expr */ -#line 355 "src/parser.y" - { - (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); + case 20: /* Expr: Expr "//=" Expr */ +#line 360 "src/parser.y" + { + (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 2651 "src/parser.c" break; - case 19: /* Expr: Expr "and" Expr */ -#line 358 "src/parser.y" - { - (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); + case 21: /* Expr: Expr "|=" Expr */ +#line 363 "src/parser.y" + { + (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } #line 2659 "src/parser.c" break; - case 20: /* Expr: Expr "//=" Expr */ -#line 361 "src/parser.y" - { - (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); + case 22: /* Expr: Expr '+' Expr */ +#line 366 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } #line 2667 "src/parser.c" break; - case 21: /* Expr: Expr "|=" Expr */ -#line 364 "src/parser.y" + case 23: /* Expr: Expr "+=" Expr */ +#line 369 "src/parser.y" { - (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); + (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } #line 2675 "src/parser.c" break; - case 22: /* Expr: Expr '+' Expr */ -#line 367 "src/parser.y" + case 24: /* Expr: Expr '-' Expr */ +#line 372 "src/parser.y" { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } #line 2683 "src/parser.c" break; - case 23: /* Expr: Expr "+=" Expr */ -#line 370 "src/parser.y" + case 25: /* Expr: Expr "-=" Expr */ +#line 375 "src/parser.y" { - (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); + (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } #line 2691 "src/parser.c" break; - case 24: /* Expr: Expr '-' Expr */ -#line 373 "src/parser.y" + case 26: /* Expr: Expr '*' Expr */ +#line 378 "src/parser.y" { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } #line 2699 "src/parser.c" break; - case 25: /* Expr: Expr "-=" Expr */ -#line 376 "src/parser.y" + case 27: /* Expr: Expr "*=" Expr */ +#line 381 "src/parser.y" { - (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); + (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } #line 2707 "src/parser.c" break; - case 26: /* Expr: Expr '*' Expr */ -#line 379 "src/parser.y" + case 28: /* Expr: Expr '/' Expr */ +#line 384 "src/parser.y" { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } #line 2715 "src/parser.c" break; - case 27: /* Expr: Expr "*=" Expr */ -#line 382 "src/parser.y" - { - (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); + case 29: /* Expr: Expr '%' Expr */ +#line 387 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } #line 2723 "src/parser.c" break; - case 28: /* Expr: Expr '/' Expr */ -#line 385 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); + case 30: /* Expr: Expr "/=" Expr */ +#line 390 "src/parser.y" + { + (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } #line 2731 "src/parser.c" break; - case 29: /* Expr: Expr '%' Expr */ -#line 388 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); + case 31: /* Expr: Expr "%=" Expr */ +#line 393 "src/parser.y" + { + (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } #line 2739 "src/parser.c" break; - case 30: /* Expr: Expr "/=" Expr */ -#line 391 "src/parser.y" + case 32: /* Expr: Expr "==" Expr */ +#line 396 "src/parser.y" { - (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } #line 2747 "src/parser.c" break; - case 31: /* Expr: Expr "%=" Expr */ -#line 394 "src/parser.y" - { - (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); + case 33: /* Expr: Expr "!=" Expr */ +#line 399 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } #line 2755 "src/parser.c" break; - case 32: /* Expr: Expr "==" Expr */ -#line 397 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); + case 34: /* Expr: Expr '<' Expr */ +#line 402 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } #line 2763 "src/parser.c" break; - case 33: /* Expr: Expr "!=" Expr */ -#line 400 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); + case 35: /* Expr: Expr '>' Expr */ +#line 405 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } #line 2771 "src/parser.c" break; - case 34: /* Expr: Expr '<' Expr */ -#line 403 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); + case 36: /* Expr: Expr "<=" Expr */ +#line 408 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } #line 2779 "src/parser.c" break; - case 35: /* Expr: Expr '>' Expr */ -#line 406 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); + case 37: /* Expr: Expr ">=" Expr */ +#line 411 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } #line 2787 "src/parser.c" break; - case 36: /* Expr: Expr "<=" Expr */ -#line 409 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); + case 38: /* Expr: Term */ +#line 414 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); } #line 2795 "src/parser.c" break; - case 37: /* Expr: Expr ">=" Expr */ -#line 412 "src/parser.y" + case 39: /* Import: ImportWhat ';' */ +#line 420 "src/parser.y" { - (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); + (yyval.blk) = (yyvsp[-1].blk); } #line 2803 "src/parser.c" break; - case 38: /* Expr: Term */ -#line 415 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); -} -#line 2811 "src/parser.c" - break; - - case 39: /* Import: ImportWhat ';' */ -#line 421 "src/parser.y" - { - (yyval.blk) = (yyvsp[-1].blk); -} -#line 2819 "src/parser.c" - break; - case 40: /* Import: ImportWhat Query ';' */ -#line 424 "src/parser.y" +#line 423 "src/parser.y" { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yylsp[-1]), "Module metadata must be constant"); @@ -2835,38 +2819,38 @@ yyreduce: (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk)); } } -#line 2839 "src/parser.c" +#line 2823 "src/parser.c" break; case 41: /* ImportWhat: "import" ImportFrom "as" BINDING */ -#line 441 "src/parser.y" +#line 440 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[-2].blk)), (yyvsp[0].literal), 1); block_free((yyvsp[-2].blk)); } -#line 2848 "src/parser.c" +#line 2832 "src/parser.c" break; case 42: /* ImportWhat: "import" ImportFrom "as" IDENT */ -#line 445 "src/parser.y" +#line 444 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[-2].blk)), (yyvsp[0].literal), 0); block_free((yyvsp[-2].blk)); } -#line 2857 "src/parser.c" +#line 2841 "src/parser.c" break; case 43: /* ImportWhat: "include" ImportFrom */ -#line 449 "src/parser.y" +#line 448 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[0].blk)), jv_invalid(), 0); block_free((yyvsp[0].blk)); } -#line 2866 "src/parser.c" +#line 2850 "src/parser.c" break; case 44: /* ImportFrom: String */ -#line 455 "src/parser.y" +#line 454 "src/parser.y" { if (!block_is_const((yyvsp[0].blk))) { FAIL((yylsp[0]), "Import path must be constant"); @@ -2876,152 +2860,152 @@ yyreduce: (yyval.blk) = (yyvsp[0].blk); } } -#line 2880 "src/parser.c" +#line 2864 "src/parser.c" break; case 45: /* FuncDef: "def" IDENT ':' Query ';' */ -#line 466 "src/parser.y" +#line 465 "src/parser.y" { (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk)); jv_free((yyvsp[-3].literal)); } -#line 2889 "src/parser.c" +#line 2873 "src/parser.c" break; case 46: /* FuncDef: "def" IDENT '(' Params ')' ':' Query ';' */ -#line 471 "src/parser.y" +#line 470 "src/parser.y" { (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-6].literal)); } -#line 2898 "src/parser.c" +#line 2882 "src/parser.c" break; case 47: /* Params: Param */ -#line 477 "src/parser.y" +#line 476 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 2906 "src/parser.c" +#line 2890 "src/parser.c" break; case 48: /* Params: Params ';' Param */ -#line 480 "src/parser.y" +#line 479 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2914 "src/parser.c" +#line 2898 "src/parser.c" break; case 49: /* Param: BINDING */ -#line 485 "src/parser.y" +#line 484 "src/parser.y" { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2923 "src/parser.c" +#line 2907 "src/parser.c" break; case 50: /* Param: IDENT */ -#line 489 "src/parser.y" +#line 488 "src/parser.y" { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2932 "src/parser.c" +#line 2916 "src/parser.c" break; case 51: /* StringStart: FORMAT QQSTRING_START */ -#line 496 "src/parser.y" +#line 495 "src/parser.y" { (yyval.literal) = (yyvsp[-1].literal); } -#line 2940 "src/parser.c" +#line 2924 "src/parser.c" break; case 52: /* StringStart: QQSTRING_START */ -#line 499 "src/parser.y" +#line 498 "src/parser.y" { (yyval.literal) = jv_string("text"); } -#line 2948 "src/parser.c" +#line 2932 "src/parser.c" break; case 53: /* String: StringStart QQString QQSTRING_END */ -#line 505 "src/parser.y" +#line 504 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2957 "src/parser.c" +#line 2941 "src/parser.c" break; case 54: /* QQString: %empty */ -#line 512 "src/parser.y" +#line 511 "src/parser.y" { (yyval.blk) = gen_const(jv_string("")); } +#line 2949 "src/parser.c" + break; + + case 55: /* QQString: QQString QQSTRING_TEXT */ +#line 514 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); +} +#line 2957 "src/parser.c" + break; + + case 56: /* QQString: QQString QQSTRING_INTERP_START Query QQSTRING_INTERP_END */ +#line 517 "src/parser.y" + { + (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); +} #line 2965 "src/parser.c" break; - case 55: /* QQString: QQString QQSTRING_TEXT */ -#line 515 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); + case 57: /* ElseBody: "elif" Query "then" Query ElseBody */ +#line 523 "src/parser.y" + { + (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } #line 2973 "src/parser.c" break; - case 56: /* QQString: QQString QQSTRING_INTERP_START Query QQSTRING_INTERP_END */ -#line 518 "src/parser.y" - { - (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); + case 58: /* ElseBody: "else" Query "end" */ +#line 526 "src/parser.y" + { + (yyval.blk) = (yyvsp[-1].blk); } #line 2981 "src/parser.c" break; - case 57: /* ElseBody: "elif" Query "then" Query ElseBody */ -#line 524 "src/parser.y" - { - (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); + case 59: /* ElseBody: "end" */ +#line 529 "src/parser.y" + { + (yyval.blk) = gen_noop(); } #line 2989 "src/parser.c" break; - case 58: /* ElseBody: "else" Query "end" */ -#line 527 "src/parser.y" - { - (yyval.blk) = (yyvsp[-1].blk); + case 60: /* Term: '.' */ +#line 535 "src/parser.y" + { + (yyval.blk) = gen_noop(); } #line 2997 "src/parser.c" break; - case 59: /* ElseBody: "end" */ -#line 530 "src/parser.y" - { - (yyval.blk) = gen_noop(); + case 61: /* Term: ".." */ +#line 538 "src/parser.y" + { + (yyval.blk) = gen_call("recurse", gen_noop()); } #line 3005 "src/parser.c" break; - case 60: /* Term: '.' */ -#line 536 "src/parser.y" - { - (yyval.blk) = gen_noop(); -} -#line 3013 "src/parser.c" - break; - - case 61: /* Term: ".." */ -#line 539 "src/parser.y" - { - (yyval.blk) = gen_call("recurse", gen_noop()); -} -#line 3021 "src/parser.c" - break; - case 62: /* Term: "break" BINDING */ -#line 542 "src/parser.y" +#line 541 "src/parser.y" { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); // impossible symbol (yyval.blk) = gen_location((yyloc), locations, @@ -3030,279 +3014,279 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 3034 "src/parser.c" +#line 3018 "src/parser.c" break; case 63: /* Term: "break" error */ -#line 550 "src/parser.y" +#line 549 "src/parser.y" { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 3043 "src/parser.c" +#line 3027 "src/parser.c" break; case 64: /* Term: Term FIELD '?' */ -#line 554 "src/parser.y" +#line 553 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } +#line 3035 "src/parser.c" + break; + + case 65: /* Term: FIELD '?' */ +#line 556 "src/parser.y" + { + (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); +} +#line 3043 "src/parser.c" + break; + + case 66: /* Term: Term '.' String '?' */ +#line 559 "src/parser.y" + { + (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); +} #line 3051 "src/parser.c" break; - case 65: /* Term: FIELD '?' */ -#line 557 "src/parser.y" - { - (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); + case 67: /* Term: '.' String '?' */ +#line 562 "src/parser.y" + { + (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } #line 3059 "src/parser.c" break; - case 66: /* Term: Term '.' String '?' */ -#line 560 "src/parser.y" - { - (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); + case 68: /* Term: Term FIELD */ +#line 565 "src/parser.y" + { + (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } #line 3067 "src/parser.c" break; - case 67: /* Term: '.' String '?' */ -#line 563 "src/parser.y" - { - (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); + case 69: /* Term: FIELD */ +#line 568 "src/parser.y" + { + (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } #line 3075 "src/parser.c" break; - case 68: /* Term: Term FIELD */ -#line 566 "src/parser.y" - { - (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); + case 70: /* Term: Term '.' String */ +#line 571 "src/parser.y" + { + (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3083 "src/parser.c" break; - case 69: /* Term: FIELD */ -#line 569 "src/parser.y" - { - (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); + case 71: /* Term: '.' String */ +#line 574 "src/parser.y" + { + (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } #line 3091 "src/parser.c" break; - case 70: /* Term: Term '.' String */ -#line 572 "src/parser.y" - { - (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3099 "src/parser.c" - break; - - case 71: /* Term: '.' String */ -#line 575 "src/parser.y" - { - (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); -} -#line 3107 "src/parser.c" - break; - case 72: /* Term: '.' error */ -#line 578 "src/parser.y" +#line 577 "src/parser.y" { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3116 "src/parser.c" +#line 3100 "src/parser.c" break; case 73: /* Term: '.' IDENT error */ -#line 582 "src/parser.y" +#line 581 "src/parser.y" { jv_free((yyvsp[-1].literal)); FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3126 "src/parser.c" +#line 3110 "src/parser.c" break; case 74: /* Term: Term '[' Query ']' '?' */ -#line 588 "src/parser.y" +#line 587 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } +#line 3118 "src/parser.c" + break; + + case 75: /* Term: Term '[' Query ']' */ +#line 590 "src/parser.y" + { + (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); +} +#line 3126 "src/parser.c" + break; + + case 76: /* Term: Term '.' '[' Query ']' '?' */ +#line 593 "src/parser.y" + { + (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); +} #line 3134 "src/parser.c" break; - case 75: /* Term: Term '[' Query ']' */ -#line 591 "src/parser.y" - { - (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); + case 77: /* Term: Term '.' '[' Query ']' */ +#line 596 "src/parser.y" + { + (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); } #line 3142 "src/parser.c" break; - case 76: /* Term: Term '.' '[' Query ']' '?' */ -#line 594 "src/parser.y" - { - (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); + case 78: /* Term: Term '[' ']' '?' */ +#line 599 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } #line 3150 "src/parser.c" break; - case 77: /* Term: Term '.' '[' Query ']' */ -#line 597 "src/parser.y" - { - (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); + case 79: /* Term: Term '[' ']' */ +#line 602 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } #line 3158 "src/parser.c" break; - case 78: /* Term: Term '[' ']' '?' */ -#line 600 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); + case 80: /* Term: Term '.' '[' ']' '?' */ +#line 605 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-4].blk), gen_op_simple(EACH_OPT)); } #line 3166 "src/parser.c" break; - case 79: /* Term: Term '[' ']' */ -#line 603 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); + case 81: /* Term: Term '.' '[' ']' */ +#line 608 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH)); } #line 3174 "src/parser.c" break; - case 80: /* Term: Term '.' '[' ']' '?' */ -#line 606 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-4].blk), gen_op_simple(EACH_OPT)); + case 82: /* Term: Term '[' Query ':' Query ']' '?' */ +#line 611 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } #line 3182 "src/parser.c" break; - case 81: /* Term: Term '.' '[' ']' */ -#line 609 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH)); + case 83: /* Term: Term '[' Query ':' ']' '?' */ +#line 614 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } #line 3190 "src/parser.c" break; - case 82: /* Term: Term '[' Query ':' Query ']' '?' */ -#line 612 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); + case 84: /* Term: Term '[' ':' Query ']' '?' */ +#line 617 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } #line 3198 "src/parser.c" break; - case 83: /* Term: Term '[' Query ':' ']' '?' */ -#line 615 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); + case 85: /* Term: Term '[' Query ':' Query ']' */ +#line 620 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } #line 3206 "src/parser.c" break; - case 84: /* Term: Term '[' ':' Query ']' '?' */ -#line 618 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); + case 86: /* Term: Term '[' Query ':' ']' */ +#line 623 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } #line 3214 "src/parser.c" break; - case 85: /* Term: Term '[' Query ':' Query ']' */ -#line 621 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); + case 87: /* Term: Term '[' ':' Query ']' */ +#line 626 "src/parser.y" + { + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } #line 3222 "src/parser.c" break; - case 86: /* Term: Term '[' Query ':' ']' */ -#line 624 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); + case 88: /* Term: Term '?' */ +#line 629 "src/parser.y" + { + (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } #line 3230 "src/parser.c" break; - case 87: /* Term: Term '[' ':' Query ']' */ -#line 627 "src/parser.y" - { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); + case 89: /* Term: LITERAL */ +#line 632 "src/parser.y" + { + (yyval.blk) = gen_const((yyvsp[0].literal)); } #line 3238 "src/parser.c" break; - case 88: /* Term: Term '?' */ -#line 630 "src/parser.y" - { - (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); + case 90: /* Term: String */ +#line 635 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); } #line 3246 "src/parser.c" break; - case 89: /* Term: LITERAL */ -#line 633 "src/parser.y" - { - (yyval.blk) = gen_const((yyvsp[0].literal)); + case 91: /* Term: FORMAT */ +#line 638 "src/parser.y" + { + (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } #line 3254 "src/parser.c" break; - case 90: /* Term: String */ -#line 636 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); + case 92: /* Term: '-' Term */ +#line 641 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } #line 3262 "src/parser.c" break; - case 91: /* Term: FORMAT */ -#line 639 "src/parser.y" - { - (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); + case 93: /* Term: '(' Query ')' */ +#line 644 "src/parser.y" + { + (yyval.blk) = (yyvsp[-1].blk); } #line 3270 "src/parser.c" break; - case 92: /* Term: '-' Term */ -#line 642 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); + case 94: /* Term: '[' Query ']' */ +#line 647 "src/parser.y" + { + (yyval.blk) = gen_collect((yyvsp[-1].blk)); } #line 3278 "src/parser.c" break; - case 93: /* Term: '(' Query ')' */ -#line 645 "src/parser.y" - { - (yyval.blk) = (yyvsp[-1].blk); + case 95: /* Term: '[' ']' */ +#line 650 "src/parser.y" + { + (yyval.blk) = gen_const(jv_array()); } #line 3286 "src/parser.c" break; - case 94: /* Term: '[' Query ']' */ -#line 648 "src/parser.y" - { - (yyval.blk) = gen_collect((yyvsp[-1].blk)); -} -#line 3294 "src/parser.c" - break; - - case 95: /* Term: '[' ']' */ -#line 651 "src/parser.y" - { - (yyval.blk) = gen_const(jv_array()); -} -#line 3302 "src/parser.c" - break; - case 96: /* Term: '{' DictPairs '}' */ -#line 654 "src/parser.y" +#line 653 "src/parser.y" { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3310,103 +3294,103 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3314 "src/parser.c" +#line 3298 "src/parser.c" break; case 97: /* Term: "reduce" Expr "as" Patterns '(' Query ';' Query ')' */ -#line 661 "src/parser.y" +#line 660 "src/parser.y" { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } +#line 3306 "src/parser.c" + break; + + case 98: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ';' Query ')' */ +#line 663 "src/parser.y" + { + (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); +} +#line 3314 "src/parser.c" + break; + + case 99: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ')' */ +#line 666 "src/parser.y" + { + (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); +} #line 3322 "src/parser.c" break; - case 98: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ';' Query ')' */ -#line 664 "src/parser.y" - { - (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); + case 100: /* Term: "if" Query "then" Query ElseBody */ +#line 669 "src/parser.y" + { + (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } #line 3330 "src/parser.c" break; - case 99: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ')' */ -#line 667 "src/parser.y" - { - (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); -} -#line 3338 "src/parser.c" - break; - - case 100: /* Term: "if" Query "then" Query ElseBody */ -#line 670 "src/parser.y" - { - (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); -} -#line 3346 "src/parser.c" - break; - case 101: /* Term: "if" Query "then" error */ -#line 673 "src/parser.y" +#line 672 "src/parser.y" { FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 3355 "src/parser.c" +#line 3339 "src/parser.c" break; case 102: /* Term: "try" Expr "catch" Expr */ -#line 677 "src/parser.y" +#line 676 "src/parser.y" { (yyval.blk) = gen_try((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3363 "src/parser.c" +#line 3347 "src/parser.c" break; case 103: /* Term: "try" Expr "catch" error */ -#line 680 "src/parser.y" +#line 679 "src/parser.y" { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 3372 "src/parser.c" +#line 3356 "src/parser.c" break; case 104: /* Term: "try" Expr */ -#line 684 "src/parser.y" +#line 683 "src/parser.y" { (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); } -#line 3380 "src/parser.c" +#line 3364 "src/parser.c" break; case 105: /* Term: '$' '$' '$' BINDING */ -#line 702 "src/parser.y" +#line 701 "src/parser.y" { (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADVN, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3389 "src/parser.c" +#line 3373 "src/parser.c" break; case 106: /* Term: BINDING */ -#line 706 "src/parser.y" +#line 705 "src/parser.y" { (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3398 "src/parser.c" +#line 3382 "src/parser.c" break; case 107: /* Term: "$__loc__" */ -#line 710 "src/parser.y" +#line 709 "src/parser.y" { (yyval.blk) = gen_loc_object(&(yyloc), locations); } -#line 3406 "src/parser.c" +#line 3390 "src/parser.c" break; case 108: /* Term: IDENT */ -#line 713 "src/parser.y" +#line 712 "src/parser.y" { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3419,198 +3403,198 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3423 "src/parser.c" +#line 3407 "src/parser.c" break; case 109: /* Term: IDENT '(' Args ')' */ -#line 725 "src/parser.y" +#line 724 "src/parser.y" { (yyval.blk) = gen_call(jv_string_value((yyvsp[-3].literal)), (yyvsp[-1].blk)); (yyval.blk) = gen_location((yylsp[-3]), locations, (yyval.blk)); jv_free((yyvsp[-3].literal)); } -#line 3433 "src/parser.c" +#line 3417 "src/parser.c" break; case 110: /* Term: '(' error ')' */ -#line 730 "src/parser.y" +#line 729 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3439 "src/parser.c" +#line 3423 "src/parser.c" break; case 111: /* Term: '[' error ']' */ -#line 731 "src/parser.y" +#line 730 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3445 "src/parser.c" +#line 3429 "src/parser.c" break; case 112: /* Term: Term '[' error ']' */ -#line 732 "src/parser.y" +#line 731 "src/parser.y" { (yyval.blk) = (yyvsp[-3].blk); } -#line 3451 "src/parser.c" +#line 3435 "src/parser.c" break; case 113: /* Term: '{' error '}' */ -#line 733 "src/parser.y" +#line 732 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3457 "src/parser.c" +#line 3441 "src/parser.c" break; case 114: /* Args: Arg */ -#line 736 "src/parser.y" +#line 735 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } +#line 3449 "src/parser.c" + break; + + case 115: /* Args: Args ';' Arg */ +#line 738 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 3457 "src/parser.c" + break; + + case 116: /* Arg: Query */ +#line 743 "src/parser.y" + { + (yyval.blk) = gen_lambda((yyvsp[0].blk)); +} #line 3465 "src/parser.c" break; - case 115: /* Args: Args ';' Arg */ -#line 739 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); + case 117: /* RepPatterns: RepPatterns '?' "//" Pattern */ +#line 748 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-3].blk), gen_destructure_alt((yyvsp[0].blk))); } #line 3473 "src/parser.c" break; - case 116: /* Arg: Query */ -#line 744 "src/parser.y" - { - (yyval.blk) = gen_lambda((yyvsp[0].blk)); + case 118: /* RepPatterns: Pattern */ +#line 751 "src/parser.y" + { + (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); } #line 3481 "src/parser.c" break; - case 117: /* RepPatterns: RepPatterns "?//" Pattern */ -#line 749 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk))); + case 119: /* Patterns: RepPatterns '?' "//" Pattern */ +#line 756 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-3].blk), (yyvsp[0].blk)); } #line 3489 "src/parser.c" break; - case 118: /* RepPatterns: Pattern */ -#line 752 "src/parser.y" + case 120: /* Patterns: Pattern */ +#line 759 "src/parser.y" { - (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); + (yyval.blk) = (yyvsp[0].blk); } #line 3497 "src/parser.c" break; - case 119: /* Patterns: RepPatterns "?//" Pattern */ -#line 757 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3505 "src/parser.c" - break; - - case 120: /* Patterns: Pattern */ -#line 760 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); -} -#line 3513 "src/parser.c" - break; - case 121: /* Pattern: BINDING */ -#line 765 "src/parser.y" +#line 764 "src/parser.y" { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3522 "src/parser.c" +#line 3506 "src/parser.c" break; case 122: /* Pattern: '[' ArrayPats ']' */ -#line 769 "src/parser.y" +#line 768 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } +#line 3514 "src/parser.c" + break; + + case 123: /* Pattern: '{' ObjPats '}' */ +#line 771 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); +} +#line 3522 "src/parser.c" + break; + + case 124: /* ArrayPats: Pattern */ +#line 776 "src/parser.y" + { + (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); +} #line 3530 "src/parser.c" break; - case 123: /* Pattern: '{' ObjPats '}' */ -#line 772 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); + case 125: /* ArrayPats: ArrayPats ',' Pattern */ +#line 779 "src/parser.y" + { + (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3538 "src/parser.c" break; - case 124: /* ArrayPats: Pattern */ -#line 777 "src/parser.y" - { - (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); + case 126: /* ObjPats: ObjPat */ +#line 784 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); } #line 3546 "src/parser.c" break; - case 125: /* ArrayPats: ArrayPats ',' Pattern */ -#line 780 "src/parser.y" - { - (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); + case 127: /* ObjPats: ObjPats ',' ObjPat */ +#line 787 "src/parser.y" + { + (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3554 "src/parser.c" break; - case 126: /* ObjPats: ObjPat */ -#line 785 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); + case 128: /* ObjPat: BINDING */ +#line 792 "src/parser.y" + { + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); } #line 3562 "src/parser.c" break; - case 127: /* ObjPats: ObjPats ',' ObjPat */ -#line 788 "src/parser.y" - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); + case 129: /* ObjPat: BINDING ':' Pattern */ +#line 795 "src/parser.y" + { + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), BLOCK(gen_op_simple(DUP), gen_op_unbound(STOREV, jv_string_value((yyvsp[-2].literal))), (yyvsp[0].blk))); } #line 3570 "src/parser.c" break; - case 128: /* ObjPat: BINDING */ -#line 793 "src/parser.y" - { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); + case 130: /* ObjPat: IDENT ':' Pattern */ +#line 798 "src/parser.y" + { + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } #line 3578 "src/parser.c" break; - case 129: /* ObjPat: BINDING ':' Pattern */ -#line 796 "src/parser.y" + case 131: /* ObjPat: Keyword ':' Pattern */ +#line 801 "src/parser.y" { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), BLOCK(gen_op_simple(DUP), gen_op_unbound(STOREV, jv_string_value((yyvsp[-2].literal))), (yyvsp[0].blk))); + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } #line 3586 "src/parser.c" break; - case 130: /* ObjPat: IDENT ':' Pattern */ -#line 799 "src/parser.y" - { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + case 132: /* ObjPat: String ':' Pattern */ +#line 804 "src/parser.y" + { + (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3594 "src/parser.c" break; - case 131: /* ObjPat: Keyword ':' Pattern */ -#line 802 "src/parser.y" - { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); -} -#line 3602 "src/parser.c" - break; - - case 132: /* ObjPat: String ':' Pattern */ -#line 805 "src/parser.y" - { - (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3610 "src/parser.c" - break; - case 133: /* ObjPat: '(' Query ')' ':' Pattern */ -#line 808 "src/parser.y" +#line 807 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3619,267 +3603,267 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3623 "src/parser.c" +#line 3607 "src/parser.c" break; case 134: /* ObjPat: error ':' Pattern */ -#line 816 "src/parser.y" +#line 815 "src/parser.y" { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3632 "src/parser.c" +#line 3616 "src/parser.c" break; case 135: /* Keyword: "as" */ -#line 822 "src/parser.y" +#line 821 "src/parser.y" { (yyval.literal) = jv_string("as"); } +#line 3624 "src/parser.c" + break; + + case 136: /* Keyword: "def" */ +#line 824 "src/parser.y" + { + (yyval.literal) = jv_string("def"); +} +#line 3632 "src/parser.c" + break; + + case 137: /* Keyword: "module" */ +#line 827 "src/parser.y" + { + (yyval.literal) = jv_string("module"); +} #line 3640 "src/parser.c" break; - case 136: /* Keyword: "def" */ -#line 825 "src/parser.y" - { - (yyval.literal) = jv_string("def"); + case 138: /* Keyword: "import" */ +#line 830 "src/parser.y" + { + (yyval.literal) = jv_string("import"); } #line 3648 "src/parser.c" break; - case 137: /* Keyword: "module" */ -#line 828 "src/parser.y" - { - (yyval.literal) = jv_string("module"); + case 139: /* Keyword: "include" */ +#line 833 "src/parser.y" + { + (yyval.literal) = jv_string("include"); } #line 3656 "src/parser.c" break; - case 138: /* Keyword: "import" */ -#line 831 "src/parser.y" - { - (yyval.literal) = jv_string("import"); + case 140: /* Keyword: "if" */ +#line 836 "src/parser.y" + { + (yyval.literal) = jv_string("if"); } #line 3664 "src/parser.c" break; - case 139: /* Keyword: "include" */ -#line 834 "src/parser.y" - { - (yyval.literal) = jv_string("include"); + case 141: /* Keyword: "then" */ +#line 839 "src/parser.y" + { + (yyval.literal) = jv_string("then"); } #line 3672 "src/parser.c" break; - case 140: /* Keyword: "if" */ -#line 837 "src/parser.y" - { - (yyval.literal) = jv_string("if"); + case 142: /* Keyword: "else" */ +#line 842 "src/parser.y" + { + (yyval.literal) = jv_string("else"); } #line 3680 "src/parser.c" break; - case 141: /* Keyword: "then" */ -#line 840 "src/parser.y" + case 143: /* Keyword: "elif" */ +#line 845 "src/parser.y" { - (yyval.literal) = jv_string("then"); + (yyval.literal) = jv_string("elif"); } #line 3688 "src/parser.c" break; - case 142: /* Keyword: "else" */ -#line 843 "src/parser.y" - { - (yyval.literal) = jv_string("else"); + case 144: /* Keyword: "reduce" */ +#line 848 "src/parser.y" + { + (yyval.literal) = jv_string("reduce"); } #line 3696 "src/parser.c" break; - case 143: /* Keyword: "elif" */ -#line 846 "src/parser.y" - { - (yyval.literal) = jv_string("elif"); + case 145: /* Keyword: "foreach" */ +#line 851 "src/parser.y" + { + (yyval.literal) = jv_string("foreach"); } #line 3704 "src/parser.c" break; - case 144: /* Keyword: "reduce" */ -#line 849 "src/parser.y" - { - (yyval.literal) = jv_string("reduce"); + case 146: /* Keyword: "end" */ +#line 854 "src/parser.y" + { + (yyval.literal) = jv_string("end"); } #line 3712 "src/parser.c" break; - case 145: /* Keyword: "foreach" */ -#line 852 "src/parser.y" - { - (yyval.literal) = jv_string("foreach"); + case 147: /* Keyword: "and" */ +#line 857 "src/parser.y" + { + (yyval.literal) = jv_string("and"); } #line 3720 "src/parser.c" break; - case 146: /* Keyword: "end" */ -#line 855 "src/parser.y" - { - (yyval.literal) = jv_string("end"); + case 148: /* Keyword: "or" */ +#line 860 "src/parser.y" + { + (yyval.literal) = jv_string("or"); } #line 3728 "src/parser.c" break; - case 147: /* Keyword: "and" */ -#line 858 "src/parser.y" + case 149: /* Keyword: "try" */ +#line 863 "src/parser.y" { - (yyval.literal) = jv_string("and"); + (yyval.literal) = jv_string("try"); } #line 3736 "src/parser.c" break; - case 148: /* Keyword: "or" */ -#line 861 "src/parser.y" - { - (yyval.literal) = jv_string("or"); + case 150: /* Keyword: "catch" */ +#line 866 "src/parser.y" + { + (yyval.literal) = jv_string("catch"); } #line 3744 "src/parser.c" break; - case 149: /* Keyword: "try" */ -#line 864 "src/parser.y" - { - (yyval.literal) = jv_string("try"); + case 151: /* Keyword: "label" */ +#line 869 "src/parser.y" + { + (yyval.literal) = jv_string("label"); } #line 3752 "src/parser.c" break; - case 150: /* Keyword: "catch" */ -#line 867 "src/parser.y" + case 152: /* Keyword: "break" */ +#line 872 "src/parser.y" { - (yyval.literal) = jv_string("catch"); + (yyval.literal) = jv_string("break"); } #line 3760 "src/parser.c" break; - case 151: /* Keyword: "label" */ -#line 870 "src/parser.y" - { - (yyval.literal) = jv_string("label"); + case 153: /* DictPairs: %empty */ +#line 878 "src/parser.y" + { + (yyval.blk) = gen_noop(); } #line 3768 "src/parser.c" break; - case 152: /* Keyword: "break" */ -#line 873 "src/parser.y" - { - (yyval.literal) = jv_string("break"); + case 154: /* DictPairs: DictPair */ +#line 881 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); } #line 3776 "src/parser.c" break; - case 153: /* DictPairs: %empty */ -#line 879 "src/parser.y" - { - (yyval.blk) = gen_noop(); + case 155: /* DictPairs: DictPair ',' DictPairs */ +#line 884 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3784 "src/parser.c" break; - case 154: /* DictPairs: DictPair */ -#line 882 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); + case 156: /* DictPair: IDENT ':' DictExpr */ +#line 889 "src/parser.y" + { + (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } #line 3792 "src/parser.c" break; - case 155: /* DictPairs: DictPair ',' DictPairs */ -#line 885 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); + case 157: /* DictPair: Keyword ':' DictExpr */ +#line 892 "src/parser.y" + { + (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } #line 3800 "src/parser.c" break; - case 156: /* DictPair: IDENT ':' DictExpr */ -#line 890 "src/parser.y" - { - (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + case 158: /* DictPair: String ':' DictExpr */ +#line 895 "src/parser.y" + { + (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } #line 3808 "src/parser.c" break; - case 157: /* DictPair: Keyword ':' DictExpr */ -#line 893 "src/parser.y" - { - (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); -} -#line 3816 "src/parser.c" - break; - - case 158: /* DictPair: String ':' DictExpr */ -#line 896 "src/parser.y" - { - (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3824 "src/parser.c" - break; - case 159: /* DictPair: String */ -#line 899 "src/parser.y" +#line 898 "src/parser.y" { (yyval.blk) = gen_dictpair((yyvsp[0].blk), BLOCK(gen_op_simple(POP), gen_op_simple(DUP2), gen_op_simple(DUP2), gen_op_simple(INDEX))); } -#line 3833 "src/parser.c" +#line 3817 "src/parser.c" break; case 160: /* DictPair: BINDING ':' DictExpr */ -#line 903 "src/parser.y" +#line 902 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[-2].literal)))), (yyvsp[0].blk)); jv_free((yyvsp[-2].literal)); } -#line 3843 "src/parser.c" +#line 3827 "src/parser.c" break; case 161: /* DictPair: BINDING */ -#line 908 "src/parser.y" +#line 907 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 3852 "src/parser.c" +#line 3836 "src/parser.c" break; case 162: /* DictPair: IDENT */ -#line 912 "src/parser.y" +#line 911 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3861 "src/parser.c" +#line 3845 "src/parser.c" break; case 163: /* DictPair: "$__loc__" */ -#line 916 "src/parser.y" +#line 915 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_string("__loc__")), gen_loc_object(&(yyloc), locations)); } -#line 3870 "src/parser.c" +#line 3854 "src/parser.c" break; case 164: /* DictPair: Keyword */ -#line 920 "src/parser.y" +#line 919 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3879 "src/parser.c" +#line 3863 "src/parser.c" break; case 165: /* DictPair: '(' Query ')' ':' DictExpr */ -#line 924 "src/parser.y" +#line 923 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3888,36 +3872,36 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3892 "src/parser.c" +#line 3876 "src/parser.c" break; case 166: /* DictPair: error ':' DictExpr */ -#line 932 "src/parser.y" +#line 931 "src/parser.y" { FAIL((yylsp[-2]), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } +#line 3885 "src/parser.c" + break; + + case 167: /* DictExpr: DictExpr '|' DictExpr */ +#line 937 "src/parser.y" + { + (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 3893 "src/parser.c" + break; + + case 168: /* DictExpr: Expr */ +#line 940 "src/parser.y" + { + (yyval.blk) = (yyvsp[0].blk); +} #line 3901 "src/parser.c" break; - case 167: /* DictExpr: DictExpr '|' DictExpr */ -#line 938 "src/parser.y" - { - (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3909 "src/parser.c" - break; - case 168: /* DictExpr: Expr */ -#line 941 "src/parser.y" - { - (yyval.blk) = (yyvsp[0].blk); -} -#line 3917 "src/parser.c" - break; - - -#line 3921 "src/parser.c" +#line 3905 "src/parser.c" default: break; } @@ -4146,7 +4130,7 @@ yyreturnlab: return yyresult; } -#line 944 "src/parser.y" +#line 943 "src/parser.y" int jq_parse(struct locfile* locations, block* answer) { diff --git a/src/parser.h b/src/parser.h index 228db303..4fab32db 100644 --- a/src/parser.h +++ b/src/parser.h @@ -111,14 +111,13 @@ struct lexer_param; SETDEFINEDOR = 293, /* "//=" */ LESSEQ = 294, /* "<=" */ GREATEREQ = 295, /* ">=" */ - ALTERNATION = 296, /* "?//" */ - QQSTRING_START = 297, /* QQSTRING_START */ - QQSTRING_TEXT = 298, /* QQSTRING_TEXT */ - QQSTRING_INTERP_START = 299, /* QQSTRING_INTERP_START */ - QQSTRING_INTERP_END = 300, /* QQSTRING_INTERP_END */ - QQSTRING_END = 301, /* QQSTRING_END */ - FUNCDEF = 302, /* FUNCDEF */ - NONOPT = 303 /* NONOPT */ + QQSTRING_START = 296, /* QQSTRING_START */ + QQSTRING_TEXT = 297, /* QQSTRING_TEXT */ + QQSTRING_INTERP_START = 298, /* QQSTRING_INTERP_START */ + QQSTRING_INTERP_END = 299, /* QQSTRING_INTERP_END */ + QQSTRING_END = 300, /* QQSTRING_END */ + FUNCDEF = 301, /* FUNCDEF */ + NONOPT = 302 /* NONOPT */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -165,14 +164,13 @@ struct lexer_param; #define SETDEFINEDOR 293 #define LESSEQ 294 #define GREATEREQ 295 -#define ALTERNATION 296 -#define QQSTRING_START 297 -#define QQSTRING_TEXT 298 -#define QQSTRING_INTERP_START 299 -#define QQSTRING_INTERP_END 300 -#define QQSTRING_END 301 -#define FUNCDEF 302 -#define NONOPT 303 +#define QQSTRING_START 296 +#define QQSTRING_TEXT 297 +#define QQSTRING_INTERP_START 298 +#define QQSTRING_INTERP_END 299 +#define QQSTRING_END 300 +#define FUNCDEF 301 +#define NONOPT 302 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -183,7 +181,7 @@ union YYSTYPE jv literal; block blk; -#line 187 "src/parser.h" +#line 185 "src/parser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/src/parser.y b/src/parser.y index ecd57965..3aef62eb 100644 --- a/src/parser.y +++ b/src/parser.y @@ -85,7 +85,6 @@ struct lexer_param; %token SETDEFINEDOR "//=" %token LESSEQ "<=" %token GREATEREQ ">=" -%token ALTERNATION "?//" %token QQSTRING_START %token QQSTRING_TEXT @@ -746,16 +745,16 @@ Query { } RepPatterns: -RepPatterns "?//" Pattern { - $$ = BLOCK($1, gen_destructure_alt($3)); +RepPatterns '?' "//" Pattern { + $$ = BLOCK($1, gen_destructure_alt($4)); } | Pattern { $$ = gen_destructure_alt($1); } Patterns: -RepPatterns "?//" Pattern { - $$ = BLOCK($1, $3); +RepPatterns '?' "//" Pattern { + $$ = BLOCK($1, $4); } | Pattern { $$ = $1; diff --git a/tests/jq.test b/tests/jq.test index 11b3e007..d786e736 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1485,6 +1485,11 @@ try error(0) // 1 null 1 +# Lex token test #3589, like error(0)? // 1 +error(0) ?// 1 +null +1 + 1, try error(2), 3 null 1