From 66ef8e2c243207bb4edd88c409ce90fc95e0dffe Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 18 Jul 2015 21:57:20 -0700 Subject: [PATCH] Resolve shift/reduce conflict of 'def' vs '|' This was an important conflict. In the following expression: def a: 0; . | a Bison needs to decide between these two equally valid parses: (def a: 0; .) | a def a: 0; (. | a) For jq we want the second one, because the first results in "a/0 is not defined". In the current parser the first parse is a reduce and the second parse is a shift. Since Bison prefers to shift in shift/reduce conflicts, we accidentally got the correct behavior. This commit adds a precedence level FUNCDEF which is lower precedence than '|', meaning we explicitly choose the correct parse. Of course many unit tests already cover this case, but I added one specifically for it. --- parser.c | 1643 ++++++++++++++++++++++++------------------------- parser.h | 6 +- parser.y | 5 +- tests/jq.test | 5 + 4 files changed, 825 insertions(+), 834 deletions(-) diff --git a/parser.c b/parser.c index 8bd8bd05..0a799cb1 100644 --- a/parser.c +++ b/parser.c @@ -168,7 +168,8 @@ struct lexer_param; QQSTRING_TEXT = 296, QQSTRING_INTERP_START = 297, QQSTRING_INTERP_END = 298, - QQSTRING_END = 299 + QQSTRING_END = 299, + FUNCDEF = 300 }; #endif /* Tokens. */ @@ -214,6 +215,7 @@ struct lexer_param; #define QQSTRING_INTERP_START 297 #define QQSTRING_INTERP_END 298 #define QQSTRING_END 299 +#define FUNCDEF 300 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -225,7 +227,7 @@ union YYSTYPE jv literal; block blk; -#line 229 "parser.c" /* yacc.c:355 */ +#line 231 "parser.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -252,7 +254,7 @@ int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer #endif /* !YY_YY_PARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 114 "parser.y" /* yacc.c:358 */ +#line 115 "parser.y" /* yacc.c:358 */ #include "lexer.h" struct lexer_param { @@ -408,7 +410,7 @@ static block gen_update(block object, block val, int optype) { } -#line 412 "parser.c" /* yacc.c:358 */ +#line 414 "parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -652,10 +654,10 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2015 +#define YYLAST 1919 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 66 +#define YYNTOKENS 67 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 26 /* YYNRULES -- Number of rules. */ @@ -666,7 +668,7 @@ union yyalloc /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 299 +#define YYMAXUTOK 300 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -678,16 +680,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 59, 54, 2, 2, - 57, 58, 52, 50, 46, 51, 61, 53, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 60, 56, - 48, 47, 49, 55, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 60, 55, 2, 2, + 58, 59, 53, 51, 47, 52, 62, 54, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 61, 57, + 49, 48, 50, 56, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 62, 2, 63, 2, 2, 2, 2, 2, 2, + 2, 63, 2, 64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 64, 45, 65, 2, 2, 2, 2, + 2, 2, 2, 65, 46, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -704,29 +706,30 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 272, 272, 275, 280, 283, 293, 296, 301, 304, - 309, 313, 317, 321, 325, 329, 332, 337, 341, 345, - 350, 362, 366, 370, 374, 378, 382, 386, 390, 394, - 398, 402, 406, 410, 414, 418, 422, 426, 432, 438, - 442, 446, 450, 454, 458, 462, 466, 470, 475, 484, - 491, 497, 509, 520, 534, 539, 545, 548, 553, 558, - 565, 565, 569, 569, 576, 579, 582, 588, 591, 596, - 599, 602, 608, 611, 614, 622, 626, 629, 632, 635, - 638, 641, 644, 647, 650, 654, 660, 663, 666, 669, - 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, - 702, 705, 708, 715, 719, 723, 735, 740, 741, 742, - 743, 746, 749, 754, 759, 763, 766, 771, 774, 779, - 782, 787, 790, 793, 796, 799, 804, 807, 810, 813, - 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, - 846, 849, 852, 855, 858, 863, 866, 867, 868, 871, - 874, 877, 880, 884, 888, 892, 895 + 0, 273, 273, 276, 281, 284, 294, 297, 302, 305, + 310, 314, 318, 322, 326, 330, 333, 338, 342, 346, + 351, 363, 367, 371, 375, 379, 383, 387, 391, 395, + 399, 403, 407, 411, 415, 419, 423, 427, 433, 439, + 443, 447, 451, 455, 459, 463, 467, 471, 476, 485, + 492, 498, 510, 521, 535, 540, 546, 549, 554, 559, + 566, 566, 570, 570, 577, 580, 583, 589, 592, 597, + 600, 603, 609, 612, 615, 623, 627, 630, 633, 636, + 639, 642, 645, 648, 651, 655, 661, 664, 667, 670, + 673, 676, 679, 682, 685, 688, 691, 694, 697, 700, + 703, 706, 709, 716, 720, 724, 736, 741, 742, 743, + 744, 747, 750, 755, 760, 764, 767, 772, 775, 780, + 783, 788, 791, 794, 797, 800, 805, 808, 811, 814, + 817, 820, 823, 826, 829, 832, 835, 838, 841, 844, + 847, 850, 853, 856, 859, 864, 867, 868, 869, 872, + 875, 878, 881, 885, 889, 893, 896 }; #endif @@ -743,12 +746,12 @@ static const char *const yytname[] = "\"break\"", "\"__loc__\"", "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"//=\"", "\"<=\"", "\">=\"", "QQSTRING_START", "QQSTRING_TEXT", "QQSTRING_INTERP_START", "QQSTRING_INTERP_END", - "QQSTRING_END", "'|'", "','", "'='", "'<'", "'>'", "'+'", "'-'", "'*'", - "'/'", "'%'", "'?'", "';'", "'('", "')'", "'$'", "':'", "'.'", "'['", - "']'", "'{'", "'}'", "$accept", "TopLevel", "Module", "Imports", - "FuncDefs", "Exp", "Import", "FuncDef", "Params", "Param", "String", - "@1", "@2", "QQString", "ElseBody", "ExpD", "Term", "Args", "Arg", - "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword", "MkDict", + "QQSTRING_END", "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'", + "'-'", "'*'", "'/'", "'%'", "'?'", "';'", "'('", "')'", "'$'", "':'", + "'.'", "'['", "']'", "'{'", "'}'", "$accept", "TopLevel", "Module", + "Imports", "FuncDefs", "Exp", "Import", "FuncDef", "Params", "Param", + "String", "@1", "@2", "QQString", "ElseBody", "ExpD", "Term", "Args", + "Arg", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword", "MkDict", "MkDictPair", YY_NULLPTR }; #endif @@ -762,9 +765,9 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 124, 44, 61, 60, 62, - 43, 45, 42, 47, 37, 63, 59, 40, 41, 36, - 58, 46, 91, 93, 123, 125 + 295, 296, 297, 298, 299, 300, 124, 44, 61, 60, + 62, 43, 45, 42, 47, 37, 63, 59, 40, 41, + 36, 58, 46, 91, 93, 123, 125 }; # endif @@ -782,37 +785,37 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 25, 981, 51, 44, 7, -2, -152, 17, -152, 61, - 981, 600, 600, 981, 15, 0, -152, 981, 155, 23, - 276, 488, 339, 1405, 981, -152, 1, -152, 3, 3, - 981, 44, 981, -152, -152, -19, 1724, 6, 8, 45, - 71, -152, 75, -152, 65, 22, 1250, -152, -152, -152, - 80, 17, 56, 50, -152, 1104, -18, 55, -152, -152, + 27, 856, 38, 36, 7, 5, -152, 22, -152, 41, + 856, 835, 835, 856, 20, 0, -152, 856, 463, 23, + 276, 436, 340, 1292, 856, -152, 1, -152, 3, 3, + 856, 36, 856, -152, -152, -21, 1620, 6, 8, 31, + 63, -152, 77, -152, 2, 56, 1132, -152, -152, -152, + 116, 22, 66, 62, -152, 982, -19, 69, -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, 552, 117, 62, - 63, 69, 90, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, -152, -152, 1880, - 83, -25, 3, 424, 113, 737, -152, 1880, 981, -152, - 1880, -14, -152, -152, 18, 981, 614, -25, -25, 676, - 94, -152, 14, -152, -152, -152, -152, -152, -152, 393, - -152, 594, 82, 1281, -152, 594, 594, -152, 393, 1942, - 334, 334, 1911, 1960, 200, 1942, 1942, 1942, 1942, 1942, - 1942, 334, 334, 1880, 1911, 1942, 334, 334, 65, 65, - 91, 91, 91, -152, 140, -25, 1037, 100, 92, 85, - 981, 95, 1072, 19, -152, 1437, -152, 981, -152, 89, - -152, 145, -10, -152, 1469, -152, 1677, 96, 97, -152, - -152, 981, -152, 981, -152, 105, -152, 594, 110, 10, - 98, 104, 110, 110, -152, -152, -152, -11, 106, 981, - 153, 107, -16, -152, 108, 981, -152, -152, 1136, -152, - 798, 115, 859, 161, -152, -152, -152, -152, 18, 112, - -152, 981, 981, -152, 981, 981, 1880, 1755, -152, 594, - 594, 594, -25, -152, -25, 1312, -152, -25, 1037, -152, - -25, 1880, 119, 120, 1168, -152, -152, 1501, 920, -152, - 981, 1802, 1849, 1533, 1565, -152, 110, 110, 110, -152, - -152, 116, -152, -152, -152, -152, -152, 126, -152, -152, - 1597, 1629, -152, 981, 981, 981, -25, -152, -152, -152, - 1677, 1343, 1200, -152, -152, -152, 981, -152, 1374, -152 + -152, -152, -152, -152, -152, -152, -152, 526, 127, 73, + 75, 72, 92, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, -152, -152, 1780, + 84, -24, 3, 190, 131, 643, -152, 1780, 856, -152, + 1780, -11, -152, -152, 18, 856, 553, -24, -24, 616, + 99, -152, 33, -152, -152, -152, -152, -152, -152, 395, + -152, 773, 89, 1164, -152, 773, 773, -152, 395, 1844, + 335, 335, 1812, 1863, 108, 1844, 1844, 1844, 1844, 1844, + 1844, 335, 335, 1780, 1812, 1844, 335, 335, 2, 2, + 93, 93, 93, -152, 146, -24, 913, 105, 97, 90, + 856, 100, 949, 19, -152, 1325, -152, 856, -152, 79, + -152, 151, 54, -152, 1358, -152, 1572, 107, 109, -152, + -152, 856, -152, 856, -152, 119, -152, 773, 122, 10, + 111, 112, 122, 122, -152, -152, -152, -13, 113, 856, + 165, 114, -17, -152, 115, 856, -152, -152, 1015, -152, + 705, 121, 732, 166, -152, -152, -152, -152, 18, 117, + -152, 856, 856, -152, 856, 856, 1780, 1652, -152, 773, + 773, 773, -24, -152, -24, 1196, -152, -24, 913, -152, + -24, 1780, 125, 126, 1048, -152, -152, 1391, 794, -152, + 856, 1700, 1748, 1424, 1457, -152, 122, 122, 122, -152, + -152, 123, -152, -152, -152, -152, -152, 129, -152, -152, + 1490, 1523, -152, 856, 856, 856, -24, -152, -152, -152, + 1572, 1228, 1081, -152, -152, -152, 856, -152, 1260, -152 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -857,8 +860,8 @@ static const yytype_uint8 yydefact[] = static const yytype_int16 yypgoto[] = { -152, -152, -152, 152, 70, -1, -152, -12, -152, -51, - 4, -152, -152, 66, -110, -141, -4, -152, 5, -125, - -152, -152, -67, -151, -103, -152 + 4, -152, -152, 67, -111, -141, -4, -152, 12, -125, + -152, -152, -66, -151, -104, -152 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -877,469 +880,449 @@ static const yytype_int16 yytable[] = 23, 41, 197, 198, 212, 213, 110, 37, 38, 36, 51, 110, 39, 110, 111, 110, 44, 46, 118, 127, 55, 128, 190, 232, 52, 224, 79, 47, 139, 117, - 258, 120, 114, 115, 174, 252, 206, 175, 124, 176, - 1, 125, 187, 16, 188, 214, 238, 140, 239, 259, - 216, 27, 253, 33, 48, 202, 203, 34, 204, 42, - 28, 29, 112, 113, 32, 35, 248, 112, 113, 112, - 113, 112, 113, 129, 40, 130, 143, 191, 233, 131, - 133, 135, 149, 150, 151, 152, 153, 154, 155, 156, + 258, 120, 114, 115, 252, 206, 174, 124, 27, 175, + 125, 176, 1, 16, 214, 35, 187, 140, 188, 259, + 216, 253, 28, 29, 48, 104, 105, 106, 107, 129, + 42, 33, 34, 112, 113, 32, 248, 130, 112, 113, + 112, 113, 112, 113, 202, 203, 143, 204, 191, 233, + 40, 131, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 118, 224, 276, 277, - 278, 136, 182, 137, 185, 141, 178, 104, 105, 106, - 107, 144, 145, 146, 194, 196, 183, 279, 200, 280, - 202, 203, 282, 236, 147, 284, 148, 209, 173, 201, - 210, 209, 209, 79, 215, 225, 107, 226, 227, 237, - 229, 139, 79, 244, 245, 249, 45, 256, 250, 4, - 5, 6, 7, 8, 251, 268, 254, 257, 260, 9, - 265, 303, 270, 10, 285, 286, 296, 11, 12, 228, - 221, 297, 13, 119, 14, 15, 120, 269, 186, 189, - 304, 283, 235, 0, 0, 16, 0, 0, 0, 0, - 246, 0, 247, 209, 0, 0, 17, 0, 0, 0, - 84, 85, 18, 0, 19, 0, 20, 21, 255, 22, - 0, 0, 0, 0, 261, 87, 0, 0, 0, 264, - 0, 267, 0, 0, 0, 0, 0, 0, 95, 96, - 271, 272, 0, 273, 274, 209, 209, 209, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 0, 0, 0, + 278, 238, 182, 239, 185, 133, 178, 135, 84, 85, + 202, 203, 136, 236, 194, 196, 137, 279, 200, 280, + 141, 144, 282, 87, 145, 284, 146, 209, 147, 148, + 173, 209, 209, 79, 183, 201, 95, 96, 210, 107, + 215, 225, 79, 226, 227, 237, 229, 100, 101, 102, + 103, 104, 105, 106, 107, 244, 139, 245, 249, 256, + 268, 303, 250, 251, 254, 257, 260, 265, 270, 228, + 221, 285, 286, 119, 296, 297, 120, 269, 186, 304, + 189, 179, 283, 0, 4, 5, 6, 7, 8, 235, + 246, 0, 247, 209, 9, 0, 0, 0, 10, 0, + 0, 0, 11, 12, 0, 0, 0, 13, 255, 14, + 15, 0, 0, 0, 261, 0, 0, 0, 0, 264, + 16, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 271, 272, 17, 273, 274, 209, 209, 209, 18, 0, + 19, 180, 20, 21, 181, 22, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, 290, 0, 291, 0, 0, 0, 0, 0, 0, -72, 49, 0, 0, 50, -72, 0, 51, 0, -72, -72, -72, -72, -72, 0, 0, 300, 301, 302, -72, -72, -72, 0, 0, -72, -72, -72, 0, -72, 308, 0, 0, -72, -72, -72, -72, -72, -72, -72, -72, 16, 0, 0, -72, - 0, -72, -72, -72, -72, -72, -72, -72, -72, -72, - -72, -72, -72, 0, -72, 0, -72, -72, -72, -72, - 56, -72, 0, 57, -146, -146, 51, 0, 0, 0, - 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 0, -146, -146, 0, 0, 0, 0, 0, 16, - 0, 0, -146, -146, 102, 103, 104, 105, 106, 107, - 0, 0, 0, 0, 205, 0, 77, 57, 78, 0, - 51, 0, 0, 0, -145, 0, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 179, 0, 0, 4, 5, - 6, 7, 8, 16, 0, 0, 0, 0, 9, 0, - 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, - 77, 13, 78, 14, 15, 0, 0, 0, -145, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, 0, -72, 0, -72, -72, -72, + -72, 56, -72, 0, 57, -146, -146, 51, 0, 0, + 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 0, -146, -146, 0, 0, 0, 0, 0, + 16, 0, 0, 0, -146, -146, 102, 103, 104, 105, + 106, 107, 0, 0, 0, 0, 205, 0, 77, 57, + 78, 0, 51, 0, 0, 0, -145, 0, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 53, 0, 0, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 9, 0, 0, 77, 10, 78, 0, 0, 11, 12, + 0, -145, 0, 13, 45, 14, 15, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 18, 0, 19, 0, 20, 21, + 54, 22, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 18, 0, 19, 0, 20, 21, 142, 22, 0, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 12, + 0, 0, 0, 13, 195, 14, 15, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 18, 0, 19, 0, 20, 21, + 0, 22, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 18, 0, 19, 180, 20, 21, 181, 22, 53, - 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, - 21, 54, 22, 142, 0, 0, 4, 5, 6, 7, - 8, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 10, 0, 0, 0, 11, 12, 0, 0, 0, 13, - 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 4, 5, - 6, 7, 8, 17, 4, 5, 6, 7, 8, 18, - 0, 19, 0, 20, 21, 195, 22, 0, 4, 5, - 6, 7, 8, 0, 15, 0, 0, 0, 9, 0, - 15, 0, 10, 0, 16, 0, 11, 12, 0, 0, - 16, 13, 0, 14, 15, 207, 0, 0, 0, 0, - 0, 18, 0, 19, 16, 20, 21, 18, 22, 19, - 0, 20, 21, 0, 22, 17, 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, 21, 199, 22, 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 12, + 0, 0, 0, 13, 0, 14, 15, 4, 5, 6, + 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 18, 0, 19, 0, 20, 21, + 0, 22, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 184, 18, 0, 19, 0, 20, 21, 0, 22, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 12, 0, + 0, 0, 13, 0, 14, 15, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 16, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 12, 0, 17, 0, 13, + 0, 14, 15, 18, 0, 19, 0, 20, 21, 263, + 22, 0, 16, 0, 0, 0, 0, 4, 5, 6, + 7, 8, 0, 0, 17, 0, 0, 0, 0, 266, + 18, 0, 19, 0, 20, 21, 0, 22, 4, 5, + 6, 7, 8, 15, 0, 0, 0, 0, 9, 0, + 0, 0, 10, 16, 0, 0, 11, 12, 0, 0, + 0, 13, 0, 14, 15, 207, 0, 0, 0, 0, + 0, 18, 0, 19, 16, 20, 21, 0, 22, 4, + 5, 6, 7, 8, 0, 0, 17, 0, 0, 0, + 0, 289, 18, 0, 19, 0, 20, 21, 0, 22, + 4, 5, 6, 7, 8, 15, 0, 0, 0, 0, + 9, 0, 0, 0, 10, 16, 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 18, 0, 19, 0, 20, 21, 0, - 22, 4, 5, 6, 7, 8, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, - 12, 0, 0, 0, 13, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 0, 0, 0, 184, 18, 0, 19, 0, 20, 21, - 0, 22, 4, 5, 6, 7, 8, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, - 21, 263, 22, 4, 5, 6, 7, 8, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, - 0, 11, 12, 0, 0, 0, 13, 0, 14, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 266, 18, 0, 19, 0, - 20, 21, 0, 22, 4, 5, 6, 7, 8, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, - 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 0, 0, 0, 0, 289, 18, 0, 19, - 0, 20, 21, 0, 22, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 10, - 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, - 19, 218, 20, 21, 51, 22, 0, 0, 0, 0, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 83, 84, 85, 86, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 220, 87, 88, 0, - 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, - 95, 96, 0, 83, 84, 85, 86, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 0, 87, - 88, 0, 230, 0, 0, 231, 89, 90, 91, 92, - 93, 94, 95, 96, 0, 83, 84, 85, 86, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 87, 88, 0, 0, 0, 0, 138, 89, 90, - 91, 92, 93, 94, 95, 96, 0, 83, 84, 85, + 0, 0, 0, 18, 0, 19, 16, 20, 21, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 18, 0, 19, 218, 20, 21, + 51, 22, 0, 0, 0, 0, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 83, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 220, 87, 88, 0, 0, 0, 0, + 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, + 0, 83, 84, 85, 86, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 87, 88, 0, + 230, 0, 0, 231, 89, 90, 91, 92, 93, 94, + 95, 96, 0, 0, 83, 84, 85, 86, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, + 87, 88, 0, 0, 0, 0, 138, 89, 90, 91, + 92, 93, 94, 95, 96, 0, 0, 83, 84, 85, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, 87, 88, 0, 0, 0, 0, 262, - 89, 90, 91, 92, 93, 94, 95, 96, 0, 83, - 84, 85, 86, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 87, 88, 0, 0, 0, - 0, 287, 89, 90, 91, 92, 93, 94, 95, 96, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 306, 0, 307, 83, - 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 87, 88, 0, 0, 0, - 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, - 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 87, 88, 134, 0, - 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, - 96, 83, 84, 85, 86, 0, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 87, 88, 211, + 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, + 83, 84, 85, 86, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 0, 87, 88, 0, 0, + 0, 0, 287, 89, 90, 91, 92, 93, 94, 95, + 96, 0, 0, 0, 0, 0, 0, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 306, 0, + 307, 83, 84, 85, 86, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, - 95, 96, 83, 84, 85, 86, 0, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 87, 88, - 281, 0, 0, 0, 0, 89, 90, 91, 92, 93, - 94, 95, 96, 83, 84, 85, 86, 0, 97, 98, + 95, 96, 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 87, - 88, 305, 0, 0, 0, 0, 89, 90, 91, 92, - 93, 94, 95, 96, 83, 84, 85, 86, 0, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 87, 88, 309, 0, 0, 0, 0, 89, 90, 91, - 92, 93, 94, 95, 96, 0, 83, 84, 85, 86, + 88, 134, 0, 0, 0, 0, 89, 90, 91, 92, + 93, 94, 95, 96, 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 87, 88, 0, 0, 0, 0, 0, 89, - 90, 91, 92, 93, 94, 95, 96, 0, 83, 84, - 85, 86, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 234, 87, 88, 0, 0, 0, 0, - 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, + 107, 87, 88, 211, 0, 0, 0, 0, 89, 90, + 91, 92, 93, 94, 95, 96, 0, 83, 84, 85, + 86, 0, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 87, 88, 281, 0, 0, 0, 0, + 89, 90, 91, 92, 93, 94, 95, 96, 0, 83, + 84, 85, 86, 0, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 87, 88, 305, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, + 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 87, 88, 309, + 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, + 95, 96, 0, 0, 83, 84, 85, 86, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, + 92, 93, 94, 95, 96, 0, 0, 83, 84, 85, + 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 234, 87, 88, 0, 0, 0, 0, 0, + 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 83, 84, 85, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 240, 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, - 96, 0, 83, 84, 85, 86, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 288, 87, 88, - 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, - 94, 95, 96, 0, 83, 84, 85, 86, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 294, - 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, - 92, 93, 94, 95, 96, 0, 83, 84, 85, 86, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 295, 87, 88, 0, 0, 0, 0, 0, 89, - 90, 91, 92, 93, 94, 95, 96, 0, 83, 84, - 85, 86, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 298, 87, 88, 0, 0, 0, 0, - 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, - 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 299, 83, 84, 85, 86, - 0, 0, 0, 0, 0, 0, 0, 241, 242, 0, - 0, 0, 87, 88, 0, 0, 0, 0, 0, 89, - 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, - 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 83, 84, 85, 86, 0, 0, 0, - 0, 0, 0, 126, 0, 0, 0, 0, 0, 87, + 96, 0, 0, 83, 84, 85, 86, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 288, 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, 92, - 93, 94, 95, 96, 83, 84, 85, 86, 0, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, - 92, 93, 94, 95, 96, 0, 0, 0, 275, 0, + 93, 94, 95, 96, 0, 0, 83, 84, 85, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 83, 84, 85, 86, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 87, 88, 0, + 107, 294, 87, 88, 0, 0, 0, 0, 0, 89, + 90, 91, 92, 93, 94, 95, 96, 0, 0, 83, + 84, 85, 86, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 295, 87, 88, 0, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, + 0, 0, 83, 84, 85, 86, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 298, 87, 88, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 94, 95, 96, 0, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 299, 83, 84, 85, 86, 0, 0, 0, 0, 0, + 0, 0, 241, 242, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, - 95, 96, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 83, 84, - 85, 86, 0, 0, 0, 0, 0, 0, 293, 0, - 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, - 0, 89, 90, 91, 92, 93, 94, 95, 96, 83, + 95, 96, 0, 0, 0, 0, 0, 0, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 83, + 84, 85, 86, 0, 0, 0, 0, 0, 0, 126, + 0, 0, 0, 0, 0, 87, 88, 0, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, + 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 87, 88, 0, + 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, + 95, 96, 0, 0, 0, 275, 0, 0, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 83, + 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 292, 87, 88, 0, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, + 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 83, 84, 85, + 86, 0, 0, 0, 0, 0, 0, 293, 0, 0, + 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, + 89, 90, 91, 92, 93, 94, 95, 96, 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 87, 88, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, - 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 87, 88, 0, 0, - 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, - 96, -146, 84, 85, 0, 0, 0, 0, 99, 100, + 0, 83, 84, 85, 86, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 87, 88, 0, - 84, 85, 0, 0, -146, -146, -146, -146, -146, -146, - 95, 96, 0, 0, 0, 0, 0, 0, 0, -146, - 100, 101, 102, 103, 104, 105, 106, 107, 95, 96, - 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, - 102, 103, 104, 105, 106, 107 + 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, + 95, 96, 0, -146, 84, 85, 0, 0, 0, 0, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 87, + 88, 0, 0, 84, 85, 0, -146, -146, -146, -146, + -146, -146, 95, 96, 0, 0, 0, 0, 0, 0, + 0, 0, -146, 100, 101, 102, 103, 104, 105, 106, + 107, 95, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 100, 101, 102, 103, 104, 105, 106, 107 }; static const yytype_int16 yycheck[] = { 1, 1, 127, 128, 145, 146, 5, 11, 12, 10, 7, 5, 13, 5, 13, 5, 17, 18, 30, 13, - 21, 13, 4, 4, 20, 176, 22, 4, 46, 30, - 46, 32, 28, 29, 59, 46, 139, 62, 57, 64, - 15, 60, 56, 40, 58, 148, 56, 65, 58, 65, - 175, 0, 63, 55, 31, 41, 42, 40, 44, 59, - 16, 17, 61, 62, 57, 4, 207, 61, 62, 61, - 62, 61, 62, 28, 59, 4, 77, 59, 59, 4, - 58, 1, 83, 84, 85, 86, 87, 88, 89, 90, + 21, 13, 4, 4, 20, 176, 22, 4, 47, 30, + 47, 32, 28, 29, 47, 139, 60, 58, 0, 63, + 61, 65, 15, 40, 148, 4, 57, 66, 59, 66, + 175, 64, 16, 17, 31, 53, 54, 55, 56, 28, + 60, 56, 40, 62, 63, 58, 207, 4, 62, 63, + 62, 63, 62, 63, 41, 42, 77, 44, 60, 60, + 60, 4, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 118, 258, 249, 250, - 251, 55, 113, 63, 115, 60, 112, 52, 53, 54, - 55, 4, 60, 60, 125, 126, 13, 252, 129, 254, - 41, 42, 257, 44, 65, 260, 46, 141, 55, 45, - 58, 145, 146, 139, 4, 45, 55, 55, 63, 4, - 55, 46, 148, 57, 57, 45, 1, 4, 60, 4, - 5, 6, 7, 8, 60, 4, 60, 60, 60, 14, - 55, 296, 60, 18, 55, 55, 60, 22, 23, 180, - 176, 55, 27, 31, 29, 30, 187, 238, 118, 123, - 300, 258, 187, -1, -1, 40, -1, -1, -1, -1, - 201, -1, 203, 207, -1, -1, 51, -1, -1, -1, - 10, 11, 57, -1, 59, -1, 61, 62, 219, 64, - -1, -1, -1, -1, 225, 25, -1, -1, -1, 230, - -1, 232, -1, -1, -1, -1, -1, -1, 38, 39, - 241, 242, -1, 244, 245, 249, 250, 251, 48, 49, - 50, 51, 52, 53, 54, 55, -1, -1, -1, -1, + 251, 57, 113, 59, 115, 59, 112, 1, 10, 11, + 41, 42, 56, 44, 125, 126, 64, 252, 129, 254, + 61, 4, 257, 25, 61, 260, 61, 141, 66, 47, + 56, 145, 146, 139, 13, 46, 38, 39, 59, 56, + 4, 46, 148, 56, 64, 4, 56, 49, 50, 51, + 52, 53, 54, 55, 56, 58, 47, 58, 46, 4, + 4, 296, 61, 61, 61, 61, 61, 56, 61, 180, + 176, 56, 56, 31, 61, 56, 187, 238, 118, 300, + 123, 1, 258, -1, 4, 5, 6, 7, 8, 187, + 201, -1, 203, 207, 14, -1, -1, -1, 18, -1, + -1, -1, 22, 23, -1, -1, -1, 27, 219, 29, + 30, -1, -1, -1, 225, -1, -1, -1, -1, 230, + 40, 232, -1, -1, -1, -1, -1, -1, -1, -1, + 241, 242, 52, 244, 245, 249, 250, 251, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, -1, 268, -1, 270, -1, -1, -1, -1, -1, -1, 0, 1, -1, -1, 4, 5, -1, 7, -1, 9, 10, 11, 12, 13, -1, -1, 293, 294, 295, 19, 20, 21, -1, -1, 24, 25, 26, -1, 28, 306, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, 43, - -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, -1, 60, 61, 62, 63, - 1, 65, -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, -1, 38, 39, -1, -1, -1, -1, -1, 40, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - -1, -1, -1, -1, 1, -1, 57, 4, 59, -1, - 7, -1, -1, -1, 65, -1, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 1, -1, -1, 4, 5, - 6, 7, 8, 40, -1, -1, -1, -1, 14, -1, - -1, -1, 18, -1, -1, -1, 22, 23, -1, -1, - 57, 27, 59, 29, 30, -1, -1, -1, 65, -1, - -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, - -1, 57, -1, 59, 60, 61, 62, 63, 64, 1, - -1, -1, 4, 5, 6, 7, 8, -1, -1, -1, - -1, -1, 14, -1, -1, -1, 18, -1, -1, -1, - 22, 23, -1, -1, -1, 27, -1, 29, 30, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - -1, -1, -1, -1, -1, 57, -1, 59, -1, 61, - 62, 63, 64, 1, -1, -1, 4, 5, 6, 7, - 8, -1, -1, -1, -1, -1, 14, -1, -1, -1, - 18, -1, -1, -1, 22, 23, -1, -1, -1, 27, - -1, 29, 30, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 40, -1, -1, -1, -1, -1, 4, 5, - 6, 7, 8, 51, 4, 5, 6, 7, 8, 57, - -1, 59, -1, 61, 62, 1, 64, -1, 4, 5, - 6, 7, 8, -1, 30, -1, -1, -1, 14, -1, - 30, -1, 18, -1, 40, -1, 22, 23, -1, -1, - 40, 27, -1, 29, 30, 51, -1, -1, -1, -1, - -1, 57, -1, 59, 40, 61, 62, 57, 64, 59, - -1, 61, 62, -1, 64, 51, -1, -1, -1, -1, - -1, 57, -1, 59, -1, 61, 62, 1, 64, -1, + -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, + 64, 1, 66, -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, -1, 38, 39, -1, -1, -1, -1, -1, + 40, -1, -1, -1, 49, 50, 51, 52, 53, 54, + 55, 56, -1, -1, -1, -1, 1, -1, 58, 4, + 60, -1, 7, -1, -1, -1, 66, -1, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, + -1, -1, -1, -1, -1, 40, -1, 1, -1, -1, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 14, -1, -1, 58, 18, 60, -1, -1, 22, 23, + -1, 66, -1, 27, 1, 29, 30, 4, 5, 6, + 7, 8, -1, -1, -1, -1, 40, 14, -1, -1, + -1, 18, -1, -1, -1, 22, 23, -1, 52, -1, + 27, -1, 29, 30, 58, -1, 60, -1, 62, 63, + 64, 65, -1, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, + -1, 58, -1, 60, -1, 62, 63, 1, 65, -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, -1, 18, -1, -1, -1, 22, 23, + -1, -1, -1, 27, 1, 29, 30, 4, 5, 6, + 7, 8, -1, -1, -1, -1, 40, 14, -1, -1, + -1, 18, -1, -1, -1, 22, 23, -1, 52, -1, + 27, -1, 29, 30, 58, -1, 60, -1, 62, 63, + -1, 65, -1, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, + -1, 58, -1, 60, -1, 62, 63, 1, 65, -1, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 14, -1, -1, -1, 18, -1, -1, -1, 22, 23, + -1, -1, -1, 27, -1, 29, 30, 4, 5, 6, + 7, 8, -1, -1, -1, -1, 40, 14, -1, -1, + -1, 18, -1, -1, -1, 22, 23, -1, 52, -1, + 27, -1, 29, 30, 58, -1, 60, -1, 62, 63, + -1, 65, -1, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, + 57, 58, -1, 60, -1, 62, 63, -1, 65, 4, + 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, + -1, -1, -1, 18, -1, -1, -1, 22, 23, -1, + -1, -1, 27, -1, 29, 30, 4, 5, 6, 7, + 8, -1, -1, -1, -1, 40, 14, -1, -1, -1, + 18, -1, -1, -1, 22, 23, -1, 52, -1, 27, + -1, 29, 30, 58, -1, 60, -1, 62, 63, 64, + 65, -1, 40, -1, -1, -1, -1, 4, 5, 6, + 7, 8, -1, -1, 52, -1, -1, -1, -1, 57, + 58, -1, 60, -1, 62, 63, -1, 65, 4, 5, + 6, 7, 8, 30, -1, -1, -1, -1, 14, -1, + -1, -1, 18, 40, -1, -1, 22, 23, -1, -1, + -1, 27, -1, 29, 30, 52, -1, -1, -1, -1, + -1, 58, -1, 60, 40, 62, 63, -1, 65, 4, + 5, 6, 7, 8, -1, -1, 52, -1, -1, -1, + -1, 57, 58, -1, 60, -1, 62, 63, -1, 65, + 4, 5, 6, 7, 8, 30, -1, -1, -1, -1, + 14, -1, -1, -1, 18, 40, -1, -1, 22, 23, -1, -1, -1, 27, -1, 29, 30, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, - -1, -1, -1, 57, -1, 59, -1, 61, 62, -1, - 64, 4, 5, 6, 7, 8, -1, -1, -1, -1, - -1, 14, -1, -1, -1, 18, -1, -1, -1, 22, - 23, -1, -1, -1, 27, -1, 29, 30, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, -1, 56, 57, -1, 59, -1, 61, 62, - -1, 64, 4, 5, 6, 7, 8, -1, -1, -1, - -1, -1, 14, -1, -1, -1, 18, -1, -1, -1, - 22, 23, -1, -1, -1, 27, -1, 29, 30, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - -1, -1, -1, -1, -1, 57, -1, 59, -1, 61, - 62, 63, 64, 4, 5, 6, 7, 8, -1, -1, - -1, -1, -1, 14, -1, -1, -1, 18, -1, -1, - -1, 22, 23, -1, -1, -1, 27, -1, 29, 30, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 51, -1, -1, -1, -1, 56, 57, -1, 59, -1, - 61, 62, -1, 64, 4, 5, 6, 7, 8, -1, - -1, -1, -1, -1, 14, -1, -1, -1, 18, -1, - -1, -1, 22, 23, -1, -1, -1, 27, -1, 29, - 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 51, -1, -1, -1, -1, 56, 57, -1, 59, - -1, 61, 62, -1, 64, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 14, -1, -1, -1, 18, - -1, -1, -1, 22, 23, -1, -1, -1, 27, -1, - 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, -1, -1, -1, -1, -1, 57, -1, - 59, 4, 61, 62, 7, 64, -1, -1, -1, -1, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - -1, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 57, -1, 59, 25, 26, -1, + -1, -1, -1, 58, -1, 60, 40, 62, 63, -1, + 65, -1, -1, -1, -1, -1, -1, -1, 52, -1, + -1, -1, -1, -1, 58, -1, 60, 4, 62, 63, + 7, 65, -1, -1, -1, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, -1, -1, -1, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, -1, 60, 25, 26, -1, -1, -1, -1, + -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, + -1, 9, 10, 11, 12, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 25, 26, -1, + 61, -1, -1, 64, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, 9, 10, 11, 12, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, + 25, 26, -1, -1, -1, -1, 64, 32, 33, 34, + 35, 36, 37, 38, 39, -1, -1, 9, 10, 11, + 12, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 25, 26, -1, -1, -1, -1, 64, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + 9, 10, 11, 12, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 25, 26, -1, -1, + -1, -1, 64, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, + 59, 9, 10, 11, 12, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, 9, 10, 11, 12, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 25, - 26, -1, 60, -1, -1, 63, 32, 33, 34, 35, - 36, 37, 38, 39, -1, 9, 10, 11, 12, 45, + 38, 39, -1, 9, 10, 11, 12, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 25, + 26, 59, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, 39, -1, 9, 10, 11, 12, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 25, 26, -1, -1, -1, -1, 63, 32, 33, + 56, 25, 26, 59, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, 9, 10, 11, - 12, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, -1, 25, 26, -1, -1, -1, -1, 63, + 12, -1, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 25, 26, 59, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, 9, - 10, 11, 12, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, -1, 25, 26, -1, -1, -1, - -1, 63, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + 10, 11, 12, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 25, 26, 59, -1, -1, + -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, + -1, 9, 10, 11, 12, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 25, 26, 59, + -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, 9, 10, 11, 12, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, + 35, 36, 37, 38, 39, -1, -1, 9, 10, 11, + 12, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + 9, 10, 11, 12, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 25, 26, -1, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, -1, -1, 9, 10, 11, 12, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 25, + 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, 39, -1, -1, 9, 10, 11, 12, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 25, 26, -1, -1, -1, -1, -1, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, 9, + 10, 11, 12, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 25, 26, -1, -1, -1, + -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, + -1, -1, 9, 10, 11, 12, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 25, 26, + -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 38, 39, -1, -1, -1, -1, -1, -1, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 9, 10, 11, 12, -1, -1, -1, -1, -1, + -1, -1, 20, 21, -1, -1, -1, 25, 26, -1, + -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, -1, -1, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - 9, 10, 11, 12, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 25, 26, 58, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 9, 10, 11, 12, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 25, 26, 58, + -1, 9, 10, 11, 12, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, 9, 10, 11, 12, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 25, 26, - 58, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, 9, 10, 11, 12, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 25, - 26, 58, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 38, 39, 9, 10, 11, 12, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 25, 26, 58, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, 9, 10, 11, 12, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 25, 26, -1, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, -1, 9, 10, - 11, 12, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 25, 26, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - 9, 10, 11, 12, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 25, 26, -1, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 9, 10, 11, 12, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 25, 26, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, 9, 10, 11, 12, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, 9, 10, 11, 12, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 25, 26, -1, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, -1, 9, 10, - 11, 12, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 25, 26, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, - -1, -1, 25, 26, -1, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 9, 10, 11, 12, -1, -1, -1, - -1, -1, -1, 19, -1, -1, -1, -1, -1, 25, - 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 38, 39, 9, 10, 11, 12, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, -1, -1, 43, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 24, 25, 26, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, 19, -1, - -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, 9, - 10, 11, 12, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 25, 26, -1, -1, -1, + 38, 39, -1, -1, -1, 43, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 24, 25, 26, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - 9, 10, 11, 12, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 25, 26, -1, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 9, 10, 11, -1, -1, -1, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 25, 26, -1, - 10, 11, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, -1, -1, -1, -1, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 38, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55 + -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, 19, -1, -1, + -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, -1, 9, + 10, 11, 12, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 25, 26, -1, -1, -1, + -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, + -1, 9, 10, 11, 12, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 25, 26, -1, + -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, + 38, 39, -1, 9, 10, 11, -1, -1, -1, -1, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 25, + 26, -1, -1, 10, 11, -1, 32, 33, 34, 35, + 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, + -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 38, 39, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 49, 50, 51, 52, 53, 54, 55, 56 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 15, 67, 68, 4, 5, 6, 7, 8, 14, - 18, 22, 23, 27, 29, 30, 40, 51, 57, 59, - 61, 62, 64, 71, 73, 76, 82, 0, 16, 17, - 69, 72, 57, 55, 40, 4, 71, 82, 82, 71, - 59, 1, 59, 77, 71, 1, 71, 4, 31, 1, - 4, 7, 76, 1, 63, 71, 1, 4, 13, 14, + 0, 15, 68, 69, 4, 5, 6, 7, 8, 14, + 18, 22, 23, 27, 29, 30, 40, 52, 58, 60, + 62, 63, 65, 72, 74, 77, 83, 0, 16, 17, + 70, 73, 58, 56, 40, 4, 72, 83, 83, 72, + 60, 1, 60, 78, 72, 1, 72, 4, 31, 1, + 4, 7, 77, 1, 64, 72, 1, 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 57, 59, 76, - 89, 90, 91, 9, 10, 11, 12, 25, 26, 32, - 33, 34, 35, 36, 37, 38, 39, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, - 5, 13, 61, 62, 76, 76, 70, 71, 73, 69, - 71, 83, 84, 78, 57, 60, 19, 13, 13, 28, - 4, 4, 79, 58, 58, 1, 55, 63, 63, 46, - 65, 60, 1, 71, 4, 60, 60, 65, 46, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 55, 59, 62, 64, 85, 76, 1, - 60, 63, 71, 13, 56, 71, 70, 56, 58, 79, - 4, 59, 74, 75, 71, 1, 71, 85, 85, 1, - 71, 45, 41, 42, 44, 1, 90, 51, 81, 82, - 58, 58, 81, 81, 90, 4, 85, 86, 4, 57, - 59, 76, 87, 88, 89, 45, 55, 63, 71, 55, - 60, 63, 4, 59, 56, 84, 44, 4, 56, 58, - 56, 20, 21, 80, 57, 57, 71, 71, 81, 45, - 60, 60, 46, 63, 60, 71, 4, 60, 46, 65, - 60, 71, 63, 63, 71, 55, 56, 71, 4, 75, - 60, 71, 71, 71, 71, 43, 81, 81, 81, 85, - 85, 58, 85, 88, 85, 55, 55, 63, 56, 56, - 71, 71, 24, 19, 56, 56, 60, 55, 56, 56, - 71, 71, 71, 85, 80, 58, 56, 58, 71, 58 + 25, 26, 27, 28, 29, 30, 31, 58, 60, 77, + 90, 91, 92, 9, 10, 11, 12, 25, 26, 32, + 33, 34, 35, 36, 37, 38, 39, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 72, + 5, 13, 62, 63, 77, 77, 71, 72, 74, 70, + 72, 84, 85, 79, 58, 61, 19, 13, 13, 28, + 4, 4, 80, 59, 59, 1, 56, 64, 64, 47, + 66, 61, 1, 72, 4, 61, 61, 66, 47, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 56, 60, 63, 65, 86, 77, 1, + 61, 64, 72, 13, 57, 72, 71, 57, 59, 80, + 4, 60, 75, 76, 72, 1, 72, 86, 86, 1, + 72, 46, 41, 42, 44, 1, 91, 52, 82, 83, + 59, 59, 82, 82, 91, 4, 86, 87, 4, 58, + 60, 77, 88, 89, 90, 46, 56, 64, 72, 56, + 61, 64, 4, 60, 57, 85, 44, 4, 57, 59, + 57, 20, 21, 81, 58, 58, 72, 72, 82, 46, + 61, 61, 47, 64, 61, 72, 4, 61, 47, 66, + 61, 72, 64, 64, 72, 56, 57, 72, 4, 76, + 61, 72, 72, 72, 72, 43, 82, 82, 82, 86, + 86, 59, 86, 89, 86, 56, 56, 64, 57, 57, + 72, 72, 24, 19, 57, 57, 61, 56, 57, 57, + 72, 72, 72, 86, 81, 59, 57, 59, 72, 59 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 66, 67, 67, 68, 68, 69, 69, 70, 70, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, - 72, 72, 72, 72, 73, 73, 74, 74, 75, 75, - 77, 76, 78, 76, 79, 79, 79, 80, 80, 81, - 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 83, 83, 84, 85, 85, 85, 86, 86, 87, - 87, 88, 88, 88, 88, 88, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 90, 90, 90, 90, 91, - 91, 91, 91, 91, 91, 91, 91 + 0, 67, 68, 68, 69, 69, 70, 70, 71, 71, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, + 73, 73, 73, 73, 74, 74, 75, 75, 76, 76, + 78, 77, 79, 77, 80, 80, 80, 81, 81, 82, + 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 84, 84, 85, 86, 86, 86, 87, 87, 88, + 88, 89, 89, 89, 89, 89, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 91, 91, 91, 91, 92, + 92, 92, 92, 92, 92, 92, 92 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1863,163 +1846,163 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 4: /* IDENT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1867 "parser.c" /* yacc.c:1257 */ +#line 1850 "parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1873 "parser.c" /* yacc.c:1257 */ +#line 1856 "parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1879 "parser.c" /* yacc.c:1257 */ +#line 1862 "parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1885 "parser.c" /* yacc.c:1257 */ +#line 1868 "parser.c" /* yacc.c:1257 */ break; case 41: /* QQSTRING_TEXT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1891 "parser.c" /* yacc.c:1257 */ +#line 1874 "parser.c" /* yacc.c:1257 */ break; - case 68: /* Module */ + case 69: /* Module */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1897 "parser.c" /* yacc.c:1257 */ +#line 1880 "parser.c" /* yacc.c:1257 */ break; - case 69: /* Imports */ + case 70: /* Imports */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1903 "parser.c" /* yacc.c:1257 */ +#line 1886 "parser.c" /* yacc.c:1257 */ break; - case 70: /* FuncDefs */ + case 71: /* FuncDefs */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1909 "parser.c" /* yacc.c:1257 */ +#line 1892 "parser.c" /* yacc.c:1257 */ break; - case 71: /* Exp */ + case 72: /* Exp */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1915 "parser.c" /* yacc.c:1257 */ +#line 1898 "parser.c" /* yacc.c:1257 */ break; - case 72: /* Import */ + case 73: /* Import */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1921 "parser.c" /* yacc.c:1257 */ +#line 1904 "parser.c" /* yacc.c:1257 */ break; - case 73: /* FuncDef */ + case 74: /* FuncDef */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1927 "parser.c" /* yacc.c:1257 */ +#line 1910 "parser.c" /* yacc.c:1257 */ break; - case 74: /* Params */ + case 75: /* Params */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1933 "parser.c" /* yacc.c:1257 */ +#line 1916 "parser.c" /* yacc.c:1257 */ break; - case 75: /* Param */ + case 76: /* Param */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1939 "parser.c" /* yacc.c:1257 */ +#line 1922 "parser.c" /* yacc.c:1257 */ break; - case 76: /* String */ + case 77: /* String */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1945 "parser.c" /* yacc.c:1257 */ +#line 1928 "parser.c" /* yacc.c:1257 */ break; - case 79: /* QQString */ + case 80: /* QQString */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1951 "parser.c" /* yacc.c:1257 */ +#line 1934 "parser.c" /* yacc.c:1257 */ break; - case 80: /* ElseBody */ + case 81: /* ElseBody */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1957 "parser.c" /* yacc.c:1257 */ +#line 1940 "parser.c" /* yacc.c:1257 */ break; - case 81: /* ExpD */ + case 82: /* ExpD */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1963 "parser.c" /* yacc.c:1257 */ +#line 1946 "parser.c" /* yacc.c:1257 */ break; - case 82: /* Term */ + case 83: /* Term */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1969 "parser.c" /* yacc.c:1257 */ +#line 1952 "parser.c" /* yacc.c:1257 */ break; - case 83: /* Args */ + case 84: /* Args */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1975 "parser.c" /* yacc.c:1257 */ +#line 1958 "parser.c" /* yacc.c:1257 */ break; - case 84: /* Arg */ + case 85: /* Arg */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1981 "parser.c" /* yacc.c:1257 */ +#line 1964 "parser.c" /* yacc.c:1257 */ break; - case 85: /* Pattern */ + case 86: /* Pattern */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1987 "parser.c" /* yacc.c:1257 */ +#line 1970 "parser.c" /* yacc.c:1257 */ break; - case 86: /* ArrayPats */ + case 87: /* ArrayPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1993 "parser.c" /* yacc.c:1257 */ +#line 1976 "parser.c" /* yacc.c:1257 */ break; - case 87: /* ObjPats */ + case 88: /* ObjPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1999 "parser.c" /* yacc.c:1257 */ +#line 1982 "parser.c" /* yacc.c:1257 */ break; - case 88: /* ObjPat */ + case 89: /* ObjPat */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2005 "parser.c" /* yacc.c:1257 */ +#line 1988 "parser.c" /* yacc.c:1257 */ break; - case 89: /* Keyword */ + case 90: /* Keyword */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 2011 "parser.c" /* yacc.c:1257 */ +#line 1994 "parser.c" /* yacc.c:1257 */ break; - case 90: /* MkDict */ + case 91: /* MkDict */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2017 "parser.c" /* yacc.c:1257 */ +#line 2000 "parser.c" /* yacc.c:1257 */ break; - case 91: /* MkDictPair */ + case 92: /* MkDictPair */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2023 "parser.c" /* yacc.c:1257 */ +#line 2006 "parser.c" /* yacc.c:1257 */ break; @@ -2311,31 +2294,31 @@ yyreduce: switch (yyn) { case 2: -#line 272 "parser.y" /* yacc.c:1646 */ +#line 273 "parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2319 "parser.c" /* yacc.c:1646 */ +#line 2302 "parser.c" /* yacc.c:1646 */ break; case 3: -#line 275 "parser.y" /* yacc.c:1646 */ +#line 276 "parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2327 "parser.c" /* yacc.c:1646 */ +#line 2310 "parser.c" /* yacc.c:1646 */ break; case 4: -#line 280 "parser.y" /* yacc.c:1646 */ +#line 281 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2335 "parser.c" /* yacc.c:1646 */ +#line 2318 "parser.c" /* yacc.c:1646 */ break; case 5: -#line 283 "parser.y" /* yacc.c:1646 */ +#line 284 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2344,358 +2327,358 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2348 "parser.c" /* yacc.c:1646 */ +#line 2331 "parser.c" /* yacc.c:1646 */ break; case 6: -#line 293 "parser.y" /* yacc.c:1646 */ +#line 294 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2356 "parser.c" /* yacc.c:1646 */ +#line 2339 "parser.c" /* yacc.c:1646 */ break; case 7: -#line 296 "parser.y" /* yacc.c:1646 */ +#line 297 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2364 "parser.c" /* yacc.c:1646 */ +#line 2347 "parser.c" /* yacc.c:1646 */ break; case 8: -#line 301 "parser.y" /* yacc.c:1646 */ +#line 302 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2372 "parser.c" /* yacc.c:1646 */ +#line 2355 "parser.c" /* yacc.c:1646 */ break; case 9: -#line 304 "parser.y" /* yacc.c:1646 */ +#line 305 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2380 "parser.c" /* yacc.c:1646 */ +#line 2363 "parser.c" /* yacc.c:1646 */ break; case 10: -#line 309 "parser.y" /* yacc.c:1646 */ +#line 310 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2388 "parser.c" /* yacc.c:1646 */ +#line 2371 "parser.c" /* yacc.c:1646 */ break; case 11: -#line 313 "parser.y" /* yacc.c:1646 */ +#line 314 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2396 "parser.c" /* yacc.c:1646 */ +#line 2379 "parser.c" /* yacc.c:1646 */ break; case 12: -#line 317 "parser.y" /* yacc.c:1646 */ +#line 318 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2404 "parser.c" /* yacc.c:1646 */ +#line 2387 "parser.c" /* yacc.c:1646 */ break; case 13: -#line 321 "parser.y" /* yacc.c:1646 */ +#line 322 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2412 "parser.c" /* yacc.c:1646 */ +#line 2395 "parser.c" /* yacc.c:1646 */ break; case 14: -#line 325 "parser.y" /* yacc.c:1646 */ +#line 326 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2420 "parser.c" /* yacc.c:1646 */ +#line 2403 "parser.c" /* yacc.c:1646 */ break; case 15: -#line 329 "parser.y" /* yacc.c:1646 */ +#line 330 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2428 "parser.c" /* yacc.c:1646 */ +#line 2411 "parser.c" /* yacc.c:1646 */ break; case 16: -#line 332 "parser.y" /* yacc.c:1646 */ +#line 333 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2437 "parser.c" /* yacc.c:1646 */ +#line 2420 "parser.c" /* yacc.c:1646 */ break; case 17: -#line 337 "parser.y" /* yacc.c:1646 */ +#line 338 "parser.y" /* yacc.c:1646 */ { //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4); (yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk))); } -#line 2446 "parser.c" /* yacc.c:1646 */ +#line 2429 "parser.c" /* yacc.c:1646 */ break; case 18: -#line 341 "parser.y" /* yacc.c:1646 */ +#line 342 "parser.y" /* yacc.c:1646 */ { //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK)); (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); } -#line 2455 "parser.c" /* yacc.c:1646 */ +#line 2438 "parser.c" /* yacc.c:1646 */ break; case 19: -#line 345 "parser.y" /* yacc.c:1646 */ +#line 346 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2464 "parser.c" /* yacc.c:1646 */ +#line 2447 "parser.c" /* yacc.c:1646 */ break; case 20: -#line 350 "parser.y" /* yacc.c:1646 */ +#line 351 "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 2475 "parser.c" /* yacc.c:1646 */ +#line 2458 "parser.c" /* yacc.c:1646 */ break; case 21: -#line 362 "parser.y" /* yacc.c:1646 */ +#line 363 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2483 "parser.c" /* yacc.c:1646 */ +#line 2466 "parser.c" /* yacc.c:1646 */ break; case 22: -#line 366 "parser.y" /* yacc.c:1646 */ +#line 367 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2491 "parser.c" /* yacc.c:1646 */ +#line 2474 "parser.c" /* yacc.c:1646 */ break; case 23: -#line 370 "parser.y" /* yacc.c:1646 */ +#line 371 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2499 "parser.c" /* yacc.c:1646 */ +#line 2482 "parser.c" /* yacc.c:1646 */ break; case 24: -#line 374 "parser.y" /* yacc.c:1646 */ +#line 375 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2507 "parser.c" /* yacc.c:1646 */ +#line 2490 "parser.c" /* yacc.c:1646 */ break; case 25: -#line 378 "parser.y" /* yacc.c:1646 */ +#line 379 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2515 "parser.c" /* yacc.c:1646 */ +#line 2498 "parser.c" /* yacc.c:1646 */ break; case 26: -#line 382 "parser.y" /* yacc.c:1646 */ +#line 383 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2523 "parser.c" /* yacc.c:1646 */ +#line 2506 "parser.c" /* yacc.c:1646 */ break; case 27: -#line 386 "parser.y" /* yacc.c:1646 */ +#line 387 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2531 "parser.c" /* yacc.c:1646 */ +#line 2514 "parser.c" /* yacc.c:1646 */ break; case 28: -#line 390 "parser.y" /* yacc.c:1646 */ +#line 391 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2539 "parser.c" /* yacc.c:1646 */ +#line 2522 "parser.c" /* yacc.c:1646 */ break; case 29: -#line 394 "parser.y" /* yacc.c:1646 */ +#line 395 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2547 "parser.c" /* yacc.c:1646 */ +#line 2530 "parser.c" /* yacc.c:1646 */ break; case 30: -#line 398 "parser.y" /* yacc.c:1646 */ +#line 399 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2555 "parser.c" /* yacc.c:1646 */ +#line 2538 "parser.c" /* yacc.c:1646 */ break; case 31: -#line 402 "parser.y" /* yacc.c:1646 */ +#line 403 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2563 "parser.c" /* yacc.c:1646 */ +#line 2546 "parser.c" /* yacc.c:1646 */ break; case 32: -#line 406 "parser.y" /* yacc.c:1646 */ +#line 407 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2571 "parser.c" /* yacc.c:1646 */ +#line 2554 "parser.c" /* yacc.c:1646 */ break; case 33: -#line 410 "parser.y" /* yacc.c:1646 */ +#line 411 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2579 "parser.c" /* yacc.c:1646 */ +#line 2562 "parser.c" /* yacc.c:1646 */ break; case 34: -#line 414 "parser.y" /* yacc.c:1646 */ +#line 415 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2587 "parser.c" /* yacc.c:1646 */ +#line 2570 "parser.c" /* yacc.c:1646 */ break; case 35: -#line 418 "parser.y" /* yacc.c:1646 */ +#line 419 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2595 "parser.c" /* yacc.c:1646 */ +#line 2578 "parser.c" /* yacc.c:1646 */ break; case 36: -#line 422 "parser.y" /* yacc.c:1646 */ +#line 423 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2603 "parser.c" /* yacc.c:1646 */ +#line 2586 "parser.c" /* yacc.c:1646 */ break; case 37: -#line 426 "parser.y" /* yacc.c:1646 */ +#line 427 "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 2613 "parser.c" /* yacc.c:1646 */ +#line 2596 "parser.c" /* yacc.c:1646 */ break; case 38: -#line 432 "parser.y" /* yacc.c:1646 */ +#line 433 "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 2623 "parser.c" /* yacc.c:1646 */ +#line 2606 "parser.c" /* yacc.c:1646 */ break; case 39: -#line 438 "parser.y" /* yacc.c:1646 */ +#line 439 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2631 "parser.c" /* yacc.c:1646 */ +#line 2614 "parser.c" /* yacc.c:1646 */ break; case 40: -#line 442 "parser.y" /* yacc.c:1646 */ +#line 443 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2639 "parser.c" /* yacc.c:1646 */ +#line 2622 "parser.c" /* yacc.c:1646 */ break; case 41: -#line 446 "parser.y" /* yacc.c:1646 */ +#line 447 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2647 "parser.c" /* yacc.c:1646 */ +#line 2630 "parser.c" /* yacc.c:1646 */ break; case 42: -#line 450 "parser.y" /* yacc.c:1646 */ +#line 451 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2655 "parser.c" /* yacc.c:1646 */ +#line 2638 "parser.c" /* yacc.c:1646 */ break; case 43: -#line 454 "parser.y" /* yacc.c:1646 */ +#line 455 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2663 "parser.c" /* yacc.c:1646 */ +#line 2646 "parser.c" /* yacc.c:1646 */ break; case 44: -#line 458 "parser.y" /* yacc.c:1646 */ +#line 459 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2671 "parser.c" /* yacc.c:1646 */ +#line 2654 "parser.c" /* yacc.c:1646 */ break; case 45: -#line 462 "parser.y" /* yacc.c:1646 */ +#line 463 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2679 "parser.c" /* yacc.c:1646 */ +#line 2662 "parser.c" /* yacc.c:1646 */ break; case 46: -#line 466 "parser.y" /* yacc.c:1646 */ +#line 467 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2687 "parser.c" /* yacc.c:1646 */ +#line 2670 "parser.c" /* yacc.c:1646 */ break; case 47: -#line 470 "parser.y" /* yacc.c:1646 */ +#line 471 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2695 "parser.c" /* yacc.c:1646 */ +#line 2678 "parser.c" /* yacc.c:1646 */ break; case 48: -#line 475 "parser.y" /* yacc.c:1646 */ +#line 476 "parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-4].blk)); // XXX Make gen_import take only blocks and the int is_data so we @@ -2705,11 +2688,11 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2709 "parser.c" /* yacc.c:1646 */ +#line 2692 "parser.c" /* yacc.c:1646 */ break; case 49: -#line 484 "parser.y" /* yacc.c:1646 */ +#line 485 "parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-3].blk)); (yyval.blk) = gen_import(jv_string_value(v), gen_noop(), jv_string_value((yyvsp[-1].literal)), 0); @@ -2717,22 +2700,22 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2721 "parser.c" /* yacc.c:1646 */ +#line 2704 "parser.c" /* yacc.c:1646 */ break; case 50: -#line 491 "parser.y" /* yacc.c:1646 */ +#line 492 "parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-1].blk)); (yyval.blk) = gen_import(jv_string_value(v), gen_noop(), NULL, 0); block_free((yyvsp[-1].blk)); jv_free(v); } -#line 2732 "parser.c" /* yacc.c:1646 */ +#line 2715 "parser.c" /* yacc.c:1646 */ break; case 51: -#line 497 "parser.y" /* yacc.c:1646 */ +#line 498 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2745,11 +2728,11 @@ yyreduce: block_free((yyvsp[-4].blk)); jv_free((yyvsp[-2].literal)); } -#line 2749 "parser.c" /* yacc.c:1646 */ +#line 2732 "parser.c" /* yacc.c:1646 */ break; case 52: -#line 509 "parser.y" /* yacc.c:1646 */ +#line 510 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2761,11 +2744,11 @@ yyreduce: } block_free((yyvsp[-2].blk)); } -#line 2765 "parser.c" /* yacc.c:1646 */ +#line 2748 "parser.c" /* yacc.c:1646 */ break; case 53: -#line 520 "parser.y" /* yacc.c:1646 */ +#line 521 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2778,173 +2761,173 @@ yyreduce: block_free((yyvsp[-5].blk)); jv_free((yyvsp[-2].literal)); } -#line 2782 "parser.c" /* yacc.c:1646 */ +#line 2765 "parser.c" /* yacc.c:1646 */ break; case 54: -#line 534 "parser.y" /* yacc.c:1646 */ +#line 535 "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 2791 "parser.c" /* yacc.c:1646 */ +#line 2774 "parser.c" /* yacc.c:1646 */ break; case 55: -#line 539 "parser.y" /* yacc.c:1646 */ +#line 540 "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 2800 "parser.c" /* yacc.c:1646 */ +#line 2783 "parser.c" /* yacc.c:1646 */ break; case 56: -#line 545 "parser.y" /* yacc.c:1646 */ +#line 546 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2808 "parser.c" /* yacc.c:1646 */ +#line 2791 "parser.c" /* yacc.c:1646 */ break; case 57: -#line 548 "parser.y" /* yacc.c:1646 */ +#line 549 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2816 "parser.c" /* yacc.c:1646 */ +#line 2799 "parser.c" /* yacc.c:1646 */ break; case 58: -#line 553 "parser.y" /* yacc.c:1646 */ +#line 554 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2825 "parser.c" /* yacc.c:1646 */ +#line 2808 "parser.c" /* yacc.c:1646 */ break; case 59: -#line 558 "parser.y" /* yacc.c:1646 */ +#line 559 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2834 "parser.c" /* yacc.c:1646 */ +#line 2817 "parser.c" /* yacc.c:1646 */ break; case 60: -#line 565 "parser.y" /* yacc.c:1646 */ +#line 566 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("text"); } -#line 2840 "parser.c" /* yacc.c:1646 */ +#line 2823 "parser.c" /* yacc.c:1646 */ break; case 61: -#line 565 "parser.y" /* yacc.c:1646 */ +#line 566 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2849 "parser.c" /* yacc.c:1646 */ +#line 2832 "parser.c" /* yacc.c:1646 */ break; case 62: -#line 569 "parser.y" /* yacc.c:1646 */ +#line 570 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = (yyvsp[-1].literal); } -#line 2855 "parser.c" /* yacc.c:1646 */ +#line 2838 "parser.c" /* yacc.c:1646 */ break; case 63: -#line 569 "parser.y" /* yacc.c:1646 */ +#line 570 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2864 "parser.c" /* yacc.c:1646 */ +#line 2847 "parser.c" /* yacc.c:1646 */ break; case 64: -#line 576 "parser.y" /* yacc.c:1646 */ +#line 577 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_string("")); } -#line 2872 "parser.c" /* yacc.c:1646 */ +#line 2855 "parser.c" /* yacc.c:1646 */ break; case 65: -#line 579 "parser.y" /* yacc.c:1646 */ +#line 580 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 2880 "parser.c" /* yacc.c:1646 */ +#line 2863 "parser.c" /* yacc.c:1646 */ break; case 66: -#line 582 "parser.y" /* yacc.c:1646 */ +#line 583 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 2888 "parser.c" /* yacc.c:1646 */ +#line 2871 "parser.c" /* yacc.c:1646 */ break; case 67: -#line 588 "parser.y" /* yacc.c:1646 */ +#line 589 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2896 "parser.c" /* yacc.c:1646 */ +#line 2879 "parser.c" /* yacc.c:1646 */ break; case 68: -#line 591 "parser.y" /* yacc.c:1646 */ +#line 592 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 2904 "parser.c" /* yacc.c:1646 */ +#line 2887 "parser.c" /* yacc.c:1646 */ break; case 69: -#line 596 "parser.y" /* yacc.c:1646 */ +#line 597 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2912 "parser.c" /* yacc.c:1646 */ +#line 2895 "parser.c" /* yacc.c:1646 */ break; case 70: -#line 599 "parser.y" /* yacc.c:1646 */ +#line 600 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2920 "parser.c" /* yacc.c:1646 */ +#line 2903 "parser.c" /* yacc.c:1646 */ break; case 71: -#line 602 "parser.y" /* yacc.c:1646 */ +#line 603 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2928 "parser.c" /* yacc.c:1646 */ +#line 2911 "parser.c" /* yacc.c:1646 */ break; case 72: -#line 608 "parser.y" /* yacc.c:1646 */ +#line 609 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2936 "parser.c" /* yacc.c:1646 */ +#line 2919 "parser.c" /* yacc.c:1646 */ break; case 73: -#line 611 "parser.y" /* yacc.c:1646 */ +#line 612 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 2944 "parser.c" /* yacc.c:1646 */ +#line 2927 "parser.c" /* yacc.c:1646 */ break; case 74: -#line 614 "parser.y" /* yacc.c:1646 */ +#line 615 "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, @@ -2953,231 +2936,231 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 2957 "parser.c" /* yacc.c:1646 */ +#line 2940 "parser.c" /* yacc.c:1646 */ break; case 75: -#line 622 "parser.y" /* yacc.c:1646 */ +#line 623 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 2966 "parser.c" /* yacc.c:1646 */ +#line 2949 "parser.c" /* yacc.c:1646 */ break; case 76: -#line 626 "parser.y" /* yacc.c:1646 */ +#line 627 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 2974 "parser.c" /* yacc.c:1646 */ +#line 2957 "parser.c" /* yacc.c:1646 */ break; case 77: -#line 629 "parser.y" /* yacc.c:1646 */ +#line 630 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 2982 "parser.c" /* yacc.c:1646 */ +#line 2965 "parser.c" /* yacc.c:1646 */ break; case 78: -#line 632 "parser.y" /* yacc.c:1646 */ +#line 633 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2990 "parser.c" /* yacc.c:1646 */ +#line 2973 "parser.c" /* yacc.c:1646 */ break; case 79: -#line 635 "parser.y" /* yacc.c:1646 */ +#line 636 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 2998 "parser.c" /* yacc.c:1646 */ +#line 2981 "parser.c" /* yacc.c:1646 */ break; case 80: -#line 638 "parser.y" /* yacc.c:1646 */ +#line 639 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 3006 "parser.c" /* yacc.c:1646 */ +#line 2989 "parser.c" /* yacc.c:1646 */ break; case 81: -#line 641 "parser.y" /* yacc.c:1646 */ +#line 642 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 3014 "parser.c" /* yacc.c:1646 */ +#line 2997 "parser.c" /* yacc.c:1646 */ break; case 82: -#line 644 "parser.y" /* yacc.c:1646 */ +#line 645 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3022 "parser.c" /* yacc.c:1646 */ +#line 3005 "parser.c" /* yacc.c:1646 */ break; case 83: -#line 647 "parser.y" /* yacc.c:1646 */ +#line 648 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 3030 "parser.c" /* yacc.c:1646 */ +#line 3013 "parser.c" /* yacc.c:1646 */ break; case 84: -#line 650 "parser.y" /* yacc.c:1646 */ +#line 651 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3039 "parser.c" /* yacc.c:1646 */ +#line 3022 "parser.c" /* yacc.c:1646 */ break; case 85: -#line 654 "parser.y" /* yacc.c:1646 */ +#line 655 "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(); } -#line 3049 "parser.c" /* yacc.c:1646 */ +#line 3032 "parser.c" /* yacc.c:1646 */ break; case 86: -#line 660 "parser.y" /* yacc.c:1646 */ +#line 661 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3057 "parser.c" /* yacc.c:1646 */ +#line 3040 "parser.c" /* yacc.c:1646 */ break; case 87: -#line 663 "parser.y" /* yacc.c:1646 */ +#line 664 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3065 "parser.c" /* yacc.c:1646 */ +#line 3048 "parser.c" /* yacc.c:1646 */ break; case 88: -#line 666 "parser.y" /* yacc.c:1646 */ +#line 667 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3073 "parser.c" /* yacc.c:1646 */ +#line 3056 "parser.c" /* yacc.c:1646 */ break; case 89: -#line 669 "parser.y" /* yacc.c:1646 */ +#line 670 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3081 "parser.c" /* yacc.c:1646 */ +#line 3064 "parser.c" /* yacc.c:1646 */ break; case 90: -#line 672 "parser.y" /* yacc.c:1646 */ +#line 673 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3089 "parser.c" /* yacc.c:1646 */ +#line 3072 "parser.c" /* yacc.c:1646 */ break; case 91: -#line 675 "parser.y" /* yacc.c:1646 */ +#line 676 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3097 "parser.c" /* yacc.c:1646 */ +#line 3080 "parser.c" /* yacc.c:1646 */ break; case 92: -#line 678 "parser.y" /* yacc.c:1646 */ +#line 679 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3105 "parser.c" /* yacc.c:1646 */ +#line 3088 "parser.c" /* yacc.c:1646 */ break; case 93: -#line 681 "parser.y" /* yacc.c:1646 */ +#line 682 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3113 "parser.c" /* yacc.c:1646 */ +#line 3096 "parser.c" /* yacc.c:1646 */ break; case 94: -#line 684 "parser.y" /* yacc.c:1646 */ +#line 685 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3121 "parser.c" /* yacc.c:1646 */ +#line 3104 "parser.c" /* yacc.c:1646 */ break; case 95: -#line 687 "parser.y" /* yacc.c:1646 */ +#line 688 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3129 "parser.c" /* yacc.c:1646 */ +#line 3112 "parser.c" /* yacc.c:1646 */ break; case 96: -#line 690 "parser.y" /* yacc.c:1646 */ +#line 691 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3137 "parser.c" /* yacc.c:1646 */ +#line 3120 "parser.c" /* yacc.c:1646 */ break; case 97: -#line 693 "parser.y" /* yacc.c:1646 */ +#line 694 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3145 "parser.c" /* yacc.c:1646 */ +#line 3128 "parser.c" /* yacc.c:1646 */ break; case 98: -#line 696 "parser.y" /* yacc.c:1646 */ +#line 697 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3153 "parser.c" /* yacc.c:1646 */ +#line 3136 "parser.c" /* yacc.c:1646 */ break; case 99: -#line 699 "parser.y" /* yacc.c:1646 */ +#line 700 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3161 "parser.c" /* yacc.c:1646 */ +#line 3144 "parser.c" /* yacc.c:1646 */ break; case 100: -#line 702 "parser.y" /* yacc.c:1646 */ +#line 703 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_collect((yyvsp[-1].blk)); } -#line 3169 "parser.c" /* yacc.c:1646 */ +#line 3152 "parser.c" /* yacc.c:1646 */ break; case 101: -#line 705 "parser.y" /* yacc.c:1646 */ +#line 706 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_array()); } -#line 3177 "parser.c" /* yacc.c:1646 */ +#line 3160 "parser.c" /* yacc.c:1646 */ break; case 102: -#line 708 "parser.y" /* yacc.c:1646 */ +#line 709 "parser.y" /* yacc.c:1646 */ { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3185,29 +3168,29 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3189 "parser.c" /* yacc.c:1646 */ +#line 3172 "parser.c" /* yacc.c:1646 */ break; case 103: -#line 715 "parser.y" /* yacc.c:1646 */ +#line 716 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname), jv_string("line"), jv_number(locfile_get_line(locations, (yyloc).start) + 1))); } -#line 3198 "parser.c" /* yacc.c:1646 */ +#line 3181 "parser.c" /* yacc.c:1646 */ break; case 104: -#line 719 "parser.y" /* yacc.c:1646 */ +#line 720 "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 3207 "parser.c" /* yacc.c:1646 */ +#line 3190 "parser.c" /* yacc.c:1646 */ break; case 105: -#line 723 "parser.y" /* yacc.c:1646 */ +#line 724 "parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3220,409 +3203,409 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3224 "parser.c" /* yacc.c:1646 */ +#line 3207 "parser.c" /* yacc.c:1646 */ break; case 106: -#line 735 "parser.y" /* yacc.c:1646 */ +#line 736 "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 3234 "parser.c" /* yacc.c:1646 */ +#line 3217 "parser.c" /* yacc.c:1646 */ break; case 107: -#line 740 "parser.y" /* yacc.c:1646 */ +#line 741 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3240 "parser.c" /* yacc.c:1646 */ +#line 3223 "parser.c" /* yacc.c:1646 */ break; case 108: -#line 741 "parser.y" /* yacc.c:1646 */ +#line 742 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3246 "parser.c" /* yacc.c:1646 */ +#line 3229 "parser.c" /* yacc.c:1646 */ break; case 109: -#line 742 "parser.y" /* yacc.c:1646 */ +#line 743 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-3].blk); } -#line 3252 "parser.c" /* yacc.c:1646 */ +#line 3235 "parser.c" /* yacc.c:1646 */ break; case 110: -#line 743 "parser.y" /* yacc.c:1646 */ +#line 744 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3258 "parser.c" /* yacc.c:1646 */ +#line 3241 "parser.c" /* yacc.c:1646 */ break; case 111: -#line 746 "parser.y" /* yacc.c:1646 */ +#line 747 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3266 "parser.c" /* yacc.c:1646 */ +#line 3249 "parser.c" /* yacc.c:1646 */ break; case 112: -#line 749 "parser.y" /* yacc.c:1646 */ +#line 750 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3274 "parser.c" /* yacc.c:1646 */ +#line 3257 "parser.c" /* yacc.c:1646 */ break; case 113: -#line 754 "parser.y" /* yacc.c:1646 */ +#line 755 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3282 "parser.c" /* yacc.c:1646 */ +#line 3265 "parser.c" /* yacc.c:1646 */ break; case 114: -#line 759 "parser.y" /* yacc.c:1646 */ +#line 760 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3291 "parser.c" /* yacc.c:1646 */ +#line 3274 "parser.c" /* yacc.c:1646 */ break; case 115: -#line 763 "parser.y" /* yacc.c:1646 */ +#line 764 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3299 "parser.c" /* yacc.c:1646 */ +#line 3282 "parser.c" /* yacc.c:1646 */ break; case 116: -#line 766 "parser.y" /* yacc.c:1646 */ +#line 767 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3307 "parser.c" /* yacc.c:1646 */ +#line 3290 "parser.c" /* yacc.c:1646 */ break; case 117: -#line 771 "parser.y" /* yacc.c:1646 */ +#line 772 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3315 "parser.c" /* yacc.c:1646 */ +#line 3298 "parser.c" /* yacc.c:1646 */ break; case 118: -#line 774 "parser.y" /* yacc.c:1646 */ +#line 775 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3323 "parser.c" /* yacc.c:1646 */ +#line 3306 "parser.c" /* yacc.c:1646 */ break; case 119: -#line 779 "parser.y" /* yacc.c:1646 */ +#line 780 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3331 "parser.c" /* yacc.c:1646 */ +#line 3314 "parser.c" /* yacc.c:1646 */ break; case 120: -#line 782 "parser.y" /* yacc.c:1646 */ +#line 783 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3339 "parser.c" /* yacc.c:1646 */ +#line 3322 "parser.c" /* yacc.c:1646 */ break; case 121: -#line 787 "parser.y" /* yacc.c:1646 */ +#line 788 "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 3347 "parser.c" /* yacc.c:1646 */ +#line 3330 "parser.c" /* yacc.c:1646 */ break; case 122: -#line 790 "parser.y" /* yacc.c:1646 */ +#line 791 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3355 "parser.c" /* yacc.c:1646 */ +#line 3338 "parser.c" /* yacc.c:1646 */ break; case 123: -#line 793 "parser.y" /* yacc.c:1646 */ +#line 794 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3363 "parser.c" /* yacc.c:1646 */ +#line 3346 "parser.c" /* yacc.c:1646 */ break; case 124: -#line 796 "parser.y" /* yacc.c:1646 */ +#line 797 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3371 "parser.c" /* yacc.c:1646 */ +#line 3354 "parser.c" /* yacc.c:1646 */ break; case 125: -#line 799 "parser.y" /* yacc.c:1646 */ +#line 800 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3379 "parser.c" /* yacc.c:1646 */ +#line 3362 "parser.c" /* yacc.c:1646 */ break; case 126: -#line 804 "parser.y" /* yacc.c:1646 */ +#line 805 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("as"); } -#line 3387 "parser.c" /* yacc.c:1646 */ +#line 3370 "parser.c" /* yacc.c:1646 */ break; case 127: -#line 807 "parser.y" /* yacc.c:1646 */ +#line 808 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("def"); } -#line 3395 "parser.c" /* yacc.c:1646 */ +#line 3378 "parser.c" /* yacc.c:1646 */ break; case 128: -#line 810 "parser.y" /* yacc.c:1646 */ +#line 811 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("module"); } -#line 3403 "parser.c" /* yacc.c:1646 */ +#line 3386 "parser.c" /* yacc.c:1646 */ break; case 129: -#line 813 "parser.y" /* yacc.c:1646 */ +#line 814 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("import"); } -#line 3411 "parser.c" /* yacc.c:1646 */ +#line 3394 "parser.c" /* yacc.c:1646 */ break; case 130: -#line 816 "parser.y" /* yacc.c:1646 */ +#line 817 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("include"); } -#line 3419 "parser.c" /* yacc.c:1646 */ +#line 3402 "parser.c" /* yacc.c:1646 */ break; case 131: -#line 819 "parser.y" /* yacc.c:1646 */ +#line 820 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("if"); } -#line 3427 "parser.c" /* yacc.c:1646 */ +#line 3410 "parser.c" /* yacc.c:1646 */ break; case 132: -#line 822 "parser.y" /* yacc.c:1646 */ +#line 823 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("then"); } -#line 3435 "parser.c" /* yacc.c:1646 */ +#line 3418 "parser.c" /* yacc.c:1646 */ break; case 133: -#line 825 "parser.y" /* yacc.c:1646 */ +#line 826 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("else"); } -#line 3443 "parser.c" /* yacc.c:1646 */ +#line 3426 "parser.c" /* yacc.c:1646 */ break; case 134: -#line 828 "parser.y" /* yacc.c:1646 */ +#line 829 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("elif"); } -#line 3451 "parser.c" /* yacc.c:1646 */ +#line 3434 "parser.c" /* yacc.c:1646 */ break; case 135: -#line 831 "parser.y" /* yacc.c:1646 */ +#line 832 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("reduce"); } -#line 3459 "parser.c" /* yacc.c:1646 */ +#line 3442 "parser.c" /* yacc.c:1646 */ break; case 136: -#line 834 "parser.y" /* yacc.c:1646 */ +#line 835 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("foreach"); } -#line 3467 "parser.c" /* yacc.c:1646 */ +#line 3450 "parser.c" /* yacc.c:1646 */ break; case 137: -#line 837 "parser.y" /* yacc.c:1646 */ +#line 838 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("end"); } -#line 3475 "parser.c" /* yacc.c:1646 */ +#line 3458 "parser.c" /* yacc.c:1646 */ break; case 138: -#line 840 "parser.y" /* yacc.c:1646 */ +#line 841 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("and"); } -#line 3483 "parser.c" /* yacc.c:1646 */ +#line 3466 "parser.c" /* yacc.c:1646 */ break; case 139: -#line 843 "parser.y" /* yacc.c:1646 */ +#line 844 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("or"); } -#line 3491 "parser.c" /* yacc.c:1646 */ +#line 3474 "parser.c" /* yacc.c:1646 */ break; case 140: -#line 846 "parser.y" /* yacc.c:1646 */ +#line 847 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("try"); } -#line 3499 "parser.c" /* yacc.c:1646 */ +#line 3482 "parser.c" /* yacc.c:1646 */ break; case 141: -#line 849 "parser.y" /* yacc.c:1646 */ +#line 850 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("catch"); } -#line 3507 "parser.c" /* yacc.c:1646 */ +#line 3490 "parser.c" /* yacc.c:1646 */ break; case 142: -#line 852 "parser.y" /* yacc.c:1646 */ +#line 853 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("label"); } -#line 3515 "parser.c" /* yacc.c:1646 */ +#line 3498 "parser.c" /* yacc.c:1646 */ break; case 143: -#line 855 "parser.y" /* yacc.c:1646 */ +#line 856 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("break"); } -#line 3523 "parser.c" /* yacc.c:1646 */ +#line 3506 "parser.c" /* yacc.c:1646 */ break; case 144: -#line 858 "parser.y" /* yacc.c:1646 */ +#line 859 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("__loc__"); } -#line 3531 "parser.c" /* yacc.c:1646 */ +#line 3514 "parser.c" /* yacc.c:1646 */ break; case 145: -#line 863 "parser.y" /* yacc.c:1646 */ +#line 864 "parser.y" /* yacc.c:1646 */ { (yyval.blk)=gen_noop(); } -#line 3539 "parser.c" /* yacc.c:1646 */ +#line 3522 "parser.c" /* yacc.c:1646 */ break; case 146: -#line 866 "parser.y" /* yacc.c:1646 */ +#line 867 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3545 "parser.c" /* yacc.c:1646 */ +#line 3528 "parser.c" /* yacc.c:1646 */ break; case 147: -#line 867 "parser.y" /* yacc.c:1646 */ +#line 868 "parser.y" /* yacc.c:1646 */ { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3551 "parser.c" /* yacc.c:1646 */ +#line 3534 "parser.c" /* yacc.c:1646 */ break; case 148: -#line 868 "parser.y" /* yacc.c:1646 */ +#line 869 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3557 "parser.c" /* yacc.c:1646 */ +#line 3540 "parser.c" /* yacc.c:1646 */ break; case 149: -#line 871 "parser.y" /* yacc.c:1646 */ +#line 872 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3565 "parser.c" /* yacc.c:1646 */ +#line 3548 "parser.c" /* yacc.c:1646 */ break; case 150: -#line 874 "parser.y" /* yacc.c:1646 */ +#line 875 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3573 "parser.c" /* yacc.c:1646 */ +#line 3556 "parser.c" /* yacc.c:1646 */ break; case 151: -#line 877 "parser.y" /* yacc.c:1646 */ +#line 878 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3581 "parser.c" /* yacc.c:1646 */ +#line 3564 "parser.c" /* yacc.c:1646 */ break; case 152: -#line 880 "parser.y" /* yacc.c:1646 */ +#line 881 "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 3590 "parser.c" /* yacc.c:1646 */ +#line 3573 "parser.c" /* yacc.c:1646 */ break; case 153: -#line 884 "parser.y" /* yacc.c:1646 */ +#line 885 "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 3599 "parser.c" /* yacc.c:1646 */ +#line 3582 "parser.c" /* yacc.c:1646 */ break; case 154: -#line 888 "parser.y" /* yacc.c:1646 */ +#line 889 "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 3608 "parser.c" /* yacc.c:1646 */ +#line 3591 "parser.c" /* yacc.c:1646 */ break; case 155: -#line 892 "parser.y" /* yacc.c:1646 */ +#line 893 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3616 "parser.c" /* yacc.c:1646 */ +#line 3599 "parser.c" /* yacc.c:1646 */ break; case 156: -#line 895 "parser.y" /* yacc.c:1646 */ +#line 896 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3622 "parser.c" /* yacc.c:1646 */ +#line 3605 "parser.c" /* yacc.c:1646 */ break; -#line 3626 "parser.c" /* yacc.c:1646 */ +#line 3609 "parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3857,7 +3840,7 @@ yyreturn: #endif return yyresult; } -#line 896 "parser.y" /* yacc.c:1906 */ +#line 897 "parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/parser.h b/parser.h index 6d371a95..20766047 100644 --- a/parser.h +++ b/parser.h @@ -105,7 +105,8 @@ struct lexer_param; QQSTRING_TEXT = 296, QQSTRING_INTERP_START = 297, QQSTRING_INTERP_END = 298, - QQSTRING_END = 299 + QQSTRING_END = 299, + FUNCDEF = 300 }; #endif /* Tokens. */ @@ -151,6 +152,7 @@ struct lexer_param; #define QQSTRING_INTERP_START 297 #define QQSTRING_INTERP_END 298 #define QQSTRING_END 299 +#define FUNCDEF 300 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -162,7 +164,7 @@ union YYSTYPE jv literal; block blk; -#line 166 "parser.h" /* yacc.c:1909 */ +#line 168 "parser.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/parser.y b/parser.y index 8ec68ef0..62c4e5e5 100644 --- a/parser.y +++ b/parser.y @@ -91,8 +91,9 @@ struct lexer_param; %token QQSTRING_END /* see Exp '?' rule */ -%expect 34 +%expect 9 +%precedence FUNCDEF %right '|' %left ',' %right "//" @@ -306,7 +307,7 @@ FuncDef FuncDefs { } Exp: -FuncDef Exp %prec ';' { +FuncDef Exp %prec FUNCDEF { $$ = block_bind_referenced($1, $2, OP_IS_CALL_PSEUDO); } | diff --git a/tests/jq.test b/tests/jq.test index b7d0ccb9..bf10abd7 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -553,6 +553,11 @@ def f(a;b;c;d;e;f): [a+1,b,c,d,e,f]; f(.[0];.[1];.[0];.[0];.[0];.[0]) [1,2] [2,2,1,1,1,1] +# Test precedence of 'def' vs '|' +def a: 0; . | a +null +0 + # Many arguments def f(a;b;c;d;e;f;g;h;i;j): [j,i,h,g,f,e,d,c,b,a]; f(.[0];.[1];.[2];.[3];.[4];.[5];.[6];.[7];.[8];.[9]) [0,1,2,3,4,5,6,7,8,9]