From e8c874bf6f9f3d8e49643ae3548e6aad9e7176bf Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Sun, 29 Dec 2019 15:19:25 -0600 Subject: [PATCH] Add try-catch-finally and fix #1608 We can't really fix the issues with try-catch syntax, but we can introduce `try` as a function-like syntax, using `try(exp; handler)` in preference to `(try exp catch (handler))`. While we're at it, we can use the new `UNWINDING` opcode to implement try-catch-finally as `try(exp; handler; finally)`. --- docs/content/manual/manual.yml | 34 +- src/builtin.jq | 6 + src/parser.c | 2073 ++++++++++++++++---------------- src/parser.y | 6 + 4 files changed, 1095 insertions(+), 1024 deletions(-) diff --git a/docs/content/manual/manual.yml b/docs/content/manual/manual.yml index 085330df50..ac977c3f68 100644 --- a/docs/content/manual/manual.yml +++ b/docs/content/manual/manual.yml @@ -1048,7 +1048,7 @@ sections: values. examples: - - program: 'try error("\($__loc__)") catch .' + - program: 'try(error("\($__loc__)"); .)' input: 'null' output: ['"{\"file\":\"\",\"line\":1}"'] @@ -2154,25 +2154,35 @@ sections: input: '{}' output: [42] - - title: try-catch + - title: try-catch-finally body: | - Errors can be caught by using `try EXP catch EXP`. The first - expression is executed, and if it fails then the second is - executed with the error message. The output of the handler, - if any, is output as if it had been the output of the - expression to try. + Errors can be caught and handled by using any of `EXP?`, + `try(EXP)`, `try(EXP; EXP)`, or `try(EXP; EXP; EXP)`. - The `try EXP` form uses `empty` as the exception handler. + In the second and third forms, the second `EXP` is a handler + that will run when an error is handled. + + In the first two forms errors are suppressed, as if `empty` + had been used as the handler in the second or third forms. + + In the third form, the third `EXP` runs once in all cases, + after the first `EXP` is exhausted and the handler has run if + an error was produced. The input to the third, "finally" + expression will be `true` if no error was caught, or an array + containing the error if an error was caught. + + The older `try Exp catch Exp` syntax was problematic and is + now obsolete, and may be removed in future versions of jq. examples: - - program: 'try .a catch ". is not an object"' + - program: 'try(.a; ". is not an object")' input: 'true' output: ['". is not an object"'] - - program: '[.[]|try .a]' + - program: '[.[]|try(.a)]' input: '[{}, true, {"a":1}]' output: ['[null, 1]'] - - program: 'try error("some exception") catch .' + - program: 'try(error("some exception"); .)' input: 'true' output: ['"some exception"'] @@ -2187,7 +2197,7 @@ sections: # Repeat an expression until it raises "break" as an # error, then stop repeating without re-raising the error. # But if the error caught is not "break" then re-raise it. - try repeat(exp) catch .=="break" then empty else error; + try(repeat(exp); if .=="break" then empty else error end); jq has a syntax for named lexical labels to "break" or "go (back) to": diff --git a/src/builtin.jq b/src/builtin.jq index ba200bd392..fae90e1a8c 100644 --- a/src/builtin.jq +++ b/src/builtin.jq @@ -293,6 +293,12 @@ def JOIN($idx; stream; idx_expr; join_expr): def IN(s): any(s == .; .); def IN(src; s): any(src == s; .); +def _try_finally(e; h; f): + . as $dot | + unwinding | + if .==false then $dot|try(e; h) + else f + end; def coeval(program; args; options): [program, ., args, options] | coeval; def eval(program; args; options): diff --git a/src/parser.c b/src/parser.c index adae819d09..ce02870422 100644 --- a/src/parser.c +++ b/src/parser.c @@ -688,16 +688,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 28 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2145 +#define YYLAST 2293 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 71 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 172 +#define YYNRULES 174 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 334 +#define YYNSTATES 342 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -750,22 +750,22 @@ static const yytype_uint16 yyrline[] = { 0, 308, 308, 311, 316, 319, 330, 333, 338, 341, 346, 350, 370, 373, 377, 381, 385, 388, 391, 396, - 399, 402, 407, 414, 418, 422, 426, 430, 434, 438, - 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, - 484, 490, 494, 498, 502, 506, 510, 514, 518, 522, - 527, 530, 547, 556, 563, 571, 582, 587, 593, 596, - 601, 605, 609, 613, 620, 620, 624, 624, 631, 634, - 637, 643, 646, 651, 654, 657, 663, 666, 669, 677, - 681, 684, 687, 690, 693, 696, 699, 702, 705, 709, - 715, 718, 721, 724, 727, 730, 733, 736, 739, 742, - 745, 748, 751, 754, 757, 760, 763, 766, 769, 776, - 780, 789, 801, 806, 807, 808, 809, 812, 815, 820, - 825, 828, 833, 836, 841, 845, 848, 853, 856, 861, - 864, 869, 872, 875, 878, 881, 884, 892, 898, 901, + 399, 402, 405, 408, 413, 420, 424, 428, 432, 436, + 440, 444, 448, 452, 456, 460, 464, 468, 472, 476, + 480, 484, 490, 496, 500, 504, 508, 512, 516, 520, + 524, 528, 533, 536, 553, 562, 569, 577, 588, 593, + 599, 602, 607, 611, 615, 619, 626, 626, 630, 630, + 637, 640, 643, 649, 652, 657, 660, 663, 669, 672, + 675, 683, 687, 690, 693, 696, 699, 702, 705, 708, + 711, 715, 721, 724, 727, 730, 733, 736, 739, 742, + 745, 748, 751, 754, 757, 760, 763, 766, 769, 772, + 775, 782, 786, 795, 807, 812, 813, 814, 815, 818, + 821, 826, 831, 834, 839, 842, 847, 851, 854, 859, + 862, 867, 870, 875, 878, 881, 884, 887, 890, 898, 904, 907, 910, 913, 916, 919, 922, 925, 928, 931, - 934, 937, 940, 943, 946, 949, 952, 955, 960, 963, - 964, 965, 968, 971, 974, 977, 981, 985, 989, 993, - 997, 1001, 1009 + 934, 937, 940, 943, 946, 949, 952, 955, 958, 961, + 966, 969, 970, 971, 974, 977, 980, 983, 987, 991, + 995, 999, 1003, 1007, 1015 }; #endif @@ -809,54 +809,55 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -162 +#define YYPACT_NINF -146 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-162))) + (!!((Yystate) == (-146))) -#define YYTABLE_NINF -159 +#define YYTABLE_NINF -161 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-159))) + (!!((Yytable_value) == (-161))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 46, 864, 3, 42, 4, 12, -162, 31, -162, 72, - 19, 864, 175, 175, 864, 22, 0, -162, 864, 604, - 2055, 297, 535, 365, 1350, 864, -162, 1, -162, -3, - -3, 864, 42, 768, 864, -162, -162, -13, 47, 1723, - 52, 56, 95, 121, -162, 126, -162, -10, 68, 1175, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, 133, 31, 75, 69, -162, 995, -34, - 73, 864, 2084, 74, 76, 70, 92, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, -162, -162, 1897, 85, -24, 8, 466, 134, -162, - -162, -162, 1897, 864, -162, -162, 1386, 1897, -23, -162, - -162, 111, 864, 84, 671, -24, -24, 738, 100, -162, - 9, -162, -162, -162, -162, -162, -162, 425, 165, -162, - 165, 1210, 89, -162, 165, 165, -162, 425, 1967, 215, - 215, 1932, 360, 2000, 1967, 1967, 1967, 1967, 1967, 1967, - 215, 215, 1897, 1932, 1967, 215, 215, -10, -10, 96, - 96, 96, -162, 151, -24, 921, 117, 110, 119, 864, - 101, 97, 864, 103, 959, 15, -162, -162, 864, -162, - 26, -162, 160, 2113, -6, -162, 1422, 162, -162, 1619, - 106, 113, -162, -162, 864, -162, 864, -162, -21, -162, - 165, 127, 17, 127, 112, 165, 127, 127, -162, -162, - -162, -26, 122, 124, 864, 174, 128, -45, -162, 129, - -24, 864, 1031, -162, -162, 1067, -162, 834, 132, -162, - 180, -162, -162, -162, -162, -162, 111, 130, -162, 135, - 864, 864, -162, -162, 864, 864, 1897, 1758, -162, 165, - 165, 127, -24, -162, -24, -24, 1245, 136, -24, 921, - -162, -24, 145, 1897, 138, 139, 142, 1103, -162, -162, - -162, 864, 864, 1810, 1862, 1458, 1494, -162, 127, 127, - -162, -162, -162, 140, -24, -162, -162, -162, -162, -162, - -162, 143, 1530, 1566, -162, 864, 864, 864, -24, -162, - -162, -162, 864, 1671, 1280, 1139, -162, 1897, -162, -162, - 864, -162, 1315, -162 + 30, 872, 29, 55, -7, 6, -146, 27, -146, 44, + 15, 872, 657, 657, 938, 23, 2, -146, 872, 612, + 2203, 305, 543, 373, 1531, 872, -146, 9, -146, 13, + 13, 872, 55, 776, 872, -146, -146, -25, 48, 1904, + 18, 47, 612, 94, 121, -146, 122, -146, 1, 63, + 1321, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, 129, 27, 71, 65, -146, 1069, + -26, 70, 872, 2232, 72, 74, 66, 90, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, -146, -146, 2078, 81, -20, -5, 474, 130, + -146, -146, -146, 2078, 872, -146, -146, 1567, 2078, -11, + -146, -146, 0, 872, 78, 679, -20, -20, 1213, 746, + 95, -146, 24, -146, -146, -146, -146, -146, -146, 433, + 165, -146, 165, 1356, 80, -146, 165, 165, -146, 433, + 2148, 368, 368, 2113, 524, 199, 2148, 2148, 2148, 2148, + 2148, 2148, 368, 368, 2078, 2113, 2148, 368, 368, 1, + 1, 87, 87, 87, -146, 145, -20, 995, 109, 102, + 114, 872, 96, 93, 872, 98, 1033, 11, -146, -146, + 872, -146, 35, -146, 158, 2261, 57, -146, 1603, 161, + -146, 1800, 105, 112, 872, -146, -146, 872, -146, 872, + -146, -14, -146, 165, 126, 49, 126, 111, 165, 126, + 126, -146, -146, -146, -23, 113, 115, 872, 173, 116, + -45, -146, 117, -20, 872, 1105, -146, -146, 1141, -146, + 842, 119, -146, 179, -146, -146, -146, -146, -146, 0, + 120, -146, 123, 872, 872, -146, -146, 872, 872, 1249, + 2078, 1939, -146, 165, 165, 126, -20, -146, -20, -20, + 1391, 124, -20, 995, -146, -20, 143, 2078, 127, 134, + 135, 1177, -146, -146, -146, 872, 872, 1991, 2043, 1639, + 1675, 872, -146, -146, 126, 126, -146, -146, -146, 132, + -20, -146, -146, -146, -146, -146, -146, 138, 1711, 1747, + -146, 872, 872, 872, 1426, -20, -146, -146, -146, 872, + 1852, 1461, 1285, -146, -146, 2078, -146, -146, 872, -146, + 1496, -146 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -864,56 +865,57 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 111, 85, 102, 104, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 49, 1, 0, - 0, 8, 6, 0, 0, 81, 66, 0, 0, 0, - 0, 0, 20, 0, 79, 0, 68, 34, 0, 0, - 109, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 110, 88, 0, 0, 87, 0, 107, 0, 0, - 169, 0, 0, 165, 170, 0, 159, 0, 0, 0, + 4, 0, 0, 6, 113, 87, 104, 106, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 51, 1, 0, + 0, 8, 6, 0, 0, 83, 68, 0, 0, 0, + 0, 0, 0, 22, 0, 81, 0, 70, 36, 0, + 0, 111, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 112, 90, 0, 0, 89, 0, 109, 0, + 0, 171, 0, 0, 167, 172, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 5, 10, 84, 0, 0, 0, 0, 55, - 54, 3, 2, 8, 7, 50, 0, 119, 0, 117, - 68, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 0, 113, 105, 89, 83, 114, 106, 0, 0, 116, - 0, 0, 167, 168, 0, 0, 108, 0, 42, 43, - 44, 27, 26, 25, 29, 33, 36, 38, 41, 28, - 47, 48, 30, 31, 24, 45, 46, 32, 35, 37, - 39, 40, 80, 0, 0, 0, 0, 0, 123, 0, - 86, 0, 0, 95, 0, 0, 9, 51, 0, 112, - 0, 63, 0, 0, 0, 58, 0, 0, 18, 0, - 0, 0, 21, 19, 0, 69, 0, 65, 0, 161, - 0, 172, 75, 162, 0, 0, 164, 163, 160, 124, - 127, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 82, 115, 0, 94, 0, 91, 53, - 0, 118, 67, 62, 60, 61, 0, 0, 56, 0, - 0, 0, 17, 16, 0, 0, 22, 0, 74, 0, - 0, 166, 0, 125, 0, 0, 0, 131, 0, 0, - 126, 0, 122, 12, 93, 101, 100, 0, 90, 52, - 59, 0, 0, 0, 0, 0, 0, 70, 73, 171, - 128, 137, 133, 0, 0, 135, 130, 134, 92, 98, - 97, 99, 0, 0, 72, 0, 0, 0, 0, 132, - 96, 57, 0, 0, 0, 0, 136, 11, 71, 13, - 0, 15, 0, 14 + 0, 0, 25, 5, 10, 86, 0, 0, 0, 0, + 57, 56, 3, 2, 8, 7, 52, 0, 121, 0, + 119, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 115, 107, 91, 85, 116, 108, 0, + 0, 118, 0, 0, 169, 170, 0, 0, 110, 0, + 44, 45, 46, 29, 28, 27, 31, 35, 38, 40, + 43, 30, 49, 50, 32, 33, 26, 47, 48, 34, + 37, 39, 41, 42, 82, 0, 0, 0, 0, 0, + 125, 0, 88, 0, 0, 97, 0, 0, 9, 53, + 0, 114, 0, 65, 0, 0, 0, 60, 0, 0, + 18, 0, 0, 0, 0, 23, 21, 0, 71, 0, + 67, 0, 163, 0, 174, 77, 164, 0, 0, 166, + 165, 162, 126, 129, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 84, 117, 0, 96, + 0, 93, 55, 0, 120, 69, 64, 62, 63, 0, + 0, 58, 0, 0, 0, 17, 16, 0, 0, 0, + 24, 0, 76, 0, 0, 168, 0, 127, 0, 0, + 0, 133, 0, 0, 128, 0, 124, 12, 95, 103, + 102, 0, 92, 54, 61, 0, 0, 0, 0, 0, + 0, 0, 19, 72, 75, 173, 130, 139, 135, 0, + 0, 137, 132, 136, 94, 100, 99, 101, 0, 0, + 74, 0, 0, 0, 0, 0, 134, 98, 59, 0, + 0, 0, 0, 20, 138, 11, 73, 13, 0, 15, + 0, 14 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -162, -162, -162, 172, 86, -1, -162, -162, 177, -11, - -162, -46, 5, -162, -162, 81, -111, -143, -4, -162, - 16, -162, -7, -161, -162, -162, -62, -18, -120, -162 + -146, -146, -146, 168, 77, -1, -146, -146, 172, -12, + -146, -56, 5, -146, -146, 73, -125, -145, -4, -146, + 7, -146, -17, -119, -146, -146, -72, -19, -143, -146 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 31, 121, 113, 32, 33, 118, 25, - 204, 205, 26, 46, 130, 140, 263, 221, 27, 128, - 129, 186, 187, 188, 231, 237, 238, 84, 85, 86 + -1, 2, 3, 31, 122, 114, 32, 33, 119, 25, + 206, 207, 26, 47, 131, 142, 266, 224, 27, 129, + 130, 188, 189, 190, 234, 240, 241, 85, 86, 87 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -921,328 +923,354 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 24, 44, 71, 28, 74, 279, 114, 223, 40, 41, - 39, 226, 227, 42, 115, 74, 147, 47, 49, 249, - 123, 78, 114, 230, 272, 280, 75, 219, 83, 147, - 122, 148, 126, 127, 119, 119, 149, 228, 198, 183, - 17, 199, 273, 184, 148, 185, 108, 109, 110, 131, - 111, 17, 132, 215, 216, 256, 217, 114, 257, 29, - 30, 114, 1, 45, 153, 135, 34, 116, 117, 136, - 215, 216, 35, 252, 36, 189, 37, 268, 250, 282, - 151, 38, 271, 116, 117, 43, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 133, 300, 123, 301, 302, 201, 194, 305, 116, 117, - 307, 190, 116, 117, 137, 138, 298, 299, 210, 211, - 139, 206, 141, 209, 143, 144, 213, 145, 150, 154, - 156, 155, 157, 319, 222, 182, 222, 195, 207, 214, - 222, 222, 83, 202, 225, 229, 111, 326, 240, 241, - -121, 243, 83, 246, 253, 244, 259, 239, 264, 4, - 5, 6, 7, 8, 203, 265, 269, 270, 277, 4, - 5, 6, 7, 8, 289, 255, -120, 274, 242, 275, - 236, 245, 288, 278, 281, 291, 16, 127, 308, 309, - 292, 304, 310, 320, 124, 318, 16, 120, 17, 196, - 290, 200, 328, 266, 251, 267, 222, 306, 17, 0, - 220, 222, 0, 0, 0, -159, -159, 19, 20, 0, - 0, 21, 22, 276, 23, 0, 0, 19, 20, 0, - 283, 21, 22, 0, 23, 0, 287, 0, 0, 0, - 0, 0, 0, 0, -159, -159, 0, 0, 0, 293, - 294, 239, 0, 295, 296, 222, 222, -159, -159, 106, - 107, 108, 109, 110, 0, 111, 0, 0, 0, 0, - 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, - 312, 313, 0, 0, 0, 0, 0, -76, 72, 0, - 0, 73, -76, 0, 74, 0, -76, -76, -76, -76, - -76, 0, 0, 0, 323, 324, 325, -76, -76, -76, - 0, 327, -76, -76, -76, 0, -76, 0, 0, 332, - -76, -76, -76, -76, -76, -76, -76, -76, 0, 0, - 17, 0, 0, -76, 0, 0, -76, -76, -76, -76, - -76, -76, -76, -76, -76, -76, 0, -76, -76, 0, - 0, -76, -76, -76, -76, -76, 79, -76, 0, 80, - 88, 89, 74, 0, 0, 0, 0, 0, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 0, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 0, 0, 0, 0, 0, 218, 81, 82, 80, - 0, 0, 74, 0, 0, -158, 0, 0, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 17, 0, - 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, - 9, 10, 0, 0, 0, 11, 0, 81, 82, 12, - 13, 0, 0, 0, 14, -158, 15, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 19, 20, - 0, 192, 21, 22, 193, 23, 76, 0, 0, 4, - 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, - 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 0, 15, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 19, 20, 0, - 0, 21, 22, 77, 23, 48, 0, 0, 4, 5, + 24, 72, 75, 45, 203, 283, 222, 226, 40, 41, + 39, 229, 230, 43, 115, 252, 231, 48, 50, 124, + 75, 79, 116, 115, 149, 284, 76, 276, 84, 28, + 123, 136, 127, 128, 120, 120, 149, 132, 17, 150, + 133, 138, 204, 185, 151, 277, 1, 186, 37, 187, + 200, 150, 115, 201, 115, 34, 17, 109, 110, 111, + 137, 112, 191, 205, 155, 46, 35, 233, 218, 219, + 36, 220, 29, 30, 253, 117, 118, 38, 272, 218, + 219, 153, 255, 275, 117, 118, 44, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 134, 124, 117, 118, 117, 118, 196, 259, 212, + 213, 260, 192, 139, 286, 140, 141, 143, 304, 305, + 145, 146, 208, 147, 211, 152, 158, 156, 216, 157, + 159, 184, 209, 197, 217, 228, 225, 112, 225, 232, + 243, 244, 225, 225, 84, -123, 246, 306, 249, 307, + 308, 247, 256, 311, 84, 262, 313, 267, 242, 4, + 5, 6, 7, 8, 268, 273, 274, 281, 278, 292, + 279, 282, 285, 293, -122, 295, 258, 314, 296, 310, + 245, 326, 239, 248, 315, 316, 16, 325, 327, 128, + 125, 198, 121, 294, 202, 336, 334, 254, 17, 89, + 90, 312, 0, 269, 0, 0, 270, 0, 271, 225, + 223, 0, 0, 0, 225, 92, 0, 19, 20, 0, + 0, 21, 22, 0, 23, 0, 280, 0, 100, 101, + 0, 0, 0, 287, 0, 0, 0, 0, 0, 291, + 0, 105, 106, 107, 108, 109, 110, 111, 0, 112, + 0, 0, 297, 298, 242, 0, 299, 300, 0, 225, + 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, + 0, 0, 0, 0, 318, 319, 0, 0, 0, 0, + 324, 0, 0, 0, 0, -78, 73, 0, 0, 74, + -78, 0, 75, 0, -78, -78, -78, -78, -78, 0, + 330, 331, 332, 0, 0, -78, -78, -78, 335, 0, + -78, -78, -78, 0, -78, 0, 0, 340, -78, -78, + -78, -78, -78, -78, -78, -78, 0, 0, 17, 0, + 0, -78, 0, 0, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, 0, -78, -78, 0, 0, -78, + -78, -78, -78, -78, 80, -78, 0, 81, -161, -161, + 75, 0, 0, 0, 0, 0, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 0, -161, -161, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + -161, -161, 107, 108, 109, 110, 111, 0, 112, 0, + 0, 0, 0, 0, 221, 82, 83, 81, 0, 0, + 75, 0, 0, -160, 0, 0, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 17, 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 10, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 0, 15, 16, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 82, 83, 12, 13, 0, + 0, 0, 14, -160, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, - 21, 22, 208, 23, 0, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, - 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 19, 20, 0, 0, 21, 22, 212, - 23, 0, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 19, 20, 0, 194, + 21, 22, 195, 23, 77, 0, 0, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 0, 9, 10, 0, + 0, 0, 11, 100, 101, 0, 12, 13, 0, 0, + 0, 14, 0, 15, 16, 0, 105, 106, 107, 108, + 109, 110, 111, 0, 112, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 19, 20, 0, 0, 21, + 22, 78, 23, 49, 0, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 4, 5, 6, 7, 8, 0, 18, 0, 0, + 0, 0, 0, 0, 19, 20, 0, 0, 21, 22, + 210, 23, 0, 4, 5, 6, 7, 8, 16, 0, + 0, 0, 0, 9, 10, 0, 0, 0, 11, 0, + 17, 0, 12, 13, 0, 0, 0, 14, 0, 15, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 20, 0, 17, 21, 22, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 19, 20, 0, 0, 21, 22, 215, 23, 0, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 9, 10, 0, 0, 0, 11, 0, 0, 0, 12, + 13, 0, 0, 0, 14, 0, 15, 16, 0, 0, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 17, + 9, 10, 0, 0, 0, 11, 0, 0, 0, 12, + 13, 18, 0, 0, 14, 0, 15, 16, 19, 20, + 0, 0, 21, 22, 0, 23, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 126, 19, 20, + 0, 0, 21, 22, 0, 23, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 0, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 17, 9, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 18, 0, 0, + 14, 0, 15, 16, 19, 20, 0, 0, 21, 22, + 290, 23, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 19, 20, 0, 0, 21, 22, + 0, 23, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, - 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 17, 9, 10, 0, 0, 0, 11, 0, 0, - 0, 12, 13, 18, 0, 0, 14, 0, 15, 16, - 19, 20, 0, 0, 21, 22, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 125, - 19, 20, 0, 0, 21, 22, 0, 23, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 0, 9, 10, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 0, 15, 16, 0, 0, 4, 5, - 6, 7, 8, 0, 0, 0, 0, 17, 9, 10, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 18, - 0, 0, 14, 0, 15, 16, 19, 20, 0, 0, - 21, 22, 286, 23, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 232, 0, 0, 233, 19, 20, 74, 0, - 21, 22, 0, 23, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 87, 88, - 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 234, 235, 91, 92, 0, 0, 0, - 0, 0, 93, 94, 95, 96, 97, 98, 99, 100, - 0, 0, 0, 0, 87, 88, 89, 90, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, - 0, 91, 92, 0, 247, 0, 0, 248, 93, 94, - 95, 96, 97, 98, 99, 100, 0, 0, 0, 0, - 87, 88, 89, 90, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 0, 111, 0, 91, 92, 0, - 0, 0, 0, 146, 93, 94, 95, 96, 97, 98, - 99, 100, 0, 0, 0, 0, 87, 88, 89, 90, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 0, 111, 0, 91, 92, 0, 0, 0, 0, 284, - 93, 94, 95, 96, 97, 98, 99, 100, 0, 0, - 0, 0, 87, 88, 89, 90, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 0, 111, 0, 91, - 92, 0, 0, 0, 0, 285, 93, 94, 95, 96, - 97, 98, 99, 100, 0, 0, 0, 0, 87, 88, - 89, 90, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 0, 111, 0, 91, 92, 0, 0, 0, - 0, 311, 93, 94, 95, 96, 97, 98, 99, 100, - 0, 0, 0, 0, 87, 88, 89, 90, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, - 330, 91, 92, 331, 0, 0, 0, 0, 93, 94, - 95, 96, 97, 98, 99, 100, 0, 0, 0, 87, - 88, 89, 90, 0, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 0, 111, 91, 92, 0, 142, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 0, 0, 0, 87, 88, 89, 90, 0, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 91, 92, 0, 224, 0, 0, 0, 93, 94, - 95, 96, 97, 98, 99, 100, 0, 0, 0, 87, - 88, 89, 90, 0, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 0, 111, 91, 92, 0, 303, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 0, 0, 0, 87, 88, 89, 90, 0, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 91, 92, 0, 329, 0, 0, 0, 93, 94, - 95, 96, 97, 98, 99, 100, 0, 0, 0, 87, - 88, 89, 90, 0, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 0, 111, 91, 92, 0, 333, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 0, 0, 0, 0, 87, 88, 89, 90, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 112, 91, 92, 0, 0, 0, 0, 0, 93, - 94, 95, 96, 97, 98, 99, 100, 0, 0, 0, - 0, 87, 88, 89, 90, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 0, 111, 197, 91, 92, - 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, - 98, 99, 100, 0, 0, 0, 0, 87, 88, 89, - 90, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 0, 111, 258, 91, 92, 0, 0, 0, 0, - 0, 93, 94, 95, 96, 97, 98, 99, 100, 0, - 0, 0, 0, 87, 88, 89, 90, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 0, 111, 316, - 91, 92, 0, 0, 0, 0, 0, 93, 94, 95, - 96, 97, 98, 99, 100, 0, 0, 0, 0, 87, - 88, 89, 90, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 0, 111, 317, 91, 92, 0, 0, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 0, 0, 0, 0, 87, 88, 89, 90, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 321, 91, 92, 0, 0, 0, 0, 0, 93, - 94, 95, 96, 97, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 0, 111, 322, 87, 88, - 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, - 260, 261, 0, 0, 262, 91, 92, 0, 0, 0, - 0, 0, 93, 94, 95, 96, 97, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, - 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 260, 261, 0, 0, 0, 91, 92, 0, - 0, 0, 0, 0, 93, 94, 95, 96, 97, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 0, 111, 87, 88, 89, 90, 0, 0, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 0, 0, 91, - 92, 0, 0, 0, 0, 0, 93, 94, 95, 96, - 97, 98, 99, 100, 0, 0, 0, 87, 88, 89, - 90, 0, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 0, 111, 91, 92, 0, 0, 0, 0, - 0, 93, 94, 95, 96, 97, 98, 99, 100, 0, - 0, 0, 0, 0, 297, 0, 0, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 0, 111, 87, - 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 314, 91, 92, 0, 0, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, - 111, 87, 88, 89, 90, 0, 0, 0, 0, 0, - 0, 0, 315, 0, 0, 0, 0, 0, 91, 92, - 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, - 98, 99, 100, 0, 0, 0, 87, 88, 89, 90, - 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 0, 111, 91, 92, 0, 0, 0, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 0, 0, - 0, 87, 88, 89, 90, 0, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 0, 111, 91, 92, - 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, - 98, 99, 100, 0, 0, 0, -159, 88, 89, 0, - 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, - 110, 0, 111, 91, 92, 0, 0, 0, 0, 0, - -159, -159, -159, -159, -159, -159, 99, 100, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 0, -159, 104, - 105, 106, 107, 108, 109, 110, 91, 111, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 105, 106, 107, 108, 109, 110, 50, - 111, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, + 0, 0, 0, 18, 0, 0, 235, 0, 0, 236, + 42, 20, 75, 0, 21, 22, 0, 23, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70 + 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 88, 89, 90, 91, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 92, + 93, 0, 0, 0, 0, 0, 94, 95, 96, 97, + 98, 99, 100, 101, 0, 0, 0, 0, 88, 89, + 90, 91, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 0, 112, 0, 92, 93, 0, 250, 0, + 0, 251, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 0, 0, 0, 88, 89, 90, 91, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 0, 112, + 0, 92, 93, 0, 0, 0, 0, 148, 94, 95, + 96, 97, 98, 99, 100, 101, 0, 0, 0, 0, + 88, 89, 90, 91, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 0, 112, 0, 92, 93, 0, + 0, 0, 0, 288, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 0, 88, 89, 90, 91, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 0, 92, 93, 0, 0, 0, 0, 289, + 94, 95, 96, 97, 98, 99, 100, 101, 0, 0, + 0, 0, 88, 89, 90, 91, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 0, 112, 0, 92, + 93, 0, 0, 0, 0, 317, 94, 95, 96, 97, + 98, 99, 100, 101, 0, 0, 0, 0, 88, 89, + 90, 91, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 0, 112, 214, 92, 93, 144, 0, 0, + 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 0, 0, 0, 88, 89, 90, 91, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 0, 112, + 301, 92, 93, 302, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 0, 0, 0, 0, + 88, 89, 90, 91, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 0, 112, 338, 92, 93, 339, + 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 88, 89, 90, 91, 0, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 92, 93, 0, 144, 0, 0, 0, 94, + 95, 96, 97, 98, 99, 100, 101, 0, 0, 0, + 88, 89, 90, 91, 0, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 0, 112, 92, 93, 0, + 227, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 88, 89, 90, 91, 0, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 92, 93, 0, 309, 0, 0, 0, 94, + 95, 96, 97, 98, 99, 100, 101, 0, 0, 0, + 88, 89, 90, 91, 0, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 0, 112, 92, 93, 0, + 333, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 88, 89, 90, 91, 0, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 92, 93, 0, 337, 0, 0, 0, 94, + 95, 96, 97, 98, 99, 100, 101, 0, 0, 0, + 88, 89, 90, 91, 0, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 0, 112, 92, 93, 0, + 341, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 0, 88, 89, 90, 91, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 113, 92, 93, 0, 0, 0, 0, 0, + 94, 95, 96, 97, 98, 99, 100, 101, 0, 0, + 0, 0, 88, 89, 90, 91, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 0, 112, 199, 92, + 93, 0, 0, 0, 0, 0, 94, 95, 96, 97, + 98, 99, 100, 101, 0, 0, 0, 0, 88, 89, + 90, 91, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 0, 112, 261, 92, 93, 0, 0, 0, + 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 0, 0, 0, 88, 89, 90, 91, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 0, 112, + 322, 92, 93, 0, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 0, 0, 0, 0, + 88, 89, 90, 91, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 0, 112, 323, 92, 93, 0, + 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 0, 88, 89, 90, 91, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 328, 92, 93, 0, 0, 0, 0, 0, + 94, 95, 96, 97, 98, 99, 100, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 0, 112, 329, 88, + 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 264, 0, 0, 265, 92, 93, 0, 0, + 0, 0, 0, 94, 95, 96, 97, 98, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, + 112, 88, 89, 90, 91, 0, 0, 0, 0, 0, + 0, 0, 0, 263, 264, 0, 0, 0, 92, 93, + 0, 0, 0, 0, 0, 94, 95, 96, 97, 98, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 0, 112, 88, 89, 90, 91, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 92, 93, 0, 0, 0, 0, 0, 94, 95, 96, + 97, 98, 99, 100, 101, 0, 0, 0, 88, 89, + 90, 91, 0, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 0, 112, 92, 93, 0, 0, 0, + 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 0, 0, 0, 0, 303, 0, 0, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 0, 112, + 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 92, 93, 0, + 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 88, 89, 90, 91, 0, 0, 0, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 92, + 93, 0, 0, 0, 0, 0, 94, 95, 96, 97, + 98, 99, 100, 101, 0, 0, 0, 88, 89, 90, + 91, 0, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 0, 112, 92, 93, 0, 0, 0, 0, + 0, 94, 95, 96, 97, 98, 99, 100, 101, 0, + 0, 0, 88, 89, 90, 91, 0, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 0, 112, 92, + 93, 0, 0, 0, 0, 0, 94, 95, 96, 97, + 98, 99, 100, 101, 0, 0, 0, -161, 89, 90, + 0, 0, 0, 0, 104, 105, 106, 107, 108, 109, + 110, 111, 0, 112, 92, 93, 0, 0, 0, 0, + 0, -161, -161, -161, -161, -161, -161, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, + 105, 106, 107, 108, 109, 110, 111, 51, 112, 0, + 0, 0, 0, 0, 0, 0, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 154, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 257, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71 }; static const yytype_int16 yycheck[] = { - 1, 1, 20, 0, 7, 50, 5, 150, 12, 13, - 11, 154, 155, 14, 13, 7, 50, 18, 19, 4, - 31, 22, 5, 184, 50, 70, 21, 147, 23, 50, - 31, 65, 33, 34, 29, 30, 70, 157, 61, 63, - 43, 64, 68, 67, 65, 69, 56, 57, 58, 62, - 60, 43, 65, 44, 45, 61, 47, 5, 64, 17, - 18, 5, 16, 63, 82, 13, 62, 66, 67, 13, - 44, 45, 60, 47, 43, 67, 4, 220, 63, 240, - 81, 62, 225, 66, 67, 63, 87, 88, 89, 90, + 1, 20, 7, 1, 4, 50, 149, 152, 12, 13, + 11, 156, 157, 14, 5, 4, 159, 18, 19, 31, + 7, 22, 13, 5, 50, 70, 21, 50, 23, 0, + 31, 13, 33, 34, 29, 30, 50, 62, 43, 65, + 65, 42, 42, 63, 70, 68, 16, 67, 4, 69, + 61, 65, 5, 64, 5, 62, 43, 56, 57, 58, + 13, 60, 67, 63, 83, 63, 60, 186, 44, 45, + 43, 47, 17, 18, 63, 66, 67, 62, 223, 44, + 45, 82, 47, 228, 66, 67, 63, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 63, 272, 123, 274, 275, 4, 117, 278, 66, 67, - 281, 116, 66, 67, 29, 4, 269, 270, 135, 136, - 4, 132, 64, 134, 1, 60, 137, 68, 65, 65, - 70, 65, 50, 304, 148, 60, 150, 13, 64, 49, - 154, 155, 147, 42, 65, 4, 60, 318, 41, 49, - 41, 60, 157, 60, 4, 68, 4, 185, 62, 4, - 5, 6, 7, 8, 63, 62, 49, 65, 4, 4, - 5, 6, 7, 8, 4, 203, 41, 65, 189, 65, - 185, 192, 60, 65, 65, 65, 31, 198, 60, 60, - 65, 65, 60, 60, 32, 65, 31, 30, 43, 123, - 256, 130, 323, 214, 198, 216, 220, 279, 43, -1, - 55, 225, -1, -1, -1, 10, 11, 62, 63, -1, - -1, 66, 67, 234, 69, -1, -1, 62, 63, -1, - 241, 66, 67, -1, 69, -1, 247, -1, -1, -1, - -1, -1, -1, -1, 39, 40, -1, -1, -1, 260, - 261, 279, -1, 264, 265, 269, 270, 52, 53, 54, - 55, 56, 57, 58, -1, 60, -1, -1, -1, -1, - -1, -1, -1, -1, 279, -1, -1, -1, -1, -1, - 291, 292, -1, -1, -1, -1, -1, 0, 1, -1, - -1, 4, 5, -1, 7, -1, 9, 10, 11, 12, - 13, -1, -1, -1, 315, 316, 317, 20, 21, 22, - -1, 322, 25, 26, 27, -1, 29, -1, -1, 330, - 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, - 43, -1, -1, 46, -1, -1, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, -1, 60, 61, -1, - -1, 64, 65, 66, 67, 68, 1, 70, -1, 4, - 10, 11, 7, -1, -1, -1, -1, -1, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 39, - 40, -1, -1, -1, -1, -1, -1, -1, 43, -1, - -1, -1, 52, 53, 54, 55, 56, 57, 58, -1, - 60, -1, -1, -1, -1, -1, 1, 62, 63, 4, - -1, -1, 7, -1, -1, 70, -1, -1, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1, 43, -1, - 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, - 14, 15, -1, -1, -1, 19, -1, 62, 63, 23, - 24, -1, -1, -1, 28, 70, 30, 31, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 55, -1, -1, -1, -1, -1, -1, 62, 63, - -1, 65, 66, 67, 68, 69, 1, -1, -1, 4, - 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, - 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, - -1, -1, -1, 28, -1, 30, 31, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, -1, -1, -1, -1, -1, -1, 62, 63, -1, - -1, 66, 67, 68, 69, 1, -1, -1, 4, 5, + 111, 63, 124, 66, 67, 66, 67, 118, 61, 136, + 137, 64, 117, 29, 243, 4, 4, 64, 273, 274, + 1, 60, 133, 68, 135, 65, 70, 65, 139, 65, + 50, 60, 64, 13, 49, 65, 150, 60, 152, 4, + 41, 49, 156, 157, 149, 41, 60, 276, 60, 278, + 279, 68, 4, 282, 159, 4, 285, 62, 187, 4, + 5, 6, 7, 8, 62, 49, 65, 4, 65, 60, + 65, 65, 65, 4, 41, 65, 205, 60, 65, 65, + 191, 310, 187, 194, 60, 60, 31, 65, 60, 200, + 32, 124, 30, 259, 131, 330, 325, 200, 43, 10, + 11, 283, -1, 214, -1, -1, 217, -1, 219, 223, + 55, -1, -1, -1, 228, 26, -1, 62, 63, -1, + -1, 66, 67, -1, 69, -1, 237, -1, 39, 40, + -1, -1, -1, 244, -1, -1, -1, -1, -1, 250, + -1, 52, 53, 54, 55, 56, 57, 58, -1, 60, + -1, -1, 263, 264, 283, -1, 267, 268, -1, 273, + 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 283, -1, + -1, -1, -1, -1, 295, 296, -1, -1, -1, -1, + 301, -1, -1, -1, -1, 0, 1, -1, -1, 4, + 5, -1, 7, -1, 9, 10, 11, 12, 13, -1, + 321, 322, 323, -1, -1, 20, 21, 22, 329, -1, + 25, 26, 27, -1, 29, -1, -1, 338, 33, 34, + 35, 36, 37, 38, 39, 40, -1, -1, 43, -1, + -1, 46, -1, -1, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, -1, -1, 64, + 65, 66, 67, 68, 1, 70, -1, 4, 10, 11, + 7, -1, -1, -1, -1, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 39, 40, -1, + -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, + 52, 53, 54, 55, 56, 57, 58, -1, 60, -1, + -1, -1, -1, -1, 1, 62, 63, 4, -1, -1, + 7, -1, -1, 70, -1, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1, 43, -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, 15, - -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, - -1, -1, 28, -1, 30, 31, -1, -1, -1, -1, + -1, -1, -1, 19, -1, 62, 63, 23, 24, -1, + -1, -1, 28, 70, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, - -1, -1, -1, -1, -1, -1, 62, 63, -1, -1, - 66, 67, 1, 69, -1, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 14, 15, -1, -1, -1, - 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, - -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, - -1, -1, -1, 62, 63, -1, -1, 66, 67, 1, - 69, -1, 4, 5, 6, 7, 8, -1, -1, -1, + -1, -1, -1, -1, 10, 11, 62, 63, -1, 65, + 66, 67, 68, 69, 1, -1, -1, 4, 5, 6, + 7, 8, -1, -1, -1, -1, -1, 14, 15, -1, + -1, -1, 19, 39, 40, -1, 23, 24, -1, -1, + -1, 28, -1, 30, 31, -1, 52, 53, 54, 55, + 56, 57, 58, -1, 60, -1, 43, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, + -1, -1, -1, -1, -1, 62, 63, -1, -1, 66, + 67, 68, 69, 1, -1, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, 15, -1, -1, + -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, + 28, -1, 30, 31, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, + -1, 4, 5, 6, 7, 8, -1, 55, -1, -1, + -1, -1, -1, -1, 62, 63, -1, -1, 66, 67, + 1, 69, -1, 4, 5, 6, 7, 8, 31, -1, + -1, -1, -1, 14, 15, -1, -1, -1, 19, -1, + 43, -1, 23, 24, -1, -1, -1, 28, -1, 30, + 31, -1, -1, -1, -1, -1, -1, -1, -1, 62, + 63, -1, 43, 66, 67, -1, 69, -1, -1, -1, + -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, + -1, 62, 63, -1, -1, 66, 67, 1, 69, -1, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 14, 15, -1, -1, -1, 19, -1, -1, -1, 23, + 24, -1, -1, -1, 28, -1, 30, 31, -1, -1, + 4, 5, 6, 7, 8, -1, -1, -1, -1, 43, + 14, 15, -1, -1, -1, 19, -1, -1, -1, 23, + 24, 55, -1, -1, 28, -1, 30, 31, 62, 63, + -1, -1, 66, 67, -1, 69, -1, -1, -1, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 55, -1, -1, -1, -1, -1, 61, 62, 63, + -1, -1, 66, 67, -1, 69, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, 15, -1, -1, + -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, + 28, -1, 30, 31, -1, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, 43, 14, 15, -1, -1, + -1, 19, -1, -1, -1, 23, 24, 55, -1, -1, + 28, -1, 30, 31, 62, 63, -1, -1, 66, 67, + 68, 69, -1, -1, -1, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, + -1, -1, -1, -1, 62, 63, -1, -1, 66, 67, + -1, 69, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, -1, 30, 31, - -1, -1, 4, 5, 6, 7, 8, -1, -1, -1, - -1, 43, 14, 15, -1, -1, -1, 19, -1, -1, - -1, 23, 24, 55, -1, -1, 28, -1, 30, 31, - 62, 63, -1, -1, 66, 67, -1, 69, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 55, -1, -1, -1, -1, -1, 61, - 62, 63, -1, -1, 66, 67, -1, 69, 4, 5, - 6, 7, 8, -1, -1, -1, -1, -1, 14, 15, - -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, - -1, -1, 28, -1, 30, 31, -1, -1, 4, 5, - 6, 7, 8, -1, -1, -1, -1, 43, 14, 15, - -1, -1, -1, 19, -1, -1, -1, 23, 24, 55, - -1, -1, 28, -1, 30, 31, 62, 63, -1, -1, - 66, 67, 68, 69, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, - -1, -1, 1, -1, -1, 4, 62, 63, 7, -1, - 66, 67, -1, 69, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, -1, -1, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 62, 63, 26, 27, -1, -1, -1, - -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, + -1, -1, -1, 55, -1, -1, 1, -1, -1, 4, + 62, 63, 7, -1, 66, 67, -1, 69, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, + -1, -1, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 62, 63, 26, + 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, + 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, + 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, -1, 26, 27, -1, 65, -1, + -1, 68, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, - -1, 26, 27, -1, 65, -1, -1, 68, 33, 34, + -1, 26, 27, -1, -1, -1, -1, 68, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, -1, 26, 27, -1, @@ -1256,60 +1284,81 @@ static const yytype_int16 yycheck[] = 27, -1, -1, -1, -1, 68, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, -1, 60, -1, 26, 27, -1, -1, -1, - -1, 68, 33, 34, 35, 36, 37, 38, 39, 40, + 57, 58, -1, 60, 61, 26, 27, 64, -1, -1, + -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 26, 27, 64, -1, -1, -1, -1, 33, 34, - 35, 36, 37, 38, 39, 40, -1, -1, -1, 9, - 10, 11, 12, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, 60, 26, 27, -1, 64, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, -1, 9, 10, 11, 12, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - 60, 26, 27, -1, 64, -1, -1, -1, 33, 34, - 35, 36, 37, 38, 39, 40, -1, -1, -1, 9, - 10, 11, 12, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, 60, 26, 27, -1, 64, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, -1, 9, 10, 11, 12, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - 60, 26, 27, -1, 64, -1, -1, -1, 33, 34, - 35, 36, 37, 38, 39, 40, -1, -1, -1, 9, - 10, 11, 12, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, 60, 26, 27, -1, 64, + 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, + 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 26, 27, 64, + -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, 9, 10, 11, 12, -1, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 26, 27, -1, 64, -1, -1, -1, 33, + 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, + 9, 10, 11, 12, -1, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 26, 27, -1, + 64, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, 9, 10, 11, 12, -1, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 26, 27, -1, 64, -1, -1, -1, 33, + 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, + 9, 10, 11, 12, -1, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 26, 27, -1, + 64, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, 9, 10, 11, 12, -1, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 26, 27, -1, 64, -1, -1, -1, 33, + 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, + 9, 10, 11, 12, -1, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 26, 27, -1, + 64, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 61, 26, 27, -1, -1, -1, -1, -1, + 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, + -1, -1, 9, 10, 11, 12, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 26, + 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, + 37, 38, 39, 40, -1, -1, -1, -1, 9, 10, + 11, 12, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, 61, 26, 27, -1, -1, -1, + -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, + -1, -1, -1, -1, 9, 10, 11, 12, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 26, 27, -1, -1, -1, -1, -1, 33, 34, + 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, + 9, 10, 11, 12, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 26, 27, -1, + -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, -1, 9, 10, 11, 12, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 61, 26, 27, -1, -1, -1, -1, -1, + 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, + -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, 21, 22, -1, -1, 25, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, + 40, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - 60, 61, 26, 27, -1, -1, -1, -1, -1, 33, - 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, - -1, 9, 10, 11, 12, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, -1, 60, 61, 26, 27, + 60, 9, 10, 11, 12, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, -1, -1, -1, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, -1, -1, 9, 10, 11, - 12, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, 60, 61, 26, 27, -1, -1, -1, -1, - -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, - -1, -1, -1, 9, 10, 11, 12, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, + 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, + -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, 9, 10, 11, 12, -1, -1, -1, + -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, -1, -1, 9, - 10, 11, 12, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, -1, 60, 61, 26, 27, -1, -1, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, -1, -1, 9, 10, 11, 12, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - 60, 61, 26, 27, -1, -1, -1, -1, -1, 33, - 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, - -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, -1, 60, 61, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, -1, -1, 25, 26, 27, -1, -1, -1, + 36, 37, 38, 39, 40, -1, -1, -1, 9, 10, + 11, 12, -1, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, - -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, + -1, -1, -1, -1, -1, 46, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - -1, -1, 21, 22, -1, -1, -1, 26, 27, -1, + -1, -1, -1, -1, -1, -1, 25, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, @@ -1320,41 +1369,24 @@ static const yytype_int16 yycheck[] = 12, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, - -1, -1, -1, -1, 46, -1, -1, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, 60, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 26, 27, -1, -1, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, -1, -1, -1, -1, -1, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - 60, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, 20, -1, -1, -1, -1, -1, 26, 27, - -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, -1, 9, 10, 11, 12, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, 60, 26, 27, -1, -1, -1, -1, -1, - 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, - -1, 9, 10, 11, 12, -1, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, -1, 60, 26, 27, - -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, -1, 9, 10, 11, -1, - -1, -1, -1, 51, 52, 53, 54, 55, 56, 57, - 58, -1, 60, 26, 27, -1, -1, -1, -1, -1, - 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, - 10, 11, -1, -1, -1, -1, -1, -1, 51, 52, - 53, 54, 55, 56, 57, 58, 26, 60, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, - 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 52, 53, 54, 55, 56, 57, 58, 4, - 60, -1, -1, -1, -1, -1, -1, -1, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 4, -1, - -1, -1, -1, -1, -1, -1, -1, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 4, -1, -1, + -1, -1, 9, 10, 11, 12, -1, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 26, + 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, + 37, 38, 39, 40, -1, -1, -1, 9, 10, 11, + -1, -1, -1, -1, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, 26, 27, -1, -1, -1, -1, + -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, + 52, 53, 54, 55, 56, 57, 58, 4, 60, -1, -1, -1, -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32 + 27, 28, 29, 30, 31, 32, 4, -1, -1, -1, + -1, -1, -1, -1, -1, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 4, -1, -1, -1, -1, + -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1365,36 +1397,37 @@ static const yytype_uint8 yystos[] = 15, 19, 23, 24, 28, 30, 31, 43, 55, 62, 63, 66, 67, 69, 76, 80, 83, 89, 0, 17, 18, 74, 77, 78, 62, 60, 43, 4, 62, 76, - 89, 89, 76, 63, 1, 63, 84, 76, 1, 76, - 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 98, 1, 4, 7, 83, 1, 68, 76, 1, - 4, 62, 63, 83, 98, 99, 100, 9, 10, 11, - 12, 26, 27, 33, 34, 35, 36, 37, 38, 39, - 40, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 60, 61, 76, 5, 13, 66, 67, 79, 83, - 79, 75, 76, 80, 74, 61, 76, 76, 90, 91, - 85, 62, 65, 63, 20, 13, 13, 29, 4, 4, - 86, 64, 64, 1, 60, 68, 68, 50, 65, 70, - 65, 76, 4, 98, 65, 65, 70, 50, 76, 76, + 89, 89, 62, 76, 63, 1, 63, 84, 76, 1, + 76, 4, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 98, 1, 4, 7, 83, 1, 68, 76, + 1, 4, 62, 63, 83, 98, 99, 100, 9, 10, + 11, 12, 26, 27, 33, 34, 35, 36, 37, 38, + 39, 40, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 60, 61, 76, 5, 13, 66, 67, 79, + 83, 79, 75, 76, 80, 74, 61, 76, 76, 90, + 91, 85, 62, 65, 63, 20, 13, 13, 76, 29, + 4, 4, 86, 64, 64, 1, 60, 68, 68, 50, + 65, 70, 65, 76, 4, 98, 65, 65, 70, 50, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 60, 63, 67, 69, 92, 93, 94, 67, - 83, 1, 65, 68, 76, 13, 75, 61, 61, 64, - 86, 4, 42, 63, 81, 82, 76, 64, 1, 76, - 93, 93, 1, 76, 49, 44, 45, 47, 1, 99, - 55, 88, 89, 88, 64, 65, 88, 88, 99, 4, - 94, 95, 1, 4, 62, 63, 83, 96, 97, 98, - 41, 49, 76, 60, 68, 76, 60, 65, 68, 4, - 63, 91, 47, 4, 4, 98, 61, 64, 61, 4, - 21, 22, 25, 87, 62, 62, 76, 76, 88, 49, - 65, 88, 50, 68, 65, 65, 76, 4, 65, 50, - 70, 65, 94, 76, 68, 68, 68, 76, 60, 4, - 82, 65, 65, 76, 76, 76, 76, 46, 88, 88, - 94, 94, 94, 64, 65, 94, 97, 94, 60, 60, - 60, 68, 76, 76, 25, 20, 61, 61, 65, 94, - 60, 61, 61, 76, 76, 76, 94, 76, 87, 64, - 61, 64, 76, 64 + 76, 76, 76, 76, 60, 63, 67, 69, 92, 93, + 94, 67, 83, 1, 65, 68, 76, 13, 75, 61, + 61, 64, 86, 4, 42, 63, 81, 82, 76, 64, + 1, 76, 93, 93, 61, 1, 76, 49, 44, 45, + 47, 1, 99, 55, 88, 89, 88, 64, 65, 88, + 88, 99, 4, 94, 95, 1, 4, 62, 63, 83, + 96, 97, 98, 41, 49, 76, 60, 68, 76, 60, + 65, 68, 4, 63, 91, 47, 4, 4, 98, 61, + 64, 61, 4, 21, 22, 25, 87, 62, 62, 76, + 76, 76, 88, 49, 65, 88, 50, 68, 65, 65, + 76, 4, 65, 50, 70, 65, 94, 76, 68, 68, + 68, 76, 60, 4, 82, 65, 65, 76, 76, 76, + 76, 61, 64, 46, 88, 88, 94, 94, 94, 64, + 65, 94, 97, 94, 60, 60, 60, 68, 76, 76, + 25, 20, 61, 61, 76, 65, 94, 60, 61, 61, + 76, 76, 76, 64, 94, 76, 87, 64, 61, 64, + 76, 64 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1405,42 +1438,42 @@ static const yytype_uint8 yyr1[] = 76, 76, 76, 76, 76, 76, 76, 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, 82, 82, 84, 83, 85, 83, 86, 86, - 86, 87, 87, 88, 88, 88, 89, 89, 89, 89, + 76, 76, 77, 77, 78, 78, 78, 79, 80, 80, + 81, 81, 82, 82, 82, 82, 84, 83, 85, 83, + 86, 86, 86, 87, 87, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 90, 90, 91, - 92, 92, 93, 93, 94, 94, 94, 95, 95, 96, - 96, 97, 97, 97, 97, 97, 97, 97, 98, 98, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, + 90, 91, 92, 92, 93, 93, 94, 94, 94, 95, + 95, 96, 96, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, - 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100 + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 3, 3, 0, 3, 0, 2, 0, 2, - 2, 9, 5, 9, 11, 9, 5, 5, 4, 4, - 2, 4, 5, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, - 2, 3, 5, 4, 2, 1, 5, 8, 1, 3, - 2, 2, 2, 1, 0, 4, 0, 5, 0, 2, - 4, 5, 3, 3, 2, 1, 1, 1, 3, 2, - 3, 2, 4, 3, 2, 1, 3, 2, 2, 3, - 5, 4, 6, 5, 4, 3, 7, 6, 6, 6, - 5, 5, 1, 1, 1, 3, 3, 2, 3, 2, - 2, 1, 4, 3, 3, 4, 3, 1, 3, 1, - 3, 1, 3, 1, 2, 3, 3, 1, 3, 1, - 3, 2, 4, 3, 3, 3, 5, 3, 1, 1, + 2, 9, 5, 9, 11, 9, 5, 5, 4, 6, + 8, 4, 2, 4, 5, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 2, 3, 5, 4, 2, 1, 5, 8, + 1, 3, 2, 2, 2, 1, 0, 4, 0, 5, + 0, 2, 4, 5, 3, 3, 2, 1, 1, 1, + 3, 2, 3, 2, 4, 3, 2, 1, 3, 2, + 2, 3, 5, 4, 6, 5, 4, 3, 7, 6, + 6, 6, 5, 5, 1, 1, 1, 3, 3, 2, + 3, 2, 2, 1, 4, 3, 3, 4, 3, 1, + 3, 1, 3, 1, 3, 1, 2, 3, 3, 1, + 3, 1, 3, 2, 4, 3, 3, 3, 5, 3, + 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, 0, 1, - 3, 3, 3, 3, 3, 1, 4, 2, 2, 1, - 1, 5, 3 + 0, 1, 3, 3, 3, 3, 3, 1, 4, 2, + 2, 1, 1, 5, 3 }; @@ -1943,187 +1976,187 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 4: /* IDENT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1947 "src/parser.c" /* yacc.c:1257 */ +#line 1980 "src/parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1953 "src/parser.c" /* yacc.c:1257 */ +#line 1986 "src/parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1959 "src/parser.c" /* yacc.c:1257 */ +#line 1992 "src/parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1965 "src/parser.c" /* yacc.c:1257 */ +#line 1998 "src/parser.c" /* yacc.c:1257 */ break; case 44: /* QQSTRING_TEXT */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1971 "src/parser.c" /* yacc.c:1257 */ +#line 2004 "src/parser.c" /* yacc.c:1257 */ break; case 73: /* Module */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1977 "src/parser.c" /* yacc.c:1257 */ +#line 2010 "src/parser.c" /* yacc.c:1257 */ break; case 74: /* Imports */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1983 "src/parser.c" /* yacc.c:1257 */ +#line 2016 "src/parser.c" /* yacc.c:1257 */ break; case 75: /* FuncDefs */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1989 "src/parser.c" /* yacc.c:1257 */ +#line 2022 "src/parser.c" /* yacc.c:1257 */ break; case 76: /* Exp */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1995 "src/parser.c" /* yacc.c:1257 */ +#line 2028 "src/parser.c" /* yacc.c:1257 */ break; case 77: /* Import */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2001 "src/parser.c" /* yacc.c:1257 */ +#line 2034 "src/parser.c" /* yacc.c:1257 */ break; case 78: /* ImportWhat */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2007 "src/parser.c" /* yacc.c:1257 */ +#line 2040 "src/parser.c" /* yacc.c:1257 */ break; case 79: /* ImportFrom */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2013 "src/parser.c" /* yacc.c:1257 */ +#line 2046 "src/parser.c" /* yacc.c:1257 */ break; case 80: /* FuncDef */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2019 "src/parser.c" /* yacc.c:1257 */ +#line 2052 "src/parser.c" /* yacc.c:1257 */ break; case 81: /* Params */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2025 "src/parser.c" /* yacc.c:1257 */ +#line 2058 "src/parser.c" /* yacc.c:1257 */ break; case 82: /* Param */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2031 "src/parser.c" /* yacc.c:1257 */ +#line 2064 "src/parser.c" /* yacc.c:1257 */ break; case 83: /* String */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2037 "src/parser.c" /* yacc.c:1257 */ +#line 2070 "src/parser.c" /* yacc.c:1257 */ break; case 86: /* QQString */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2043 "src/parser.c" /* yacc.c:1257 */ +#line 2076 "src/parser.c" /* yacc.c:1257 */ break; case 87: /* ElseBody */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2049 "src/parser.c" /* yacc.c:1257 */ +#line 2082 "src/parser.c" /* yacc.c:1257 */ break; case 88: /* ExpD */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2055 "src/parser.c" /* yacc.c:1257 */ +#line 2088 "src/parser.c" /* yacc.c:1257 */ break; case 89: /* Term */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2061 "src/parser.c" /* yacc.c:1257 */ +#line 2094 "src/parser.c" /* yacc.c:1257 */ break; case 90: /* Args */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2067 "src/parser.c" /* yacc.c:1257 */ +#line 2100 "src/parser.c" /* yacc.c:1257 */ break; case 91: /* Arg */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2073 "src/parser.c" /* yacc.c:1257 */ +#line 2106 "src/parser.c" /* yacc.c:1257 */ break; case 92: /* RepPatterns */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2079 "src/parser.c" /* yacc.c:1257 */ +#line 2112 "src/parser.c" /* yacc.c:1257 */ break; case 93: /* Patterns */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2085 "src/parser.c" /* yacc.c:1257 */ +#line 2118 "src/parser.c" /* yacc.c:1257 */ break; case 94: /* Pattern */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2091 "src/parser.c" /* yacc.c:1257 */ +#line 2124 "src/parser.c" /* yacc.c:1257 */ break; case 95: /* ArrayPats */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2097 "src/parser.c" /* yacc.c:1257 */ +#line 2130 "src/parser.c" /* yacc.c:1257 */ break; case 96: /* ObjPats */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2103 "src/parser.c" /* yacc.c:1257 */ +#line 2136 "src/parser.c" /* yacc.c:1257 */ break; case 97: /* ObjPat */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2109 "src/parser.c" /* yacc.c:1257 */ +#line 2142 "src/parser.c" /* yacc.c:1257 */ break; case 98: /* Keyword */ #line 36 "src/parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 2115 "src/parser.c" /* yacc.c:1257 */ +#line 2148 "src/parser.c" /* yacc.c:1257 */ break; case 99: /* MkDict */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2121 "src/parser.c" /* yacc.c:1257 */ +#line 2154 "src/parser.c" /* yacc.c:1257 */ break; case 100: /* MkDictPair */ #line 37 "src/parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2127 "src/parser.c" /* yacc.c:1257 */ +#line 2160 "src/parser.c" /* yacc.c:1257 */ break; @@ -2419,7 +2452,7 @@ YYLTYPE yylloc = yyloc_default; { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2423 "src/parser.c" /* yacc.c:1646 */ +#line 2456 "src/parser.c" /* yacc.c:1646 */ break; case 3: @@ -2427,7 +2460,7 @@ YYLTYPE yylloc = yyloc_default; { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2431 "src/parser.c" /* yacc.c:1646 */ +#line 2464 "src/parser.c" /* yacc.c:1646 */ break; case 4: @@ -2435,7 +2468,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_noop(); } -#line 2439 "src/parser.c" /* yacc.c:1646 */ +#line 2472 "src/parser.c" /* yacc.c:1646 */ break; case 5: @@ -2449,7 +2482,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2453 "src/parser.c" /* yacc.c:1646 */ +#line 2486 "src/parser.c" /* yacc.c:1646 */ break; case 6: @@ -2457,7 +2490,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_noop(); } -#line 2461 "src/parser.c" /* yacc.c:1646 */ +#line 2494 "src/parser.c" /* yacc.c:1646 */ break; case 7: @@ -2465,7 +2498,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2469 "src/parser.c" /* yacc.c:1646 */ +#line 2502 "src/parser.c" /* yacc.c:1646 */ break; case 8: @@ -2473,7 +2506,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_noop(); } -#line 2477 "src/parser.c" /* yacc.c:1646 */ +#line 2510 "src/parser.c" /* yacc.c:1646 */ break; case 9: @@ -2481,7 +2514,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = block_join((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2485 "src/parser.c" /* yacc.c:1646 */ +#line 2518 "src/parser.c" /* yacc.c:1646 */ break; case 10: @@ -2489,7 +2522,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2493 "src/parser.c" /* yacc.c:1646 */ +#line 2526 "src/parser.c" /* yacc.c:1646 */ break; case 11: @@ -2513,7 +2546,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = gen_destructure(coexp, covar, b); jv_free((yyvsp[-4].literal)); } -#line 2517 "src/parser.c" /* yacc.c:1646 */ +#line 2550 "src/parser.c" /* yacc.c:1646 */ break; case 12: @@ -2521,7 +2554,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2525 "src/parser.c" /* yacc.c:1646 */ +#line 2558 "src/parser.c" /* yacc.c:1646 */ break; case 13: @@ -2529,7 +2562,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2533 "src/parser.c" /* yacc.c:1646 */ +#line 2566 "src/parser.c" /* yacc.c:1646 */ break; case 14: @@ -2537,7 +2570,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2541 "src/parser.c" /* yacc.c:1646 */ +#line 2574 "src/parser.c" /* yacc.c:1646 */ break; case 15: @@ -2545,7 +2578,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2549 "src/parser.c" /* yacc.c:1646 */ +#line 2582 "src/parser.c" /* yacc.c:1646 */ break; case 16: @@ -2553,7 +2586,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2557 "src/parser.c" /* yacc.c:1646 */ +#line 2590 "src/parser.c" /* yacc.c:1646 */ break; case 17: @@ -2561,7 +2594,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2565 "src/parser.c" /* yacc.c:1646 */ +#line 2598 "src/parser.c" /* yacc.c:1646 */ break; case 18: @@ -2570,275 +2603,291 @@ YYLTYPE yylloc = yyloc_default; FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2574 "src/parser.c" /* yacc.c:1646 */ +#line 2607 "src/parser.c" /* yacc.c:1646 */ break; case 19: #line 396 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_try((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_try((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2582 "src/parser.c" /* yacc.c:1646 */ +#line 2615 "src/parser.c" /* yacc.c:1646 */ break; case 20: #line 399 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); + (yyval.blk) = BLOCK(gen_call("_try_finally", BLOCK(gen_lambda((yyvsp[-5].blk)), gen_lambda((yyvsp[-3].blk)), gen_lambda((yyvsp[-1].blk))))); } -#line 2590 "src/parser.c" /* yacc.c:1646 */ +#line 2623 "src/parser.c" /* yacc.c:1646 */ break; case 21: #line 402 "src/parser.y" /* yacc.c:1646 */ { + (yyval.blk) = gen_try((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 2631 "src/parser.c" /* yacc.c:1646 */ + break; + + case 22: +#line 405 "src/parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); +} +#line 2639 "src/parser.c" /* yacc.c:1646 */ + break; + + case 23: +#line 408 "src/parser.y" /* yacc.c:1646 */ + { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2599 "src/parser.c" /* yacc.c:1646 */ +#line 2648 "src/parser.c" /* yacc.c:1646 */ break; - case 22: -#line 407 "src/parser.y" /* yacc.c:1646 */ + case 24: +#line 413 "src/parser.y" /* yacc.c:1646 */ { 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 2610 "src/parser.c" /* yacc.c:1646 */ +#line 2659 "src/parser.c" /* yacc.c:1646 */ break; - case 23: -#line 414 "src/parser.y" /* yacc.c:1646 */ + case 25: +#line 420 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2618 "src/parser.c" /* yacc.c:1646 */ +#line 2667 "src/parser.c" /* yacc.c:1646 */ break; - case 24: -#line 418 "src/parser.y" /* yacc.c:1646 */ + case 26: +#line 424 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2626 "src/parser.c" /* yacc.c:1646 */ +#line 2675 "src/parser.c" /* yacc.c:1646 */ break; - case 25: -#line 422 "src/parser.y" /* yacc.c:1646 */ + case 27: +#line 428 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2634 "src/parser.c" /* yacc.c:1646 */ +#line 2683 "src/parser.c" /* yacc.c:1646 */ break; - case 26: -#line 426 "src/parser.y" /* yacc.c:1646 */ + case 28: +#line 432 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2642 "src/parser.c" /* yacc.c:1646 */ +#line 2691 "src/parser.c" /* yacc.c:1646 */ break; - case 27: -#line 430 "src/parser.y" /* yacc.c:1646 */ + case 29: +#line 436 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2650 "src/parser.c" /* yacc.c:1646 */ +#line 2699 "src/parser.c" /* yacc.c:1646 */ break; - case 28: -#line 434 "src/parser.y" /* yacc.c:1646 */ + case 30: +#line 440 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2658 "src/parser.c" /* yacc.c:1646 */ +#line 2707 "src/parser.c" /* yacc.c:1646 */ break; - case 29: -#line 438 "src/parser.y" /* yacc.c:1646 */ + case 31: +#line 444 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2666 "src/parser.c" /* yacc.c:1646 */ +#line 2715 "src/parser.c" /* yacc.c:1646 */ break; - case 30: -#line 442 "src/parser.y" /* yacc.c:1646 */ + case 32: +#line 448 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2674 "src/parser.c" /* yacc.c:1646 */ +#line 2723 "src/parser.c" /* yacc.c:1646 */ break; - case 31: -#line 446 "src/parser.y" /* yacc.c:1646 */ + case 33: +#line 452 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2682 "src/parser.c" /* yacc.c:1646 */ +#line 2731 "src/parser.c" /* yacc.c:1646 */ break; - case 32: -#line 450 "src/parser.y" /* yacc.c:1646 */ + case 34: +#line 456 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2690 "src/parser.c" /* yacc.c:1646 */ +#line 2739 "src/parser.c" /* yacc.c:1646 */ break; - case 33: -#line 454 "src/parser.y" /* yacc.c:1646 */ + case 35: +#line 460 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2698 "src/parser.c" /* yacc.c:1646 */ +#line 2747 "src/parser.c" /* yacc.c:1646 */ break; - case 34: -#line 458 "src/parser.y" /* yacc.c:1646 */ + case 36: +#line 464 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2706 "src/parser.c" /* yacc.c:1646 */ +#line 2755 "src/parser.c" /* yacc.c:1646 */ break; - case 35: -#line 462 "src/parser.y" /* yacc.c:1646 */ + case 37: +#line 468 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2714 "src/parser.c" /* yacc.c:1646 */ +#line 2763 "src/parser.c" /* yacc.c:1646 */ break; - case 36: -#line 466 "src/parser.y" /* yacc.c:1646 */ + case 38: +#line 472 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2722 "src/parser.c" /* yacc.c:1646 */ +#line 2771 "src/parser.c" /* yacc.c:1646 */ break; - case 37: -#line 470 "src/parser.y" /* yacc.c:1646 */ + case 39: +#line 476 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2730 "src/parser.c" /* yacc.c:1646 */ +#line 2779 "src/parser.c" /* yacc.c:1646 */ break; - case 38: -#line 474 "src/parser.y" /* yacc.c:1646 */ + case 40: +#line 480 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2738 "src/parser.c" /* yacc.c:1646 */ +#line 2787 "src/parser.c" /* yacc.c:1646 */ break; - case 39: -#line 478 "src/parser.y" /* yacc.c:1646 */ + case 41: +#line 484 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Division by zero?"); } -#line 2748 "src/parser.c" /* yacc.c:1646 */ +#line 2797 "src/parser.c" /* yacc.c:1646 */ break; - case 40: -#line 484 "src/parser.y" /* yacc.c:1646 */ + case 42: +#line 490 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Remainder by zero?"); } -#line 2758 "src/parser.c" /* yacc.c:1646 */ +#line 2807 "src/parser.c" /* yacc.c:1646 */ break; - case 41: -#line 490 "src/parser.y" /* yacc.c:1646 */ + case 43: +#line 496 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2766 "src/parser.c" /* yacc.c:1646 */ +#line 2815 "src/parser.c" /* yacc.c:1646 */ break; - case 42: -#line 494 "src/parser.y" /* yacc.c:1646 */ + case 44: +#line 500 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2774 "src/parser.c" /* yacc.c:1646 */ +#line 2823 "src/parser.c" /* yacc.c:1646 */ break; - case 43: -#line 498 "src/parser.y" /* yacc.c:1646 */ + case 45: +#line 504 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2782 "src/parser.c" /* yacc.c:1646 */ +#line 2831 "src/parser.c" /* yacc.c:1646 */ break; - case 44: -#line 502 "src/parser.y" /* yacc.c:1646 */ + case 46: +#line 508 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2790 "src/parser.c" /* yacc.c:1646 */ +#line 2839 "src/parser.c" /* yacc.c:1646 */ break; - case 45: -#line 506 "src/parser.y" /* yacc.c:1646 */ + case 47: +#line 512 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2798 "src/parser.c" /* yacc.c:1646 */ +#line 2847 "src/parser.c" /* yacc.c:1646 */ break; - case 46: -#line 510 "src/parser.y" /* yacc.c:1646 */ + case 48: +#line 516 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2806 "src/parser.c" /* yacc.c:1646 */ +#line 2855 "src/parser.c" /* yacc.c:1646 */ break; - case 47: -#line 514 "src/parser.y" /* yacc.c:1646 */ + case 49: +#line 520 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2814 "src/parser.c" /* yacc.c:1646 */ +#line 2863 "src/parser.c" /* yacc.c:1646 */ break; - case 48: -#line 518 "src/parser.y" /* yacc.c:1646 */ + case 50: +#line 524 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2822 "src/parser.c" /* yacc.c:1646 */ +#line 2871 "src/parser.c" /* yacc.c:1646 */ break; - case 49: -#line 522 "src/parser.y" /* yacc.c:1646 */ + case 51: +#line 528 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2830 "src/parser.c" /* yacc.c:1646 */ +#line 2879 "src/parser.c" /* yacc.c:1646 */ break; - case 50: -#line 527 "src/parser.y" /* yacc.c:1646 */ + case 52: +#line 533 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 2838 "src/parser.c" /* yacc.c:1646 */ +#line 2887 "src/parser.c" /* yacc.c:1646 */ break; - case 51: -#line 530 "src/parser.y" /* yacc.c:1646 */ + case 53: +#line 536 "src/parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant"); @@ -2854,11 +2903,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk)); } } -#line 2858 "src/parser.c" /* yacc.c:1646 */ +#line 2907 "src/parser.c" /* yacc.c:1646 */ break; - case 52: -#line 547 "src/parser.y" /* yacc.c:1646 */ + case 54: +#line 553 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-3].blk)); // XXX Make gen_import take only blocks and the int is_data so we @@ -2868,11 +2917,11 @@ YYLTYPE yylloc = yyloc_default; jv_free((yyvsp[0].literal)); jv_free(v); } -#line 2872 "src/parser.c" /* yacc.c:1646 */ +#line 2921 "src/parser.c" /* yacc.c:1646 */ break; - case 53: -#line 556 "src/parser.y" /* yacc.c:1646 */ + case 55: +#line 562 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-2].blk)); (yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 0); @@ -2880,22 +2929,22 @@ YYLTYPE yylloc = yyloc_default; jv_free((yyvsp[0].literal)); jv_free(v); } -#line 2884 "src/parser.c" /* yacc.c:1646 */ +#line 2933 "src/parser.c" /* yacc.c:1646 */ break; - case 54: -#line 563 "src/parser.y" /* yacc.c:1646 */ + case 56: +#line 569 "src/parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[0].blk)); (yyval.blk) = gen_import(jv_string_value(v), NULL, 0); block_free((yyvsp[0].blk)); jv_free(v); } -#line 2895 "src/parser.c" /* yacc.c:1646 */ +#line 2944 "src/parser.c" /* yacc.c:1646 */ break; - case 55: -#line 571 "src/parser.y" /* yacc.c:1646 */ + case 57: +#line 577 "src/parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[0].blk))) { FAIL((yyloc), "Import path must be constant"); @@ -2905,191 +2954,191 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = (yyvsp[0].blk); } } -#line 2909 "src/parser.c" /* yacc.c:1646 */ +#line 2958 "src/parser.c" /* yacc.c:1646 */ break; - case 56: -#line 582 "src/parser.y" /* yacc.c:1646 */ + case 58: +#line 588 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk)); jv_free((yyvsp[-3].literal)); } -#line 2918 "src/parser.c" /* yacc.c:1646 */ +#line 2967 "src/parser.c" /* yacc.c:1646 */ break; - case 57: -#line 587 "src/parser.y" /* yacc.c:1646 */ + case 59: +#line 593 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-6].literal)); } -#line 2927 "src/parser.c" /* yacc.c:1646 */ +#line 2976 "src/parser.c" /* yacc.c:1646 */ break; - case 58: -#line 593 "src/parser.y" /* yacc.c:1646 */ + case 60: +#line 599 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2935 "src/parser.c" /* yacc.c:1646 */ +#line 2984 "src/parser.c" /* yacc.c:1646 */ break; - case 59: -#line 596 "src/parser.y" /* yacc.c:1646 */ + case 61: +#line 602 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2943 "src/parser.c" /* yacc.c:1646 */ +#line 2992 "src/parser.c" /* yacc.c:1646 */ break; - case 60: -#line 601 "src/parser.y" /* yacc.c:1646 */ + case 62: +#line 607 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2952 "src/parser.c" /* yacc.c:1646 */ +#line 3001 "src/parser.c" /* yacc.c:1646 */ break; - case 61: -#line 605 "src/parser.y" /* yacc.c:1646 */ + case 63: +#line 611 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2961 "src/parser.c" /* yacc.c:1646 */ +#line 3010 "src/parser.c" /* yacc.c:1646 */ break; - case 62: -#line 609 "src/parser.y" /* yacc.c:1646 */ + case 64: +#line 615 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_coexpr(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2970 "src/parser.c" /* yacc.c:1646 */ +#line 3019 "src/parser.c" /* yacc.c:1646 */ break; - case 63: -#line 613 "src/parser.y" /* yacc.c:1646 */ + case 65: +#line 619 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2979 "src/parser.c" /* yacc.c:1646 */ +#line 3028 "src/parser.c" /* yacc.c:1646 */ break; - case 64: -#line 620 "src/parser.y" /* yacc.c:1646 */ + case 66: +#line 626 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("text"); } -#line 2985 "src/parser.c" /* yacc.c:1646 */ +#line 3034 "src/parser.c" /* yacc.c:1646 */ break; - case 65: -#line 620 "src/parser.y" /* yacc.c:1646 */ + case 67: +#line 626 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2994 "src/parser.c" /* yacc.c:1646 */ +#line 3043 "src/parser.c" /* yacc.c:1646 */ break; - case 66: -#line 624 "src/parser.y" /* yacc.c:1646 */ + case 68: +#line 630 "src/parser.y" /* yacc.c:1646 */ { (yyval.literal) = (yyvsp[-1].literal); } -#line 3000 "src/parser.c" /* yacc.c:1646 */ +#line 3049 "src/parser.c" /* yacc.c:1646 */ break; - case 67: -#line 624 "src/parser.y" /* yacc.c:1646 */ + case 69: +#line 630 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 3009 "src/parser.c" /* yacc.c:1646 */ +#line 3058 "src/parser.c" /* yacc.c:1646 */ break; - case 68: -#line 631 "src/parser.y" /* yacc.c:1646 */ + case 70: +#line 637 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_string("")); } -#line 3017 "src/parser.c" /* yacc.c:1646 */ +#line 3066 "src/parser.c" /* yacc.c:1646 */ break; - case 69: -#line 634 "src/parser.y" /* yacc.c:1646 */ + case 71: +#line 640 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 3025 "src/parser.c" /* yacc.c:1646 */ +#line 3074 "src/parser.c" /* yacc.c:1646 */ break; - case 70: -#line 637 "src/parser.y" /* yacc.c:1646 */ + case 72: +#line 643 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 3033 "src/parser.c" /* yacc.c:1646 */ +#line 3082 "src/parser.c" /* yacc.c:1646 */ break; - case 71: -#line 643 "src/parser.y" /* yacc.c:1646 */ + case 73: +#line 649 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 3041 "src/parser.c" /* yacc.c:1646 */ +#line 3090 "src/parser.c" /* yacc.c:1646 */ break; - case 72: -#line 646 "src/parser.y" /* yacc.c:1646 */ + case 74: +#line 652 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3049 "src/parser.c" /* yacc.c:1646 */ +#line 3098 "src/parser.c" /* yacc.c:1646 */ break; - case 73: -#line 651 "src/parser.y" /* yacc.c:1646 */ + case 75: +#line 657 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3057 "src/parser.c" /* yacc.c:1646 */ +#line 3106 "src/parser.c" /* yacc.c:1646 */ break; - case 74: -#line 654 "src/parser.y" /* yacc.c:1646 */ + case 76: +#line 660 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 3065 "src/parser.c" /* yacc.c:1646 */ +#line 3114 "src/parser.c" /* yacc.c:1646 */ break; - case 75: -#line 657 "src/parser.y" /* yacc.c:1646 */ + case 77: +#line 663 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3073 "src/parser.c" /* yacc.c:1646 */ +#line 3122 "src/parser.c" /* yacc.c:1646 */ break; - case 76: -#line 663 "src/parser.y" /* yacc.c:1646 */ + case 78: +#line 669 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3081 "src/parser.c" /* yacc.c:1646 */ +#line 3130 "src/parser.c" /* yacc.c:1646 */ break; - case 77: -#line 666 "src/parser.y" /* yacc.c:1646 */ + case 79: +#line 672 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 3089 "src/parser.c" /* yacc.c:1646 */ +#line 3138 "src/parser.c" /* yacc.c:1646 */ break; - case 78: -#line 669 "src/parser.y" /* yacc.c:1646 */ + case 80: +#line 675 "src/parser.y" /* yacc.c:1646 */ { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); // impossible symbol (yyval.blk) = gen_location((yyloc), locations, @@ -3098,268 +3147,268 @@ YYLTYPE yylloc = yyloc_default; jv_free(v); jv_free((yyvsp[0].literal)); } -#line 3102 "src/parser.c" /* yacc.c:1646 */ +#line 3151 "src/parser.c" /* yacc.c:1646 */ break; - case 79: -#line 677 "src/parser.y" /* yacc.c:1646 */ + case 81: +#line 683 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 3111 "src/parser.c" /* yacc.c:1646 */ +#line 3160 "src/parser.c" /* yacc.c:1646 */ break; - case 80: -#line 681 "src/parser.y" /* yacc.c:1646 */ + case 82: +#line 687 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 3119 "src/parser.c" /* yacc.c:1646 */ - break; - - case 81: -#line 684 "src/parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); -} -#line 3127 "src/parser.c" /* yacc.c:1646 */ - break; - - case 82: -#line 687 "src/parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); -} -#line 3135 "src/parser.c" /* yacc.c:1646 */ +#line 3168 "src/parser.c" /* yacc.c:1646 */ break; case 83: #line 690 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); + (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 3143 "src/parser.c" /* yacc.c:1646 */ +#line 3176 "src/parser.c" /* yacc.c:1646 */ break; case 84: #line 693 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); + (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3151 "src/parser.c" /* yacc.c:1646 */ +#line 3184 "src/parser.c" /* yacc.c:1646 */ break; case 85: #line 696 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); + (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 3159 "src/parser.c" /* yacc.c:1646 */ +#line 3192 "src/parser.c" /* yacc.c:1646 */ break; case 86: #line 699 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 3167 "src/parser.c" /* yacc.c:1646 */ +#line 3200 "src/parser.c" /* yacc.c:1646 */ break; case 87: #line 702 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); + (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 3175 "src/parser.c" /* yacc.c:1646 */ +#line 3208 "src/parser.c" /* yacc.c:1646 */ break; case 88: #line 705 "src/parser.y" /* yacc.c:1646 */ { - FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); - (yyval.blk) = gen_noop(); + (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3184 "src/parser.c" /* yacc.c:1646 */ +#line 3216 "src/parser.c" /* yacc.c:1646 */ break; case 89: -#line 709 "src/parser.y" /* yacc.c:1646 */ +#line 708 "src/parser.y" /* yacc.c:1646 */ { - jv_free((yyvsp[-1].literal)); - FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); - (yyval.blk) = gen_noop(); + (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 3194 "src/parser.c" /* yacc.c:1646 */ +#line 3224 "src/parser.c" /* yacc.c:1646 */ break; case 90: -#line 715 "src/parser.y" /* yacc.c:1646 */ +#line 711 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); + FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); + (yyval.blk) = gen_noop(); } -#line 3202 "src/parser.c" /* yacc.c:1646 */ +#line 3233 "src/parser.c" /* yacc.c:1646 */ break; case 91: -#line 718 "src/parser.y" /* yacc.c:1646 */ +#line 715 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); + jv_free((yyvsp[-1].literal)); + FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); + (yyval.blk) = gen_noop(); } -#line 3210 "src/parser.c" /* yacc.c:1646 */ +#line 3243 "src/parser.c" /* yacc.c:1646 */ break; case 92: #line 721 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); + (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3218 "src/parser.c" /* yacc.c:1646 */ +#line 3251 "src/parser.c" /* yacc.c:1646 */ break; case 93: #line 724 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); + (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3226 "src/parser.c" /* yacc.c:1646 */ +#line 3259 "src/parser.c" /* yacc.c:1646 */ break; case 94: #line 727 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); + (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); } -#line 3234 "src/parser.c" /* yacc.c:1646 */ +#line 3267 "src/parser.c" /* yacc.c:1646 */ break; case 95: #line 730 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); + (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); } -#line 3242 "src/parser.c" /* yacc.c:1646 */ +#line 3275 "src/parser.c" /* yacc.c:1646 */ break; case 96: #line 733 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); + (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3250 "src/parser.c" /* yacc.c:1646 */ +#line 3283 "src/parser.c" /* yacc.c:1646 */ break; case 97: #line 736 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); + (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3258 "src/parser.c" /* yacc.c:1646 */ +#line 3291 "src/parser.c" /* yacc.c:1646 */ break; case 98: #line 739 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); + (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3266 "src/parser.c" /* yacc.c:1646 */ +#line 3299 "src/parser.c" /* yacc.c:1646 */ break; case 99: #line 742 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3274 "src/parser.c" /* yacc.c:1646 */ +#line 3307 "src/parser.c" /* yacc.c:1646 */ break; case 100: #line 745 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3282 "src/parser.c" /* yacc.c:1646 */ +#line 3315 "src/parser.c" /* yacc.c:1646 */ break; case 101: #line 748 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3290 "src/parser.c" /* yacc.c:1646 */ +#line 3323 "src/parser.c" /* yacc.c:1646 */ break; case 102: #line 751 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_const((yyvsp[0].literal)); + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3298 "src/parser.c" /* yacc.c:1646 */ +#line 3331 "src/parser.c" /* yacc.c:1646 */ break; case 103: #line 754 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = (yyvsp[0].blk); + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3306 "src/parser.c" /* yacc.c:1646 */ +#line 3339 "src/parser.c" /* yacc.c:1646 */ break; case 104: #line 757 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); + (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3314 "src/parser.c" /* yacc.c:1646 */ +#line 3347 "src/parser.c" /* yacc.c:1646 */ break; case 105: #line 760 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = (yyvsp[-1].blk); + (yyval.blk) = (yyvsp[0].blk); } -#line 3322 "src/parser.c" /* yacc.c:1646 */ +#line 3355 "src/parser.c" /* yacc.c:1646 */ break; case 106: #line 763 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_collect((yyvsp[-1].blk)); + (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3330 "src/parser.c" /* yacc.c:1646 */ +#line 3363 "src/parser.c" /* yacc.c:1646 */ break; case 107: #line 766 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_const(jv_array()); + (yyval.blk) = (yyvsp[-1].blk); } -#line 3338 "src/parser.c" /* yacc.c:1646 */ +#line 3371 "src/parser.c" /* yacc.c:1646 */ break; case 108: #line 769 "src/parser.y" /* yacc.c:1646 */ { + (yyval.blk) = gen_collect((yyvsp[-1].blk)); +} +#line 3379 "src/parser.c" /* yacc.c:1646 */ + break; + + case 109: +#line 772 "src/parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_const(jv_array()); +} +#line 3387 "src/parser.c" /* yacc.c:1646 */ + break; + + case 110: +#line 775 "src/parser.y" /* yacc.c:1646 */ + { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) (yyval.blk) = o; else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3350 "src/parser.c" /* yacc.c:1646 */ +#line 3399 "src/parser.c" /* yacc.c:1646 */ break; - case 109: -#line 776 "src/parser.y" /* yacc.c:1646 */ + case 111: +#line 782 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3359 "src/parser.c" /* yacc.c:1646 */ +#line 3408 "src/parser.c" /* yacc.c:1646 */ break; - case 110: -#line 780 "src/parser.y" /* yacc.c:1646 */ + case 112: +#line 786 "src/parser.y" /* yacc.c:1646 */ { if (strcmp(jv_string_value((yyvsp[0].literal)), "__loc__") == 0) { (yyval.blk) = gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname), @@ -3369,11 +3418,11 @@ YYLTYPE yylloc = yyloc_default; } jv_free((yyvsp[0].literal)); } -#line 3373 "src/parser.c" /* yacc.c:1646 */ +#line 3422 "src/parser.c" /* yacc.c:1646 */ break; - case 111: -#line 789 "src/parser.y" /* yacc.c:1646 */ + case 113: +#line 795 "src/parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3386,198 +3435,198 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3390 "src/parser.c" /* yacc.c:1646 */ +#line 3439 "src/parser.c" /* yacc.c:1646 */ break; - case 112: -#line 801 "src/parser.y" /* yacc.c:1646 */ + case 114: +#line 807 "src/parser.y" /* yacc.c:1646 */ { (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 3400 "src/parser.c" /* yacc.c:1646 */ +#line 3449 "src/parser.c" /* yacc.c:1646 */ break; - case 113: -#line 806 "src/parser.y" /* yacc.c:1646 */ + case 115: +#line 812 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3406 "src/parser.c" /* yacc.c:1646 */ +#line 3455 "src/parser.c" /* yacc.c:1646 */ break; - case 114: -#line 807 "src/parser.y" /* yacc.c:1646 */ + case 116: +#line 813 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3412 "src/parser.c" /* yacc.c:1646 */ +#line 3461 "src/parser.c" /* yacc.c:1646 */ break; - case 115: -#line 808 "src/parser.y" /* yacc.c:1646 */ + case 117: +#line 814 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-3].blk); } -#line 3418 "src/parser.c" /* yacc.c:1646 */ +#line 3467 "src/parser.c" /* yacc.c:1646 */ break; - case 116: -#line 809 "src/parser.y" /* yacc.c:1646 */ + case 118: +#line 815 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3424 "src/parser.c" /* yacc.c:1646 */ +#line 3473 "src/parser.c" /* yacc.c:1646 */ break; - case 117: -#line 812 "src/parser.y" /* yacc.c:1646 */ + case 119: +#line 818 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3432 "src/parser.c" /* yacc.c:1646 */ +#line 3481 "src/parser.c" /* yacc.c:1646 */ break; - case 118: -#line 815 "src/parser.y" /* yacc.c:1646 */ + case 120: +#line 821 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3440 "src/parser.c" /* yacc.c:1646 */ +#line 3489 "src/parser.c" /* yacc.c:1646 */ break; - case 119: -#line 820 "src/parser.y" /* yacc.c:1646 */ + case 121: +#line 826 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3448 "src/parser.c" /* yacc.c:1646 */ +#line 3497 "src/parser.c" /* yacc.c:1646 */ break; - case 120: -#line 825 "src/parser.y" /* yacc.c:1646 */ + case 122: +#line 831 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk))); } -#line 3456 "src/parser.c" /* yacc.c:1646 */ +#line 3505 "src/parser.c" /* yacc.c:1646 */ break; - case 121: -#line 828 "src/parser.y" /* yacc.c:1646 */ + case 123: +#line 834 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); } -#line 3464 "src/parser.c" /* yacc.c:1646 */ +#line 3513 "src/parser.c" /* yacc.c:1646 */ break; - case 122: -#line 833 "src/parser.y" /* yacc.c:1646 */ + case 124: +#line 839 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3472 "src/parser.c" /* yacc.c:1646 */ +#line 3521 "src/parser.c" /* yacc.c:1646 */ break; - case 123: -#line 836 "src/parser.y" /* yacc.c:1646 */ + case 125: +#line 842 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3480 "src/parser.c" /* yacc.c:1646 */ +#line 3529 "src/parser.c" /* yacc.c:1646 */ break; - case 124: -#line 841 "src/parser.y" /* yacc.c:1646 */ + case 126: +#line 847 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3489 "src/parser.c" /* yacc.c:1646 */ +#line 3538 "src/parser.c" /* yacc.c:1646 */ break; - case 125: -#line 845 "src/parser.y" /* yacc.c:1646 */ + case 127: +#line 851 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3497 "src/parser.c" /* yacc.c:1646 */ +#line 3546 "src/parser.c" /* yacc.c:1646 */ break; - case 126: -#line 848 "src/parser.y" /* yacc.c:1646 */ + case 128: +#line 854 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3505 "src/parser.c" /* yacc.c:1646 */ +#line 3554 "src/parser.c" /* yacc.c:1646 */ break; - case 127: -#line 853 "src/parser.y" /* yacc.c:1646 */ + case 129: +#line 859 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3513 "src/parser.c" /* yacc.c:1646 */ +#line 3562 "src/parser.c" /* yacc.c:1646 */ break; - case 128: -#line 856 "src/parser.y" /* yacc.c:1646 */ + case 130: +#line 862 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3521 "src/parser.c" /* yacc.c:1646 */ +#line 3570 "src/parser.c" /* yacc.c:1646 */ break; - case 129: -#line 861 "src/parser.y" /* yacc.c:1646 */ + case 131: +#line 867 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3529 "src/parser.c" /* yacc.c:1646 */ +#line 3578 "src/parser.c" /* yacc.c:1646 */ break; - case 130: -#line 864 "src/parser.y" /* yacc.c:1646 */ + case 132: +#line 870 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3537 "src/parser.c" /* yacc.c:1646 */ +#line 3586 "src/parser.c" /* yacc.c:1646 */ break; - case 131: -#line 869 "src/parser.y" /* yacc.c:1646 */ + case 133: +#line 875 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); } -#line 3545 "src/parser.c" /* yacc.c:1646 */ +#line 3594 "src/parser.c" /* yacc.c:1646 */ break; - case 132: -#line 872 "src/parser.y" /* yacc.c:1646 */ + case 134: +#line 878 "src/parser.y" /* yacc.c:1646 */ { (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 3553 "src/parser.c" /* yacc.c:1646 */ +#line 3602 "src/parser.c" /* yacc.c:1646 */ break; - case 133: -#line 875 "src/parser.y" /* yacc.c:1646 */ + case 135: +#line 881 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3561 "src/parser.c" /* yacc.c:1646 */ +#line 3610 "src/parser.c" /* yacc.c:1646 */ break; - case 134: -#line 878 "src/parser.y" /* yacc.c:1646 */ + case 136: +#line 884 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3569 "src/parser.c" /* yacc.c:1646 */ +#line 3618 "src/parser.c" /* yacc.c:1646 */ break; - case 135: -#line 881 "src/parser.y" /* yacc.c:1646 */ + case 137: +#line 887 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3577 "src/parser.c" /* yacc.c:1646 */ +#line 3626 "src/parser.c" /* yacc.c:1646 */ break; - case 136: -#line 884 "src/parser.y" /* yacc.c:1646 */ + case 138: +#line 890 "src/parser.y" /* yacc.c:1646 */ { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3586,284 +3635,284 @@ YYLTYPE yylloc = yyloc_default; jv_free(msg); (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3590 "src/parser.c" /* yacc.c:1646 */ +#line 3639 "src/parser.c" /* yacc.c:1646 */ break; - case 137: -#line 892 "src/parser.y" /* yacc.c:1646 */ + case 139: +#line 898 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3599 "src/parser.c" /* yacc.c:1646 */ - break; - - case 138: -#line 898 "src/parser.y" /* yacc.c:1646 */ - { - (yyval.literal) = jv_string("as"); -} -#line 3607 "src/parser.c" /* yacc.c:1646 */ - break; - - case 139: -#line 901 "src/parser.y" /* yacc.c:1646 */ - { - (yyval.literal) = jv_string("def"); -} -#line 3615 "src/parser.c" /* yacc.c:1646 */ +#line 3648 "src/parser.c" /* yacc.c:1646 */ break; case 140: #line 904 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("codef"); + (yyval.literal) = jv_string("as"); } -#line 3623 "src/parser.c" /* yacc.c:1646 */ +#line 3656 "src/parser.c" /* yacc.c:1646 */ break; case 141: #line 907 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("module"); + (yyval.literal) = jv_string("def"); } -#line 3631 "src/parser.c" /* yacc.c:1646 */ +#line 3664 "src/parser.c" /* yacc.c:1646 */ break; case 142: #line 910 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("import"); + (yyval.literal) = jv_string("codef"); } -#line 3639 "src/parser.c" /* yacc.c:1646 */ +#line 3672 "src/parser.c" /* yacc.c:1646 */ break; case 143: #line 913 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("include"); + (yyval.literal) = jv_string("module"); } -#line 3647 "src/parser.c" /* yacc.c:1646 */ +#line 3680 "src/parser.c" /* yacc.c:1646 */ break; case 144: #line 916 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("if"); + (yyval.literal) = jv_string("import"); } -#line 3655 "src/parser.c" /* yacc.c:1646 */ +#line 3688 "src/parser.c" /* yacc.c:1646 */ break; case 145: #line 919 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("then"); + (yyval.literal) = jv_string("include"); } -#line 3663 "src/parser.c" /* yacc.c:1646 */ +#line 3696 "src/parser.c" /* yacc.c:1646 */ break; case 146: #line 922 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("else"); + (yyval.literal) = jv_string("if"); } -#line 3671 "src/parser.c" /* yacc.c:1646 */ +#line 3704 "src/parser.c" /* yacc.c:1646 */ break; case 147: #line 925 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("elif"); + (yyval.literal) = jv_string("then"); } -#line 3679 "src/parser.c" /* yacc.c:1646 */ +#line 3712 "src/parser.c" /* yacc.c:1646 */ break; case 148: #line 928 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("reduce"); + (yyval.literal) = jv_string("else"); } -#line 3687 "src/parser.c" /* yacc.c:1646 */ +#line 3720 "src/parser.c" /* yacc.c:1646 */ break; case 149: #line 931 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("foreach"); + (yyval.literal) = jv_string("elif"); } -#line 3695 "src/parser.c" /* yacc.c:1646 */ +#line 3728 "src/parser.c" /* yacc.c:1646 */ break; case 150: #line 934 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("end"); + (yyval.literal) = jv_string("reduce"); } -#line 3703 "src/parser.c" /* yacc.c:1646 */ +#line 3736 "src/parser.c" /* yacc.c:1646 */ break; case 151: #line 937 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("and"); + (yyval.literal) = jv_string("foreach"); } -#line 3711 "src/parser.c" /* yacc.c:1646 */ +#line 3744 "src/parser.c" /* yacc.c:1646 */ break; case 152: #line 940 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("or"); + (yyval.literal) = jv_string("end"); } -#line 3719 "src/parser.c" /* yacc.c:1646 */ +#line 3752 "src/parser.c" /* yacc.c:1646 */ break; case 153: #line 943 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("try"); + (yyval.literal) = jv_string("and"); } -#line 3727 "src/parser.c" /* yacc.c:1646 */ +#line 3760 "src/parser.c" /* yacc.c:1646 */ break; case 154: #line 946 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("catch"); + (yyval.literal) = jv_string("or"); } -#line 3735 "src/parser.c" /* yacc.c:1646 */ +#line 3768 "src/parser.c" /* yacc.c:1646 */ break; case 155: #line 949 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("label"); + (yyval.literal) = jv_string("try"); } -#line 3743 "src/parser.c" /* yacc.c:1646 */ +#line 3776 "src/parser.c" /* yacc.c:1646 */ break; case 156: #line 952 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("break"); + (yyval.literal) = jv_string("catch"); } -#line 3751 "src/parser.c" /* yacc.c:1646 */ +#line 3784 "src/parser.c" /* yacc.c:1646 */ break; case 157: #line 955 "src/parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("__loc__"); + (yyval.literal) = jv_string("label"); } -#line 3759 "src/parser.c" /* yacc.c:1646 */ +#line 3792 "src/parser.c" /* yacc.c:1646 */ break; case 158: -#line 960 "src/parser.y" /* yacc.c:1646 */ +#line 958 "src/parser.y" /* yacc.c:1646 */ { - (yyval.blk)=gen_noop(); + (yyval.literal) = jv_string("break"); } -#line 3767 "src/parser.c" /* yacc.c:1646 */ +#line 3800 "src/parser.c" /* yacc.c:1646 */ break; case 159: -#line 963 "src/parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3773 "src/parser.c" /* yacc.c:1646 */ +#line 961 "src/parser.y" /* yacc.c:1646 */ + { + (yyval.literal) = jv_string("__loc__"); +} +#line 3808 "src/parser.c" /* yacc.c:1646 */ break; case 160: -#line 964 "src/parser.y" /* yacc.c:1646 */ - { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3779 "src/parser.c" /* yacc.c:1646 */ +#line 966 "src/parser.y" /* yacc.c:1646 */ + { + (yyval.blk)=gen_noop(); +} +#line 3816 "src/parser.c" /* yacc.c:1646 */ break; case 161: -#line 965 "src/parser.y" /* yacc.c:1646 */ +#line 969 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3785 "src/parser.c" /* yacc.c:1646 */ +#line 3822 "src/parser.c" /* yacc.c:1646 */ break; case 162: -#line 968 "src/parser.y" /* yacc.c:1646 */ +#line 970 "src/parser.y" /* yacc.c:1646 */ + { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } +#line 3828 "src/parser.c" /* yacc.c:1646 */ + break; + + case 163: +#line 971 "src/parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3834 "src/parser.c" /* yacc.c:1646 */ + break; + + case 164: +#line 974 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3793 "src/parser.c" /* yacc.c:1646 */ +#line 3842 "src/parser.c" /* yacc.c:1646 */ break; - case 163: -#line 971 "src/parser.y" /* yacc.c:1646 */ + case 165: +#line 977 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3801 "src/parser.c" /* yacc.c:1646 */ +#line 3850 "src/parser.c" /* yacc.c:1646 */ break; - case 164: -#line 974 "src/parser.y" /* yacc.c:1646 */ + case 166: +#line 980 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3809 "src/parser.c" /* yacc.c:1646 */ +#line 3858 "src/parser.c" /* yacc.c:1646 */ break; - case 165: -#line 977 "src/parser.y" /* yacc.c:1646 */ + case 167: +#line 983 "src/parser.y" /* yacc.c:1646 */ { (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 3818 "src/parser.c" /* yacc.c:1646 */ +#line 3867 "src/parser.c" /* yacc.c:1646 */ break; - case 166: -#line 981 "src/parser.y" /* yacc.c:1646 */ + case 168: +#line 987 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[-2].literal)))), (yyvsp[0].blk)); } -#line 3827 "src/parser.c" /* yacc.c:1646 */ +#line 3876 "src/parser.c" /* yacc.c:1646 */ break; - case 167: -#line 985 "src/parser.y" /* yacc.c:1646 */ + case 169: +#line 991 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 3836 "src/parser.c" /* yacc.c:1646 */ +#line 3885 "src/parser.c" /* yacc.c:1646 */ break; - case 168: -#line 989 "src/parser.y" /* yacc.c:1646 */ + case 170: +#line 995 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 3845 "src/parser.c" /* yacc.c:1646 */ +#line 3894 "src/parser.c" /* yacc.c:1646 */ break; - case 169: -#line 993 "src/parser.y" /* yacc.c:1646 */ + case 171: +#line 999 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3854 "src/parser.c" /* yacc.c:1646 */ +#line 3903 "src/parser.c" /* yacc.c:1646 */ break; - case 170: -#line 997 "src/parser.y" /* yacc.c:1646 */ + case 172: +#line 1003 "src/parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 3863 "src/parser.c" /* yacc.c:1646 */ +#line 3912 "src/parser.c" /* yacc.c:1646 */ break; - case 171: -#line 1001 "src/parser.y" /* yacc.c:1646 */ + case 173: +#line 1007 "src/parser.y" /* yacc.c:1646 */ { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) { @@ -3872,20 +3921,20 @@ YYLTYPE yylloc = yyloc_default; jv_free(msg); (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3876 "src/parser.c" /* yacc.c:1646 */ +#line 3925 "src/parser.c" /* yacc.c:1646 */ break; - case 172: -#line 1009 "src/parser.y" /* yacc.c:1646 */ + case 174: +#line 1015 "src/parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3885 "src/parser.c" /* yacc.c:1646 */ +#line 3934 "src/parser.c" /* yacc.c:1646 */ break; -#line 3889 "src/parser.c" /* yacc.c:1646 */ +#line 3938 "src/parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4120,7 +4169,7 @@ YYLTYPE yylloc = yyloc_default; #endif return yyresult; } -#line 1013 "src/parser.y" /* yacc.c:1906 */ +#line 1019 "src/parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/src/parser.y b/src/parser.y index 2c3624ab0d..bdb281fa4a 100644 --- a/src/parser.y +++ b/src/parser.y @@ -393,6 +393,12 @@ Term "as" Patterns '|' Exp { $$ = $2; } | +"try" '(' Exp ';' Exp ')' { + $$ = gen_try($3, $5); +} | +"try" '(' Exp ';' Exp ';' Exp ')' { + $$ = BLOCK(gen_call("_try_finally", BLOCK(gen_lambda($3), gen_lambda($5), gen_lambda($7)))); +} | "try" Exp "catch" Exp { $$ = gen_try($2, $4); } |