From 5479d7f2dc39c138fc8f5606c4538b4c3fbb6bc3 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 11 Aug 2015 23:26:51 -0700 Subject: [PATCH] Fix assert fail on non-object import metadata (fix #900) --- compile.c | 19 +- compile.h | 3 +- parser.c | 1980 ++++++++++++++++++++++++------------------------- parser.y | 73 +- tests/jq.test | 8 + 5 files changed, 1014 insertions(+), 1069 deletions(-) diff --git a/compile.c b/compile.c index 6988d27c..05f070cd 100644 --- a/compile.c +++ b/compile.c @@ -495,23 +495,26 @@ jv block_module_meta(block b) { return jv_null(); } -block gen_import(const char* name, block metadata, const char* as, int is_data) { - assert(metadata.first == NULL || block_is_const(metadata)); +block gen_import(const char* name, const char* as, int is_data) { inst* i = inst_new(DEPS); - jv meta; - if (block_is_const(metadata)) - meta = block_const(metadata); - else - meta = jv_object(); + jv meta = jv_object(); if (as != NULL) meta = jv_object_set(meta, jv_string("as"), jv_string(as)); meta = jv_object_set(meta, jv_string("is_data"), is_data ? jv_true() : jv_false()); meta = jv_object_set(meta, jv_string("relpath"), jv_string(name)); i->imm.constant = meta; - block_free(metadata); return inst_block(i); } +block gen_import_meta(block import, block metadata) { + assert(block_is_single(import) && import.first->op == DEPS); + assert(block_is_const(metadata) && block_const_kind(metadata) == JV_KIND_OBJECT); + inst *i = import.first; + i->imm.constant = jv_object_merge(block_const(metadata), i->imm.constant); + block_free(metadata); + return import; +} + block gen_function(const char* name, block formals, block body) { inst* i = inst_new(CLOSURE_CREATE); for (inst* i = formals.last; i; i = i->prev) { diff --git a/compile.h b/compile.h index baec373e..4572c9cc 100644 --- a/compile.h +++ b/compile.h @@ -32,7 +32,8 @@ block gen_op_var_fresh(opcode op, const char* name); block gen_module(block metadata); jv block_module_meta(block b); -block gen_import(const char* name, block metadata, const char *as, int is_data); +block gen_import(const char* name, const char *as, int is_data); +block gen_import_meta(block import, block metadata); block gen_function(const char* name, block formals, block body); block gen_param_regular(const char* name); block gen_param(const char* name); diff --git a/parser.c b/parser.c index e5cbf95d..9500dc6a 100644 --- a/parser.c +++ b/parser.c @@ -656,16 +656,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2110 +#define YYLAST 1937 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 68 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 26 +#define YYNNTS 27 /* YYNRULES -- Number of rules. */ -#define YYNRULES 156 +#define YYNRULES 155 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 310 +#define YYNSTATES 305 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -720,18 +720,18 @@ static const yytype_uint16 yyrline[] = 313, 317, 321, 325, 329, 333, 336, 341, 345, 349, 354, 361, 365, 369, 373, 377, 381, 385, 389, 393, 397, 401, 405, 409, 413, 417, 421, 425, 431, 437, - 441, 445, 449, 453, 457, 461, 465, 469, 474, 483, - 490, 496, 508, 519, 533, 538, 544, 547, 552, 557, - 564, 564, 568, 568, 575, 578, 581, 587, 590, 595, - 598, 601, 607, 610, 613, 621, 625, 628, 631, 634, - 637, 640, 643, 646, 649, 653, 659, 662, 665, 668, - 671, 674, 677, 680, 683, 686, 689, 692, 695, 698, - 701, 704, 707, 714, 718, 722, 734, 739, 740, 741, - 742, 745, 748, 753, 758, 762, 765, 770, 773, 778, - 781, 786, 789, 792, 795, 798, 803, 806, 809, 812, - 815, 818, 821, 824, 827, 830, 833, 836, 839, 842, - 845, 848, 851, 854, 857, 862, 865, 866, 867, 870, - 873, 876, 879, 883, 887, 891, 894 + 441, 445, 449, 453, 457, 461, 465, 469, 474, 477, + 494, 503, 510, 518, 523, 529, 532, 537, 542, 549, + 549, 553, 553, 560, 563, 566, 572, 575, 580, 583, + 586, 592, 595, 598, 606, 610, 613, 616, 619, 622, + 625, 628, 631, 634, 638, 644, 647, 650, 653, 656, + 659, 662, 665, 668, 671, 674, 677, 680, 683, 686, + 689, 692, 699, 703, 707, 719, 724, 725, 726, 727, + 730, 733, 738, 743, 747, 750, 755, 758, 763, 766, + 771, 774, 777, 780, 783, 788, 791, 794, 797, 800, + 803, 806, 809, 812, 815, 818, 821, 824, 827, 830, + 833, 836, 839, 842, 847, 850, 851, 852, 855, 858, + 861, 864, 868, 872, 876, 879 }; #endif @@ -751,10 +751,10 @@ static const char *const yytname[] = "QQSTRING_END", "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "NONOPT", "'?'", "';'", "'('", "')'", "'$'", "':'", "'.'", "'['", "']'", "'{'", "'}'", "$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 + "Module", "Imports", "FuncDefs", "Exp", "Import", "ImportWhat", + "FuncDef", "Params", "Param", "String", "@1", "@2", "QQString", + "ElseBody", "ExpD", "Term", "Args", "Arg", "Pattern", "ArrayPats", + "ObjPats", "ObjPat", "Keyword", "MkDict", "MkDictPair", YY_NULLPTR }; #endif @@ -773,51 +773,51 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -152 +#define YYPACT_NINF -145 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-152))) + (!!((Yystate) == (-145))) -#define YYTABLE_NINF -146 +#define YYTABLE_NINF -145 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-146))) + (!!((Yytable_value) == (-145))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 22, 828, 42, 46, 9, -2, -152, 27, -152, 55, - 828, 871, 871, 828, 20, 0, -152, 828, 466, 23, - 276, 439, 341, 1374, 828, -152, 1, -152, 3, 3, - 828, 46, 828, -152, -152, -18, 1823, 6, 8, 50, - 107, -152, 109, -152, -8, 57, 1209, -152, -152, -152, - 114, 27, 65, 61, -152, 1010, -19, 68, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, 530, 127, 72, - 74, 71, 92, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, -152, -152, 1987, - 83, -26, 3, 190, 131, 648, -152, 1987, 828, -152, - 1987, -7, -152, -152, 18, 828, 557, -26, -26, 621, - 99, -152, 16, -152, -152, -152, -152, -152, -152, 397, - -152, 865, 88, 1242, -152, 865, 865, -152, 397, 2053, - 336, 336, 2020, 928, 108, 2053, 2053, 2053, 2053, 2053, - 2053, 336, 336, 1987, 2020, 2053, 336, 336, -8, -8, - 93, 93, 93, -152, 145, -26, 929, 105, 96, 89, - 828, 98, 961, 19, -152, 1424, -152, 828, -152, 79, - -152, 152, 17, -152, 1474, -152, 1774, 110, 111, -152, - -152, 828, -152, 828, -152, 117, -152, 865, 120, 10, - 106, 112, 120, 120, -152, -152, -152, -13, 113, 828, - 163, 115, -11, -152, 116, 828, -152, -152, 1059, -152, - 711, 119, 738, 168, -152, -152, -152, -152, 18, 121, - -152, 828, 828, -152, 828, 828, 1987, 1856, -152, 865, - 865, 865, -26, -152, -26, 1275, -152, -26, 929, -152, - -26, 1987, 124, 125, 1108, -152, -152, 1524, 801, -152, - 828, 1905, 1954, 1574, 1624, -152, 120, 120, 120, -152, - -152, 122, -152, -152, -152, -152, -152, 128, -152, -152, - 1674, 1724, -152, 828, 828, 828, -26, -152, -152, -152, - 1774, 1308, 1157, -152, -152, -152, 828, -152, 1341, -152 + -2, 735, 26, 43, -20, -17, -145, 3, -145, 44, + 735, 778, 778, 735, -10, 2, -145, 735, 463, 11, + 273, 436, 338, 1281, 735, -145, 6, -145, -3, -3, + 735, 43, 645, 735, -145, -145, -21, 1630, 9, 48, + 34, 64, -145, 67, -145, 1, 19, 1116, -145, -145, + -145, 119, 3, 65, 56, -145, 917, -37, 61, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, 527, 121, + 68, 71, 69, 87, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, -145, -145, + 1794, 78, -14, -3, 147, 124, -145, -145, 1794, 735, + -145, -145, 1331, 1794, 16, -145, -145, 14, 735, 554, + -14, -14, 618, 92, -145, 23, -145, -145, -145, -145, + -145, -145, 394, -145, 772, 79, 1149, -145, 772, 772, + -145, 394, 1860, 183, 183, 1827, 333, 1880, 1860, 1860, + 1860, 1860, 1860, 1860, 183, 183, 1794, 1827, 1860, 183, + 183, 1, 1, 84, 84, 84, -145, 138, -14, 836, + 97, 89, 85, 735, 100, 868, 53, -145, -145, 735, + -145, 75, -145, 145, 20, -145, 1381, -145, 1581, 99, + 101, -145, -145, 735, -145, 735, -145, 112, -145, 772, + 116, 18, 102, 104, 116, 116, -145, -145, -145, -19, + 105, 735, 164, 109, -23, -145, 110, 735, -145, -145, + 966, -145, 708, 118, -145, 169, -145, -145, -145, 14, + 117, -145, 735, 735, -145, 735, 735, 1794, 1663, -145, + 772, 772, 772, -14, -145, -14, 1182, -145, -14, 836, + -145, -14, 1794, 123, 126, 1015, -145, -145, -145, 735, + 1712, 1761, 1431, 1481, -145, 116, 116, 116, -145, -145, + 127, -145, -145, -145, -145, -145, 128, 1531, -145, 735, + 735, 735, -14, -145, -145, 1581, 1215, 1064, -145, -145, + -145, 735, -145, 1248, -145 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -825,53 +825,53 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 105, 81, 96, 98, 73, 0, - 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 97, 47, 1, 0, 0, - 8, 6, 0, 77, 62, 0, 0, 0, 0, 18, - 0, 75, 0, 64, 32, 0, 0, 104, 103, 84, - 0, 0, 83, 0, 101, 0, 0, 154, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 0, 0, 152, - 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 6, 104, 80, 95, 97, 72, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 47, 1, 0, 0, + 8, 6, 0, 0, 76, 61, 0, 0, 0, 0, + 18, 0, 74, 0, 63, 32, 0, 0, 103, 102, + 83, 0, 0, 82, 0, 100, 0, 0, 153, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, + 151, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 5, 10, - 80, 0, 0, 0, 0, 0, 3, 2, 8, 7, - 113, 0, 111, 64, 0, 0, 0, 0, 0, 0, - 0, 74, 0, 107, 99, 85, 79, 108, 100, 0, - 110, 0, 0, 0, 153, 0, 0, 102, 0, 40, - 41, 42, 25, 24, 23, 27, 31, 34, 36, 39, - 26, 45, 46, 28, 29, 22, 43, 44, 30, 33, - 35, 37, 38, 76, 0, 0, 0, 0, 82, 0, - 0, 89, 0, 0, 50, 0, 9, 0, 106, 0, - 59, 0, 0, 56, 0, 16, 0, 0, 0, 19, - 17, 0, 65, 0, 61, 0, 148, 0, 149, 71, - 0, 0, 151, 150, 147, 114, 117, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 78, 109, 0, 88, - 0, 87, 0, 0, 52, 112, 63, 58, 0, 0, - 54, 0, 0, 15, 0, 0, 20, 0, 70, 0, - 0, 0, 0, 115, 0, 0, 121, 0, 0, 116, - 0, 11, 95, 94, 0, 86, 49, 0, 0, 57, - 0, 0, 0, 0, 0, 66, 69, 156, 155, 118, - 122, 0, 124, 120, 123, 92, 91, 93, 51, 48, - 0, 0, 68, 0, 0, 0, 0, 90, 53, 55, - 0, 0, 0, 125, 67, 12, 0, 14, 0, 13 + 0, 0, 0, 0, 0, 0, 0, 0, 21, 5, + 10, 79, 0, 0, 0, 0, 52, 3, 2, 8, + 7, 48, 0, 112, 0, 110, 63, 0, 0, 0, + 0, 0, 0, 0, 73, 0, 106, 98, 84, 78, + 107, 99, 0, 109, 0, 0, 0, 152, 0, 0, + 101, 0, 40, 41, 42, 25, 24, 23, 27, 31, + 34, 36, 39, 26, 45, 46, 28, 29, 22, 43, + 44, 30, 33, 35, 37, 38, 75, 0, 0, 0, + 0, 81, 0, 0, 88, 0, 0, 9, 49, 0, + 105, 0, 58, 0, 0, 55, 0, 16, 0, 0, + 0, 19, 17, 0, 64, 0, 60, 0, 147, 0, + 148, 70, 0, 0, 150, 149, 146, 113, 116, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 77, 108, + 0, 87, 0, 86, 51, 0, 111, 62, 57, 0, + 0, 53, 0, 0, 15, 0, 0, 20, 0, 69, + 0, 0, 0, 0, 114, 0, 0, 120, 0, 0, + 115, 0, 11, 94, 93, 0, 85, 50, 56, 0, + 0, 0, 0, 0, 65, 68, 155, 154, 117, 121, + 0, 123, 119, 122, 91, 90, 92, 0, 67, 0, + 0, 0, 0, 89, 54, 0, 0, 0, 124, 66, + 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -152, -152, -152, 142, 69, -1, -152, -12, -152, -50, - 4, -152, -152, 66, -110, -141, -4, -152, 5, -125, - -152, -152, -65, -151, -109, -152 + -145, -145, -145, 150, 59, -1, -145, -145, -9, -145, + -53, 5, -145, -145, 66, -105, -143, -4, -145, 7, + -129, -145, -145, -68, -144, -106, -145 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 30, 116, 109, 31, 24, 192, 193, - 25, 43, 123, 132, 243, 208, 26, 121, 122, 177, - 217, 222, 223, 80, 81, 82 + -1, 2, 3, 30, 117, 110, 31, 32, 24, 194, + 195, 25, 44, 126, 135, 244, 210, 26, 124, 125, + 180, 219, 224, 225, 81, 82, 83 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -879,346 +879,322 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ 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, - 206, 120, 114, 115, 252, 174, 258, 1, 175, 214, - 176, 124, 27, 16, 125, 104, 105, 106, 140, 107, - 216, 187, 253, 188, 48, 33, 259, 202, 203, 35, - 204, 42, 28, 29, 112, 113, 248, 34, 32, 112, - 113, 112, 113, 112, 113, 238, 143, 239, 129, 191, - 233, 40, 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, 130, 182, 131, 185, 135, 178, 133, 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, 215, - 107, 225, 79, 226, 227, 229, 237, 100, 101, 102, - 103, 104, 105, 106, 139, 107, 249, 256, 250, 244, - 245, 303, 268, 119, 251, 254, 265, 257, 260, 228, - 221, 285, 286, 270, 296, 297, 120, 186, 269, 189, - 304, 179, 235, 283, 4, 5, 6, 7, 8, 0, - 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, 0, 18, - 0, 19, 180, 20, 21, 181, 22, 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, 0, -72, -72, -72, -72, -72, -72, -72, -72, - -72, -72, 0, -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, 0, 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, 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, 0, 18, 0, - 19, 0, 20, 21, 54, 22, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, - 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, 0, 18, - 0, 19, 0, 20, 21, 0, 22, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 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, 0, - 18, 0, 19, 0, 20, 21, 0, 22, 16, 0, + 23, 199, 200, 42, 52, 214, 215, 38, 39, 37, + 142, 111, 40, 1, 111, 48, 45, 47, 192, 112, + 56, 119, 130, 111, 259, 53, 27, 80, 253, 118, + 143, 122, 123, 115, 116, 226, 208, 16, 127, 33, + 34, 128, 49, 35, 260, 216, 254, 177, 36, 218, + 178, 41, 179, 111, 105, 106, 107, 234, 108, 28, + 29, 131, 132, 43, 204, 205, 249, 206, 133, 113, + 114, 134, 113, 114, 189, 193, 190, 146, 239, 136, + 240, 113, 114, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 275, 276, 277, + 119, 113, 114, 185, 235, 226, 204, 205, 181, 237, + 138, 140, 139, 144, 278, 147, 279, 196, 198, 281, + 148, 202, 283, 149, 151, 176, 150, 186, 203, 212, + 211, 108, 217, 227, 211, 211, 228, 80, 182, 238, + 229, 4, 5, 6, 7, 8, 80, 231, 245, 142, + 246, 9, 250, 298, 251, 10, 252, 255, 257, 11, + 12, 258, 261, 267, 13, 266, 14, 15, 187, 269, + 284, 120, 230, 285, 223, 293, 268, 16, 123, 292, + 299, 282, 191, -145, -145, 0, 236, 0, 0, 17, + 0, 0, 247, 0, 248, 211, 18, 0, 19, 183, + 20, 21, 184, 22, 0, 0, 0, 0, 0, 0, + 256, -145, -145, 0, 0, 0, 262, 0, 0, 0, + 0, 265, -145, -145, 103, 104, 105, 106, 107, 0, + 108, 270, 271, 0, 272, 273, 211, 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 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, 0, - 18, 0, 19, 0, 20, 21, 263, 22, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 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, 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, 289, - 18, 0, 19, 0, 20, 21, 0, 22, 16, 4, - 5, 6, 7, 8, 0, 4, 5, 6, 7, 8, - 17, 0, 0, 0, 0, 0, 0, 18, 0, 19, - 0, 20, 21, 0, 22, 15, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 207, 0, 0, + 0, 0, 0, 0, 223, 0, 0, 0, 287, 0, + 0, 0, 0, -71, 50, 0, 0, 51, -71, 0, + 52, 0, -71, -71, -71, -71, -71, 0, 295, 296, + 297, 0, -71, -71, -71, 0, 0, -71, -71, -71, + 303, -71, 0, 0, 0, -71, -71, -71, -71, -71, + -71, -71, -71, 16, 0, 0, -71, 0, 0, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, 0, + -71, -71, 0, -71, 0, -71, -71, -71, -71, 57, + -71, 0, 58, 85, 86, 52, 0, 0, 0, 0, + 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 0, 96, 97, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 101, 102, 103, 104, 105, 106, 107, 0, + 108, 0, 0, 0, 0, 207, 0, 78, 58, 79, + 0, 52, 0, 0, 0, -144, 0, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 54, 0, 0, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 9, 0, 0, 78, 10, 79, 0, 0, 11, 12, + 0, -144, 0, 13, 46, 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, 0, 18, 0, 19, 0, 20, + 21, 55, 22, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 18, 0, 19, 0, 20, 21, 145, 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, 197, 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, 0, 18, 0, 19, 0, + 20, 21, 0, 22, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 18, 0, 19, 0, 20, 21, 201, + 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, 0, 18, 0, 19, + 0, 20, 21, 0, 22, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 121, 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, 0, 18, 0, 19, + 0, 20, 21, 264, 22, 16, 4, 5, 6, 7, + 8, 0, 4, 5, 6, 7, 8, 17, 0, 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, 21, - 18, 22, 19, 218, 20, 21, 51, 22, 84, 85, - 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, 95, 96, 0, 16, - 83, 84, 85, 86, 0, 0, 0, 100, 101, 102, - 103, 104, 105, 106, 0, 107, 87, 88, 219, 0, - 220, 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, 0, 107, 83, - 84, 85, 86, 230, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 0, 107, 83, 84, - 85, 86, 0, 0, 0, 138, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 107, 83, 84, 85, - 86, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 107, 83, 84, 85, 86, - 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 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, 0, 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, 0, - 0, 83, 84, 85, 86, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 0, 107, 87, 88, 134, - 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, 0, 107, - 87, 88, 211, 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, 0, 107, 87, 88, 281, 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, 0, 107, 87, 88, 305, 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, 0, 107, 87, - 88, 309, 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, - 0, 107, 108, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 234, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 240, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 288, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 294, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 295, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 298, 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, 0, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 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, 0, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 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, 0, 83, 84, 85, 86, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 0, - 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, 0, 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, 0, 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, 0, 83, 84, 85, 86, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 0, 107, 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, 0, 107, 87, 88, 0, 0, 0, - 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, - 0, 0, -146, 84, 85, 0, 0, 0, 99, 100, - 101, 102, 103, 104, 105, 106, 0, 107, 87, 88, - 0, 0, 0, 0, 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, 0, - 107 + 0, 22, 15, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, + 0, 18, 0, 19, 0, 20, 21, 18, 22, 19, + 220, 20, 21, 52, 22, 0, 0, 0, 0, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 84, 85, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 89, 221, 0, 222, 0, 0, + 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 0, 108, 84, 85, 86, 87, + 232, 0, 0, 233, 0, 0, 0, 0, 0, 0, + 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, + 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, + 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 0, 108, 84, 85, 86, 87, 0, + 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 0, 108, 84, 85, 86, 87, 0, 0, + 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, + 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, + 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 0, 108, 84, 85, 86, 87, 0, 0, 0, + 286, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 301, 0, 302, 84, 85, 86, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 94, 95, 96, 97, 0, 0, 84, 85, + 86, 87, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 0, 108, 88, 89, 137, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, + 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 0, 108, 88, 89, 213, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, + 96, 97, 0, 0, 84, 85, 86, 87, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, + 88, 89, 280, 0, 0, 0, 0, 90, 91, 92, + 93, 94, 95, 96, 97, 0, 0, 84, 85, 86, + 87, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 0, 108, 88, 89, 300, 0, 0, 0, 0, + 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, + 84, 85, 86, 87, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 0, 108, 88, 89, 304, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 109, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 188, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 241, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 290, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 291, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 294, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 242, 243, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 84, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 129, + 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, + 0, 0, 84, 85, 86, 87, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 88, 89, + 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, + 95, 96, 97, 0, 0, 0, 274, 0, 0, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, + 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 88, 89, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, + 96, 97, 0, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, + 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, + 97, 0, 0, 84, 85, 86, 87, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, + 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 94, 95, 96, 97, 0, 0, 84, 85, 86, 87, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 108, 88, 89, 0, 0, 0, 0, 0, 90, + 91, 92, 93, 94, 95, 96, 97, 0, 0, -145, + 85, 86, 0, 0, 0, 100, 101, 102, 103, 104, + 105, 106, 107, 0, 108, 88, 89, 0, 0, 0, + 85, 86, -145, -145, -145, -145, -145, -145, 96, 97, + 0, 0, 0, 0, 0, 88, 0, 0, -145, 101, + 102, 103, 104, 105, 106, 107, 0, 108, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 103, 104, 105, 106, 107, 0, 108 }; 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, 47, 30, - 139, 32, 28, 29, 47, 61, 47, 15, 64, 148, - 66, 59, 0, 40, 62, 53, 54, 55, 67, 57, - 175, 58, 65, 60, 31, 57, 67, 41, 42, 4, - 44, 61, 16, 17, 63, 64, 207, 40, 59, 63, - 64, 63, 64, 63, 64, 58, 77, 60, 28, 61, - 61, 61, 83, 84, 85, 86, 87, 88, 89, 90, + 1, 130, 131, 1, 7, 148, 149, 11, 12, 10, + 47, 5, 13, 15, 5, 4, 17, 18, 4, 13, + 21, 30, 13, 5, 47, 20, 0, 22, 47, 30, + 67, 32, 33, 28, 29, 179, 142, 40, 59, 59, + 57, 62, 31, 40, 67, 151, 65, 61, 4, 178, + 64, 61, 66, 5, 53, 54, 55, 4, 57, 16, + 17, 13, 28, 61, 41, 42, 209, 44, 4, 63, + 64, 4, 63, 64, 58, 61, 60, 78, 58, 60, + 60, 63, 64, 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, 4, 113, 4, 115, 1, 112, 60, 10, 11, - 41, 42, 57, 44, 125, 126, 65, 252, 129, 254, - 62, 4, 257, 25, 62, 260, 62, 141, 67, 47, - 57, 145, 146, 139, 13, 46, 38, 39, 60, 4, - 57, 46, 148, 57, 65, 57, 4, 49, 50, 51, - 52, 53, 54, 55, 47, 57, 46, 4, 62, 59, - 59, 296, 4, 31, 62, 62, 57, 62, 62, 180, - 176, 57, 57, 62, 62, 57, 187, 118, 238, 123, - 300, 1, 187, 258, 4, 5, 6, 7, 8, -1, - 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, -1, 59, - -1, 61, 62, 63, 64, 65, 66, -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, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, -1, 57, 58, -1, 60, -1, 62, 63, - 64, 65, 1, 67, -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, -1, 57, -1, -1, -1, -1, 1, -1, - 59, 4, 61, -1, 7, -1, -1, -1, 67, -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, -1, 4, 5, 6, 7, 8, -1, -1, - -1, -1, -1, 14, -1, -1, 59, 18, 61, -1, - -1, 22, 23, -1, 67, -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, -1, 59, -1, - 61, -1, 63, 64, 65, 66, 40, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, - -1, -1, -1, -1, -1, 59, -1, 61, -1, 63, - 64, 1, 66, -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, -1, 59, - -1, 61, -1, 63, 64, -1, 66, 40, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, - -1, -1, -1, -1, -1, -1, 59, -1, 61, -1, - 63, 64, 1, 66, -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, -1, - 59, -1, 61, -1, 63, 64, -1, 66, 40, -1, + 101, 102, 103, 104, 105, 106, 107, 250, 251, 252, + 119, 63, 64, 114, 61, 259, 41, 42, 113, 44, + 1, 65, 57, 62, 253, 4, 255, 128, 129, 258, + 62, 132, 261, 62, 47, 57, 67, 13, 46, 60, + 144, 57, 4, 46, 148, 149, 57, 142, 1, 4, + 65, 4, 5, 6, 7, 8, 151, 57, 59, 47, + 59, 14, 46, 292, 62, 18, 62, 62, 4, 22, + 23, 62, 62, 4, 27, 57, 29, 30, 119, 62, + 57, 31, 183, 57, 179, 57, 239, 40, 189, 62, + 295, 259, 126, 10, 11, -1, 189, -1, -1, 52, + -1, -1, 203, -1, 205, 209, 59, -1, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + 221, 38, 39, -1, -1, -1, 227, -1, -1, -1, + -1, 232, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 242, 243, -1, 245, 246, 250, 251, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 52, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, 64, -1, 66, 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, -1, - 59, -1, 61, -1, 63, 64, 65, 66, 40, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 52, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, 64, -1, 66, 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, - 59, -1, 61, -1, 63, 64, -1, 66, 40, 4, - 5, 6, 7, 8, -1, 4, 5, 6, 7, 8, - 52, -1, -1, -1, -1, -1, -1, 59, -1, 61, - -1, 63, 64, -1, 66, 30, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 40, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, 52, -1, -1, + -1, -1, -1, -1, 259, -1, -1, -1, 269, -1, + -1, -1, -1, 0, 1, -1, -1, 4, 5, -1, + 7, -1, 9, 10, 11, 12, 13, -1, 289, 290, + 291, -1, 19, 20, 21, -1, -1, 24, 25, 26, + 301, 28, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 38, 39, 40, -1, -1, 43, -1, -1, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, -1, 60, -1, 62, 63, 64, 65, 1, + 67, -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, -1, + 57, -1, -1, -1, -1, 1, -1, 59, 4, 61, + -1, 7, -1, -1, -1, 67, -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, -1, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 14, -1, -1, 59, 18, 61, -1, -1, 22, 23, + -1, 67, -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, -1, 59, -1, 61, -1, 63, + 64, 65, 66, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, + -1, -1, 59, -1, 61, -1, 63, 64, 1, 66, + -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, -1, 59, -1, 61, -1, + 63, 64, -1, 66, 40, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, + -1, -1, -1, 59, -1, 61, -1, 63, 64, 1, + 66, -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, -1, 59, -1, 61, + -1, 63, 64, -1, 66, 40, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, + -1, -1, -1, 58, 59, -1, 61, -1, 63, 64, + -1, 66, 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, -1, 59, -1, 61, + -1, 63, 64, 65, 66, 40, 4, 5, 6, 7, + 8, -1, 4, 5, 6, 7, 8, 52, -1, -1, -1, -1, -1, -1, 59, -1, 61, -1, 63, 64, - 59, 66, 61, 4, 63, 64, 7, 66, 10, 11, - -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, 38, 39, -1, 40, - 9, 10, 11, 12, -1, -1, -1, 49, 50, 51, - 52, 53, 54, 55, -1, 57, 25, 26, 59, -1, - 61, -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, -1, 57, 9, - 10, 11, 12, 62, -1, -1, 65, -1, -1, -1, - -1, -1, -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, -1, 57, 9, 10, - 11, 12, -1, -1, -1, 65, -1, -1, -1, -1, - -1, -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, -1, 57, 9, 10, 11, - 12, -1, -1, -1, 65, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 26, -1, -1, -1, -1, -1, + -1, 66, 30, -1, -1, -1, -1, -1, 30, -1, + -1, -1, 40, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, + -1, 59, -1, 61, -1, 63, 64, 59, 66, 61, + 4, 63, 64, 7, 66, -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, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, 59, -1, 61, -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, -1, 57, 9, 10, 11, 12, - -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, + 62, -1, -1, 65, -1, -1, -1, -1, -1, -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, -1, 57, 58, -1, 60, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, -1, -1, -1, -1, + 53, 54, 55, -1, 57, 9, 10, 11, 12, -1, + -1, -1, 65, -1, -1, -1, -1, -1, -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, -1, 57, 9, 10, 11, 12, -1, -1, + -1, 65, -1, -1, -1, -1, -1, -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, -1, 57, 9, 10, 11, 12, -1, -1, -1, + 65, -1, -1, -1, -1, -1, -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, + -1, 57, 58, -1, 60, 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, -1, 9, 10, + 11, 12, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 25, 26, 60, -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, -1, 57, 25, 26, 60, @@ -1233,80 +1209,68 @@ static const yytype_int16 yycheck[] = 9, 10, 11, 12, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 25, 26, 60, -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, -1, 57, 58, + 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, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 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, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 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, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 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, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 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, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 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, -1, 57, 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, -1, 9, 10, 11, 12, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 25, 26, + -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 38, 39, -1, -1, -1, 43, -1, -1, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 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, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + 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, -1, 9, 10, 11, 12, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 25, - 26, 60, -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, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, -1, -1, -1, -1, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 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, - -1, 57, 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, -1, 9, 10, 11, 12, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, - 57, 25, 26, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, -1, -1, 43, - -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, -1, 57, 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, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, -1, 57, 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, -1, 9, 10, 11, 12, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 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, + 10, 11, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 25, 26, -1, -1, -1, - -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, 9, 10, 11, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, -1, 57, 25, 26, - -1, -1, -1, -1, -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, -1, - 57 + 10, 11, 32, 33, 34, 35, 36, 37, 38, 39, + -1, -1, -1, -1, -1, 25, -1, -1, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 38, 39, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + 50, 51, 52, 53, 54, 55, -1, 57 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1315,35 +1279,35 @@ static const yytype_uint8 yystos[] = { 0, 15, 69, 70, 4, 5, 6, 7, 8, 14, 18, 22, 23, 27, 29, 30, 40, 52, 59, 61, - 63, 64, 66, 73, 75, 78, 84, 0, 16, 17, - 71, 74, 59, 57, 40, 4, 73, 84, 84, 73, - 61, 1, 61, 79, 73, 1, 73, 4, 31, 1, - 4, 7, 78, 1, 65, 73, 1, 4, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 59, 61, 78, - 91, 92, 93, 9, 10, 11, 12, 25, 26, 32, - 33, 34, 35, 36, 37, 38, 39, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 57, 58, 73, - 5, 13, 63, 64, 78, 78, 72, 73, 75, 71, - 73, 85, 86, 80, 59, 62, 19, 13, 13, 28, - 4, 4, 81, 60, 60, 1, 57, 65, 65, 47, - 67, 62, 1, 73, 4, 62, 62, 67, 47, 73, + 63, 64, 66, 73, 76, 79, 85, 0, 16, 17, + 71, 74, 75, 59, 57, 40, 4, 73, 85, 85, + 73, 61, 1, 61, 80, 73, 1, 73, 4, 31, + 1, 4, 7, 79, 1, 65, 73, 1, 4, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 59, 61, + 79, 92, 93, 94, 9, 10, 11, 12, 25, 26, + 32, 33, 34, 35, 36, 37, 38, 39, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, + 73, 5, 13, 63, 64, 79, 79, 72, 73, 76, + 71, 58, 73, 73, 86, 87, 81, 59, 62, 19, + 13, 13, 28, 4, 4, 82, 60, 60, 1, 57, + 65, 65, 47, 67, 62, 1, 73, 4, 62, 62, + 67, 47, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 57, 61, 64, 66, 87, 78, 1, - 62, 65, 73, 13, 58, 73, 72, 58, 60, 81, - 4, 61, 76, 77, 73, 1, 73, 87, 87, 1, - 73, 46, 41, 42, 44, 1, 92, 52, 83, 84, - 60, 60, 83, 83, 92, 4, 87, 88, 4, 59, - 61, 78, 89, 90, 91, 46, 57, 65, 73, 57, - 62, 65, 4, 61, 58, 86, 44, 4, 58, 60, - 58, 20, 21, 82, 59, 59, 73, 73, 83, 46, - 62, 62, 47, 65, 62, 73, 4, 62, 47, 67, - 62, 73, 65, 65, 73, 57, 58, 73, 4, 77, - 62, 73, 73, 73, 73, 43, 83, 83, 83, 87, - 87, 60, 87, 90, 87, 57, 57, 65, 58, 58, - 73, 73, 24, 19, 58, 58, 62, 57, 58, 58, - 73, 73, 73, 87, 82, 60, 58, 60, 73, 60 + 73, 73, 73, 73, 73, 73, 57, 61, 64, 66, + 88, 79, 1, 62, 65, 73, 13, 72, 58, 58, + 60, 82, 4, 61, 77, 78, 73, 1, 73, 88, + 88, 1, 73, 46, 41, 42, 44, 1, 93, 52, + 84, 85, 60, 60, 84, 84, 93, 4, 88, 89, + 4, 59, 61, 79, 90, 91, 92, 46, 57, 65, + 73, 57, 62, 65, 4, 61, 87, 44, 4, 58, + 60, 58, 20, 21, 83, 59, 59, 73, 73, 84, + 46, 62, 62, 47, 65, 62, 73, 4, 62, 47, + 67, 62, 73, 65, 65, 73, 57, 4, 78, 62, + 73, 73, 73, 73, 43, 84, 84, 84, 88, 88, + 60, 88, 91, 88, 57, 57, 65, 73, 24, 19, + 58, 58, 62, 57, 58, 73, 73, 73, 88, 83, + 60, 58, 60, 73, 60 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1354,17 +1318,17 @@ static const yytype_uint8 yyr1[] = 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, - 74, 74, 74, 74, 75, 75, 76, 76, 77, 77, - 79, 78, 80, 78, 81, 81, 81, 82, 82, 83, - 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 85, 85, 86, 87, 87, 87, 88, 88, 89, - 89, 90, 90, 90, 90, 90, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 92, 92, 92, 92, 93, - 93, 93, 93, 93, 93, 93, 93 + 75, 75, 75, 76, 76, 77, 77, 78, 78, 80, + 79, 81, 79, 82, 82, 82, 83, 83, 84, 84, + 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 86, 86, 87, 88, 88, 88, 89, 89, 90, 90, + 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 93, 93, 93, 93, 94, 94, + 94, 94, 94, 94, 94, 94 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1374,18 +1338,18 @@ static const yytype_uint8 yyr2[] = 2, 5, 9, 11, 9, 5, 4, 4, 2, 4, 5, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 6, 5, - 3, 6, 4, 7, 5, 8, 1, 3, 2, 1, - 0, 4, 0, 5, 0, 2, 4, 5, 3, 3, - 2, 1, 1, 1, 3, 2, 3, 2, 4, 3, - 2, 1, 3, 2, 2, 3, 5, 4, 4, 3, - 7, 6, 6, 6, 5, 5, 1, 1, 1, 3, - 3, 2, 3, 2, 2, 1, 4, 3, 3, 4, - 3, 1, 3, 1, 2, 3, 3, 1, 3, 1, - 3, 2, 3, 3, 3, 5, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 1, 2, 3, + 5, 4, 2, 5, 8, 1, 3, 2, 1, 0, + 4, 0, 5, 0, 2, 4, 5, 3, 3, 2, + 1, 1, 1, 3, 2, 3, 2, 4, 3, 2, + 1, 3, 2, 2, 3, 5, 4, 4, 3, 7, + 6, 6, 6, 5, 5, 1, 1, 1, 3, 3, + 2, 3, 2, 2, 1, 4, 3, 3, 4, 3, + 1, 3, 1, 2, 3, 3, 1, 3, 1, 3, + 2, 3, 3, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 3, 3, 3, - 3, 3, 1, 2, 1, 5, 5 + 1, 1, 1, 1, 0, 1, 3, 3, 3, 3, + 3, 1, 2, 1, 5, 5 }; @@ -1888,165 +1852,171 @@ 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 1892 "parser.c" /* yacc.c:1257 */ +#line 1856 "parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1898 "parser.c" /* yacc.c:1257 */ +#line 1862 "parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1904 "parser.c" /* yacc.c:1257 */ +#line 1868 "parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1910 "parser.c" /* yacc.c:1257 */ +#line 1874 "parser.c" /* yacc.c:1257 */ break; case 41: /* QQSTRING_TEXT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1916 "parser.c" /* yacc.c:1257 */ +#line 1880 "parser.c" /* yacc.c:1257 */ break; case 70: /* Module */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1922 "parser.c" /* yacc.c:1257 */ +#line 1886 "parser.c" /* yacc.c:1257 */ break; case 71: /* Imports */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1928 "parser.c" /* yacc.c:1257 */ +#line 1892 "parser.c" /* yacc.c:1257 */ break; case 72: /* FuncDefs */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1934 "parser.c" /* yacc.c:1257 */ +#line 1898 "parser.c" /* yacc.c:1257 */ break; case 73: /* Exp */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1940 "parser.c" /* yacc.c:1257 */ +#line 1904 "parser.c" /* yacc.c:1257 */ break; case 74: /* Import */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } +#line 1910 "parser.c" /* yacc.c:1257 */ + break; + + case 75: /* ImportWhat */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } +#line 1916 "parser.c" /* yacc.c:1257 */ + break; + + case 76: /* FuncDef */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } +#line 1922 "parser.c" /* yacc.c:1257 */ + break; + + case 77: /* Params */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } +#line 1928 "parser.c" /* yacc.c:1257 */ + break; + + case 78: /* Param */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } +#line 1934 "parser.c" /* yacc.c:1257 */ + break; + + case 79: /* String */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } +#line 1940 "parser.c" /* yacc.c:1257 */ + break; + + case 82: /* QQString */ +#line 37 "parser.y" /* yacc.c:1257 */ + { block_free(((*yyvaluep).blk)); } #line 1946 "parser.c" /* yacc.c:1257 */ break; - case 75: /* FuncDef */ + case 83: /* ElseBody */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1952 "parser.c" /* yacc.c:1257 */ break; - case 76: /* Params */ + case 84: /* ExpD */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1958 "parser.c" /* yacc.c:1257 */ break; - case 77: /* Param */ + case 85: /* Term */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1964 "parser.c" /* yacc.c:1257 */ break; - case 78: /* String */ + case 86: /* Args */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1970 "parser.c" /* yacc.c:1257 */ break; - case 81: /* QQString */ + case 87: /* Arg */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1976 "parser.c" /* yacc.c:1257 */ break; - case 82: /* ElseBody */ + case 88: /* Pattern */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1982 "parser.c" /* yacc.c:1257 */ break; - case 83: /* ExpD */ + case 89: /* ArrayPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1988 "parser.c" /* yacc.c:1257 */ break; - case 84: /* Term */ + case 90: /* ObjPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 1994 "parser.c" /* yacc.c:1257 */ break; - case 85: /* Args */ + case 91: /* ObjPat */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 2000 "parser.c" /* yacc.c:1257 */ break; - case 86: /* Arg */ -#line 37 "parser.y" /* yacc.c:1257 */ - { block_free(((*yyvaluep).blk)); } + case 92: /* Keyword */ +#line 36 "parser.y" /* yacc.c:1257 */ + { jv_free(((*yyvaluep).literal)); } #line 2006 "parser.c" /* yacc.c:1257 */ break; - case 87: /* Pattern */ + case 93: /* MkDict */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 2012 "parser.c" /* yacc.c:1257 */ break; - case 88: /* ArrayPats */ + case 94: /* MkDictPair */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } #line 2018 "parser.c" /* yacc.c:1257 */ break; - case 89: /* ObjPats */ -#line 37 "parser.y" /* yacc.c:1257 */ - { block_free(((*yyvaluep).blk)); } -#line 2024 "parser.c" /* yacc.c:1257 */ - break; - - case 90: /* ObjPat */ -#line 37 "parser.y" /* yacc.c:1257 */ - { block_free(((*yyvaluep).blk)); } -#line 2030 "parser.c" /* yacc.c:1257 */ - break; - - case 91: /* Keyword */ -#line 36 "parser.y" /* yacc.c:1257 */ - { jv_free(((*yyvaluep).literal)); } -#line 2036 "parser.c" /* yacc.c:1257 */ - break; - - case 92: /* MkDict */ -#line 37 "parser.y" /* yacc.c:1257 */ - { block_free(((*yyvaluep).blk)); } -#line 2042 "parser.c" /* yacc.c:1257 */ - break; - - case 93: /* MkDictPair */ -#line 37 "parser.y" /* yacc.c:1257 */ - { block_free(((*yyvaluep).blk)); } -#line 2048 "parser.c" /* yacc.c:1257 */ - break; - default: break; @@ -2340,7 +2310,7 @@ yyreduce: { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2344 "parser.c" /* yacc.c:1646 */ +#line 2314 "parser.c" /* yacc.c:1646 */ break; case 3: @@ -2348,7 +2318,7 @@ yyreduce: { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2352 "parser.c" /* yacc.c:1646 */ +#line 2322 "parser.c" /* yacc.c:1646 */ break; case 4: @@ -2356,20 +2326,20 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2360 "parser.c" /* yacc.c:1646 */ +#line 2330 "parser.c" /* yacc.c:1646 */ break; case 5: #line 287 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { - FAIL((yyloc), "Module metadata must be constant."); + FAIL((yyloc), "Module metadata must be constant"); (yyval.blk) = gen_noop(); } else { (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2373 "parser.c" /* yacc.c:1646 */ +#line 2343 "parser.c" /* yacc.c:1646 */ break; case 6: @@ -2377,7 +2347,7 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2381 "parser.c" /* yacc.c:1646 */ +#line 2351 "parser.c" /* yacc.c:1646 */ break; case 7: @@ -2385,7 +2355,7 @@ yyreduce: { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2389 "parser.c" /* yacc.c:1646 */ +#line 2359 "parser.c" /* yacc.c:1646 */ break; case 8: @@ -2393,7 +2363,7 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2397 "parser.c" /* yacc.c:1646 */ +#line 2367 "parser.c" /* yacc.c:1646 */ break; case 9: @@ -2401,7 +2371,7 @@ yyreduce: { (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2405 "parser.c" /* yacc.c:1646 */ +#line 2375 "parser.c" /* yacc.c:1646 */ break; case 10: @@ -2409,7 +2379,7 @@ yyreduce: { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2413 "parser.c" /* yacc.c:1646 */ +#line 2383 "parser.c" /* yacc.c:1646 */ break; case 11: @@ -2417,7 +2387,7 @@ yyreduce: { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2421 "parser.c" /* yacc.c:1646 */ +#line 2391 "parser.c" /* yacc.c:1646 */ break; case 12: @@ -2425,7 +2395,7 @@ yyreduce: { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2429 "parser.c" /* yacc.c:1646 */ +#line 2399 "parser.c" /* yacc.c:1646 */ break; case 13: @@ -2433,7 +2403,7 @@ yyreduce: { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2437 "parser.c" /* yacc.c:1646 */ +#line 2407 "parser.c" /* yacc.c:1646 */ break; case 14: @@ -2441,7 +2411,7 @@ yyreduce: { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2445 "parser.c" /* yacc.c:1646 */ +#line 2415 "parser.c" /* yacc.c:1646 */ break; case 15: @@ -2449,7 +2419,7 @@ yyreduce: { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2453 "parser.c" /* yacc.c:1646 */ +#line 2423 "parser.c" /* yacc.c:1646 */ break; case 16: @@ -2458,7 +2428,7 @@ yyreduce: FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2462 "parser.c" /* yacc.c:1646 */ +#line 2432 "parser.c" /* yacc.c:1646 */ break; case 17: @@ -2467,7 +2437,7 @@ yyreduce: //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4); (yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk))); } -#line 2471 "parser.c" /* yacc.c:1646 */ +#line 2441 "parser.c" /* yacc.c:1646 */ break; case 18: @@ -2476,7 +2446,7 @@ yyreduce: //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK)); (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); } -#line 2480 "parser.c" /* yacc.c:1646 */ +#line 2450 "parser.c" /* yacc.c:1646 */ break; case 19: @@ -2485,7 +2455,7 @@ yyreduce: FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2489 "parser.c" /* yacc.c:1646 */ +#line 2459 "parser.c" /* yacc.c:1646 */ break; case 20: @@ -2496,7 +2466,7 @@ yyreduce: jv_free((yyvsp[-2].literal)); jv_free(v); } -#line 2500 "parser.c" /* yacc.c:1646 */ +#line 2470 "parser.c" /* yacc.c:1646 */ break; case 21: @@ -2504,7 +2474,7 @@ yyreduce: { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2508 "parser.c" /* yacc.c:1646 */ +#line 2478 "parser.c" /* yacc.c:1646 */ break; case 22: @@ -2512,7 +2482,7 @@ yyreduce: { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2516 "parser.c" /* yacc.c:1646 */ +#line 2486 "parser.c" /* yacc.c:1646 */ break; case 23: @@ -2520,7 +2490,7 @@ yyreduce: { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2524 "parser.c" /* yacc.c:1646 */ +#line 2494 "parser.c" /* yacc.c:1646 */ break; case 24: @@ -2528,7 +2498,7 @@ yyreduce: { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2532 "parser.c" /* yacc.c:1646 */ +#line 2502 "parser.c" /* yacc.c:1646 */ break; case 25: @@ -2536,7 +2506,7 @@ yyreduce: { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2540 "parser.c" /* yacc.c:1646 */ +#line 2510 "parser.c" /* yacc.c:1646 */ break; case 26: @@ -2544,7 +2514,7 @@ yyreduce: { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2548 "parser.c" /* yacc.c:1646 */ +#line 2518 "parser.c" /* yacc.c:1646 */ break; case 27: @@ -2552,7 +2522,7 @@ yyreduce: { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2556 "parser.c" /* yacc.c:1646 */ +#line 2526 "parser.c" /* yacc.c:1646 */ break; case 28: @@ -2560,7 +2530,7 @@ yyreduce: { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2564 "parser.c" /* yacc.c:1646 */ +#line 2534 "parser.c" /* yacc.c:1646 */ break; case 29: @@ -2568,7 +2538,7 @@ yyreduce: { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2572 "parser.c" /* yacc.c:1646 */ +#line 2542 "parser.c" /* yacc.c:1646 */ break; case 30: @@ -2576,7 +2546,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2580 "parser.c" /* yacc.c:1646 */ +#line 2550 "parser.c" /* yacc.c:1646 */ break; case 31: @@ -2584,7 +2554,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2588 "parser.c" /* yacc.c:1646 */ +#line 2558 "parser.c" /* yacc.c:1646 */ break; case 32: @@ -2592,7 +2562,7 @@ yyreduce: { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2596 "parser.c" /* yacc.c:1646 */ +#line 2566 "parser.c" /* yacc.c:1646 */ break; case 33: @@ -2600,7 +2570,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2604 "parser.c" /* yacc.c:1646 */ +#line 2574 "parser.c" /* yacc.c:1646 */ break; case 34: @@ -2608,7 +2578,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2612 "parser.c" /* yacc.c:1646 */ +#line 2582 "parser.c" /* yacc.c:1646 */ break; case 35: @@ -2616,7 +2586,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2620 "parser.c" /* yacc.c:1646 */ +#line 2590 "parser.c" /* yacc.c:1646 */ break; case 36: @@ -2624,7 +2594,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2628 "parser.c" /* yacc.c:1646 */ +#line 2598 "parser.c" /* yacc.c:1646 */ break; case 37: @@ -2634,7 +2604,7 @@ yyreduce: if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Division by zero?"); } -#line 2638 "parser.c" /* yacc.c:1646 */ +#line 2608 "parser.c" /* yacc.c:1646 */ break; case 38: @@ -2644,7 +2614,7 @@ yyreduce: if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Remainder by zero?"); } -#line 2648 "parser.c" /* yacc.c:1646 */ +#line 2618 "parser.c" /* yacc.c:1646 */ break; case 39: @@ -2652,7 +2622,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2656 "parser.c" /* yacc.c:1646 */ +#line 2626 "parser.c" /* yacc.c:1646 */ break; case 40: @@ -2660,7 +2630,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2664 "parser.c" /* yacc.c:1646 */ +#line 2634 "parser.c" /* yacc.c:1646 */ break; case 41: @@ -2668,7 +2638,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2672 "parser.c" /* yacc.c:1646 */ +#line 2642 "parser.c" /* yacc.c:1646 */ break; case 42: @@ -2676,7 +2646,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2680 "parser.c" /* yacc.c:1646 */ +#line 2650 "parser.c" /* yacc.c:1646 */ break; case 43: @@ -2684,7 +2654,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2688 "parser.c" /* yacc.c:1646 */ +#line 2658 "parser.c" /* yacc.c:1646 */ break; case 44: @@ -2692,7 +2662,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2696 "parser.c" /* yacc.c:1646 */ +#line 2666 "parser.c" /* yacc.c:1646 */ break; case 45: @@ -2700,7 +2670,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2704 "parser.c" /* yacc.c:1646 */ +#line 2674 "parser.c" /* yacc.c:1646 */ break; case 46: @@ -2708,7 +2678,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2712 "parser.c" /* yacc.c:1646 */ +#line 2682 "parser.c" /* yacc.c:1646 */ break; case 47: @@ -2716,260 +2686,238 @@ yyreduce: { (yyval.blk) = (yyvsp[0].blk); } -#line 2720 "parser.c" /* yacc.c:1646 */ +#line 2690 "parser.c" /* yacc.c:1646 */ break; case 48: #line 474 "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 - // don't have to free so much stuff here - (yyval.blk) = gen_import(jv_string_value(v), gen_noop(), jv_string_value((yyvsp[-1].literal)), 1); - block_free((yyvsp[-4].blk)); - jv_free((yyvsp[-1].literal)); - jv_free(v); + (yyval.blk) = (yyvsp[-1].blk); } -#line 2734 "parser.c" /* yacc.c:1646 */ +#line 2698 "parser.c" /* yacc.c:1646 */ break; case 49: -#line 483 "parser.y" /* yacc.c:1646 */ +#line 477 "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); - block_free((yyvsp[-3].blk)); - jv_free((yyvsp[-1].literal)); - jv_free(v); + if (!block_is_const((yyvsp[-1].blk))) { + FAIL((yyloc), "Module metadata must be constant"); + (yyval.blk) = gen_noop(); + block_free((yyvsp[-2].blk)); + block_free((yyvsp[-1].blk)); + } else if (block_const_kind((yyvsp[-1].blk)) != JV_KIND_OBJECT) { + FAIL((yyloc), "Module metadata must be an object"); + (yyval.blk) = gen_noop(); + block_free((yyvsp[-2].blk)); + block_free((yyvsp[-1].blk)); + } else { + (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk)); + } } -#line 2746 "parser.c" /* yacc.c:1646 */ +#line 2718 "parser.c" /* yacc.c:1646 */ break; case 50: -#line 490 "parser.y" /* yacc.c:1646 */ +#line 494 "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 v = block_const((yyvsp[-3].blk)); + // XXX Make gen_import take only blocks and the int is_data so we + // don't have to free so much stuff here + (yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 1); + block_free((yyvsp[-3].blk)); + jv_free((yyvsp[0].literal)); jv_free(v); } -#line 2757 "parser.c" /* yacc.c:1646 */ +#line 2732 "parser.c" /* yacc.c:1646 */ break; case 51: -#line 496 "parser.y" /* yacc.c:1646 */ +#line 503 "parser.y" /* yacc.c:1646 */ { - if (!block_is_const((yyvsp[-1].blk))) { - FAIL((yyloc), "Module metadata must be constant."); - (yyval.blk) = gen_noop(); - } else { - jv v = block_const((yyvsp[-4].blk)); - (yyval.blk) = gen_import(jv_string_value(v), (yyvsp[-1].blk), jv_string_value((yyvsp[-2].literal)), 0); - jv_free(v); - } - block_free((yyvsp[-4].blk)); - jv_free((yyvsp[-2].literal)); + jv v = block_const((yyvsp[-2].blk)); + (yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 0); + block_free((yyvsp[-2].blk)); + jv_free((yyvsp[0].literal)); + jv_free(v); } -#line 2774 "parser.c" /* yacc.c:1646 */ +#line 2744 "parser.c" /* yacc.c:1646 */ break; case 52: -#line 508 "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."); - (yyval.blk) = gen_noop(); - } else { - jv v = block_const((yyvsp[-2].blk)); - (yyval.blk) = gen_import(jv_string_value(v), (yyvsp[-1].blk), NULL, 0); - jv_free(v); - } - block_free((yyvsp[-2].blk)); + jv v = block_const((yyvsp[0].blk)); + (yyval.blk) = gen_import(jv_string_value(v), NULL, 0); + block_free((yyvsp[0].blk)); + jv_free(v); } -#line 2790 "parser.c" /* yacc.c:1646 */ +#line 2755 "parser.c" /* yacc.c:1646 */ break; case 53: -#line 519 "parser.y" /* yacc.c:1646 */ - { - if (!block_is_const((yyvsp[-1].blk))) { - FAIL((yyloc), "Module metadata must be constant."); - (yyval.blk) = gen_noop(); - } else { - jv v = block_const((yyvsp[-5].blk)); - (yyval.blk) = gen_import(jv_string_value(v), (yyvsp[-1].blk), jv_string_value((yyvsp[-2].literal)), 1); - jv_free(v); - } - block_free((yyvsp[-5].blk)); - jv_free((yyvsp[-2].literal)); -} -#line 2807 "parser.c" /* yacc.c:1646 */ - break; - - case 54: -#line 533 "parser.y" /* yacc.c:1646 */ +#line 518 "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 2816 "parser.c" /* yacc.c:1646 */ +#line 2764 "parser.c" /* yacc.c:1646 */ break; - case 55: -#line 538 "parser.y" /* yacc.c:1646 */ + case 54: +#line 523 "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 2825 "parser.c" /* yacc.c:1646 */ +#line 2773 "parser.c" /* yacc.c:1646 */ break; - case 56: -#line 544 "parser.y" /* yacc.c:1646 */ + case 55: +#line 529 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2833 "parser.c" /* yacc.c:1646 */ +#line 2781 "parser.c" /* yacc.c:1646 */ break; - case 57: -#line 547 "parser.y" /* yacc.c:1646 */ + case 56: +#line 532 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2841 "parser.c" /* yacc.c:1646 */ +#line 2789 "parser.c" /* yacc.c:1646 */ break; - case 58: -#line 552 "parser.y" /* yacc.c:1646 */ + case 57: +#line 537 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2850 "parser.c" /* yacc.c:1646 */ +#line 2798 "parser.c" /* yacc.c:1646 */ break; - case 59: -#line 557 "parser.y" /* yacc.c:1646 */ + case 58: +#line 542 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2859 "parser.c" /* yacc.c:1646 */ +#line 2807 "parser.c" /* yacc.c:1646 */ + break; + + case 59: +#line 549 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = jv_string("text"); } +#line 2813 "parser.c" /* yacc.c:1646 */ break; case 60: -#line 564 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = jv_string("text"); } -#line 2865 "parser.c" /* yacc.c:1646 */ +#line 549 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = (yyvsp[-1].blk); + jv_free((yyvsp[-2].literal)); +} +#line 2822 "parser.c" /* yacc.c:1646 */ break; case 61: -#line 564 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[-1].blk); - jv_free((yyvsp[-2].literal)); -} -#line 2874 "parser.c" /* yacc.c:1646 */ +#line 553 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = (yyvsp[-1].literal); } +#line 2828 "parser.c" /* yacc.c:1646 */ break; case 62: -#line 568 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = (yyvsp[-1].literal); } -#line 2880 "parser.c" /* yacc.c:1646 */ - break; - - case 63: -#line 568 "parser.y" /* yacc.c:1646 */ +#line 553 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2889 "parser.c" /* yacc.c:1646 */ +#line 2837 "parser.c" /* yacc.c:1646 */ break; - case 64: -#line 575 "parser.y" /* yacc.c:1646 */ + case 63: +#line 560 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_string("")); } -#line 2897 "parser.c" /* yacc.c:1646 */ +#line 2845 "parser.c" /* yacc.c:1646 */ break; - case 65: -#line 578 "parser.y" /* yacc.c:1646 */ + case 64: +#line 563 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 2905 "parser.c" /* yacc.c:1646 */ +#line 2853 "parser.c" /* yacc.c:1646 */ break; - case 66: -#line 581 "parser.y" /* yacc.c:1646 */ + case 65: +#line 566 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 2913 "parser.c" /* yacc.c:1646 */ +#line 2861 "parser.c" /* yacc.c:1646 */ break; - case 67: -#line 587 "parser.y" /* yacc.c:1646 */ + case 66: +#line 572 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2921 "parser.c" /* yacc.c:1646 */ +#line 2869 "parser.c" /* yacc.c:1646 */ break; - case 68: -#line 590 "parser.y" /* yacc.c:1646 */ + case 67: +#line 575 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 2929 "parser.c" /* yacc.c:1646 */ +#line 2877 "parser.c" /* yacc.c:1646 */ break; - case 69: -#line 595 "parser.y" /* yacc.c:1646 */ + case 68: +#line 580 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2937 "parser.c" /* yacc.c:1646 */ +#line 2885 "parser.c" /* yacc.c:1646 */ break; - case 70: -#line 598 "parser.y" /* yacc.c:1646 */ + case 69: +#line 583 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2945 "parser.c" /* yacc.c:1646 */ +#line 2893 "parser.c" /* yacc.c:1646 */ break; - case 71: -#line 601 "parser.y" /* yacc.c:1646 */ + case 70: +#line 586 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2953 "parser.c" /* yacc.c:1646 */ +#line 2901 "parser.c" /* yacc.c:1646 */ break; - case 72: -#line 607 "parser.y" /* yacc.c:1646 */ + case 71: +#line 592 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2961 "parser.c" /* yacc.c:1646 */ +#line 2909 "parser.c" /* yacc.c:1646 */ break; - case 73: -#line 610 "parser.y" /* yacc.c:1646 */ + case 72: +#line 595 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 2969 "parser.c" /* yacc.c:1646 */ +#line 2917 "parser.c" /* yacc.c:1646 */ break; - case 74: -#line 613 "parser.y" /* yacc.c:1646 */ + case 73: +#line 598 "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, @@ -2978,231 +2926,231 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 2982 "parser.c" /* yacc.c:1646 */ +#line 2930 "parser.c" /* yacc.c:1646 */ break; - case 75: -#line 621 "parser.y" /* yacc.c:1646 */ + case 74: +#line 606 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 2991 "parser.c" /* yacc.c:1646 */ +#line 2939 "parser.c" /* yacc.c:1646 */ break; - case 76: -#line 625 "parser.y" /* yacc.c:1646 */ + case 75: +#line 610 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 2999 "parser.c" /* yacc.c:1646 */ +#line 2947 "parser.c" /* yacc.c:1646 */ break; - case 77: -#line 628 "parser.y" /* yacc.c:1646 */ + case 76: +#line 613 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 3007 "parser.c" /* yacc.c:1646 */ +#line 2955 "parser.c" /* yacc.c:1646 */ break; - case 78: -#line 631 "parser.y" /* yacc.c:1646 */ + case 77: +#line 616 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3015 "parser.c" /* yacc.c:1646 */ +#line 2963 "parser.c" /* yacc.c:1646 */ break; - case 79: -#line 634 "parser.y" /* yacc.c:1646 */ + case 78: +#line 619 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 3023 "parser.c" /* yacc.c:1646 */ +#line 2971 "parser.c" /* yacc.c:1646 */ break; - case 80: -#line 637 "parser.y" /* yacc.c:1646 */ + case 79: +#line 622 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 3031 "parser.c" /* yacc.c:1646 */ +#line 2979 "parser.c" /* yacc.c:1646 */ break; - case 81: -#line 640 "parser.y" /* yacc.c:1646 */ + case 80: +#line 625 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 3039 "parser.c" /* yacc.c:1646 */ +#line 2987 "parser.c" /* yacc.c:1646 */ break; - case 82: -#line 643 "parser.y" /* yacc.c:1646 */ + case 81: +#line 628 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3047 "parser.c" /* yacc.c:1646 */ +#line 2995 "parser.c" /* yacc.c:1646 */ break; - case 83: -#line 646 "parser.y" /* yacc.c:1646 */ + case 82: +#line 631 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 3055 "parser.c" /* yacc.c:1646 */ +#line 3003 "parser.c" /* yacc.c:1646 */ break; - case 84: -#line 649 "parser.y" /* yacc.c:1646 */ + case 83: +#line 634 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3064 "parser.c" /* yacc.c:1646 */ +#line 3012 "parser.c" /* yacc.c:1646 */ break; - case 85: -#line 653 "parser.y" /* yacc.c:1646 */ + case 84: +#line 638 "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 3074 "parser.c" /* yacc.c:1646 */ +#line 3022 "parser.c" /* yacc.c:1646 */ break; - case 86: -#line 659 "parser.y" /* yacc.c:1646 */ + case 85: +#line 644 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3082 "parser.c" /* yacc.c:1646 */ +#line 3030 "parser.c" /* yacc.c:1646 */ break; - case 87: -#line 662 "parser.y" /* yacc.c:1646 */ + case 86: +#line 647 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3090 "parser.c" /* yacc.c:1646 */ +#line 3038 "parser.c" /* yacc.c:1646 */ break; - case 88: -#line 665 "parser.y" /* yacc.c:1646 */ + case 87: +#line 650 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3098 "parser.c" /* yacc.c:1646 */ +#line 3046 "parser.c" /* yacc.c:1646 */ break; - case 89: -#line 668 "parser.y" /* yacc.c:1646 */ + case 88: +#line 653 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3106 "parser.c" /* yacc.c:1646 */ +#line 3054 "parser.c" /* yacc.c:1646 */ break; - case 90: -#line 671 "parser.y" /* yacc.c:1646 */ + case 89: +#line 656 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3114 "parser.c" /* yacc.c:1646 */ +#line 3062 "parser.c" /* yacc.c:1646 */ break; - case 91: -#line 674 "parser.y" /* yacc.c:1646 */ + case 90: +#line 659 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3122 "parser.c" /* yacc.c:1646 */ +#line 3070 "parser.c" /* yacc.c:1646 */ break; - case 92: -#line 677 "parser.y" /* yacc.c:1646 */ + case 91: +#line 662 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3130 "parser.c" /* yacc.c:1646 */ +#line 3078 "parser.c" /* yacc.c:1646 */ break; - case 93: -#line 680 "parser.y" /* yacc.c:1646 */ + case 92: +#line 665 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3138 "parser.c" /* yacc.c:1646 */ +#line 3086 "parser.c" /* yacc.c:1646 */ break; - case 94: -#line 683 "parser.y" /* yacc.c:1646 */ + case 93: +#line 668 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3146 "parser.c" /* yacc.c:1646 */ +#line 3094 "parser.c" /* yacc.c:1646 */ break; - case 95: -#line 686 "parser.y" /* yacc.c:1646 */ + case 94: +#line 671 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3154 "parser.c" /* yacc.c:1646 */ +#line 3102 "parser.c" /* yacc.c:1646 */ break; - case 96: -#line 689 "parser.y" /* yacc.c:1646 */ + case 95: +#line 674 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3162 "parser.c" /* yacc.c:1646 */ +#line 3110 "parser.c" /* yacc.c:1646 */ break; - case 97: -#line 692 "parser.y" /* yacc.c:1646 */ + case 96: +#line 677 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3170 "parser.c" /* yacc.c:1646 */ +#line 3118 "parser.c" /* yacc.c:1646 */ break; - case 98: -#line 695 "parser.y" /* yacc.c:1646 */ + case 97: +#line 680 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3178 "parser.c" /* yacc.c:1646 */ +#line 3126 "parser.c" /* yacc.c:1646 */ break; - case 99: -#line 698 "parser.y" /* yacc.c:1646 */ + case 98: +#line 683 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3186 "parser.c" /* yacc.c:1646 */ +#line 3134 "parser.c" /* yacc.c:1646 */ break; - case 100: -#line 701 "parser.y" /* yacc.c:1646 */ + case 99: +#line 686 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_collect((yyvsp[-1].blk)); } -#line 3194 "parser.c" /* yacc.c:1646 */ +#line 3142 "parser.c" /* yacc.c:1646 */ break; - case 101: -#line 704 "parser.y" /* yacc.c:1646 */ + case 100: +#line 689 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_array()); } -#line 3202 "parser.c" /* yacc.c:1646 */ +#line 3150 "parser.c" /* yacc.c:1646 */ break; - case 102: -#line 707 "parser.y" /* yacc.c:1646 */ + case 101: +#line 692 "parser.y" /* yacc.c:1646 */ { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3210,29 +3158,29 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3214 "parser.c" /* yacc.c:1646 */ +#line 3162 "parser.c" /* yacc.c:1646 */ break; - case 103: -#line 714 "parser.y" /* yacc.c:1646 */ + case 102: +#line 699 "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 3223 "parser.c" /* yacc.c:1646 */ +#line 3171 "parser.c" /* yacc.c:1646 */ break; - case 104: -#line 718 "parser.y" /* yacc.c:1646 */ + case 103: +#line 703 "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 3232 "parser.c" /* yacc.c:1646 */ +#line 3180 "parser.c" /* yacc.c:1646 */ break; - case 105: -#line 722 "parser.y" /* yacc.c:1646 */ + case 104: +#line 707 "parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3245,409 +3193,409 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3249 "parser.c" /* yacc.c:1646 */ +#line 3197 "parser.c" /* yacc.c:1646 */ break; - case 106: -#line 734 "parser.y" /* yacc.c:1646 */ + case 105: +#line 719 "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 3259 "parser.c" /* yacc.c:1646 */ +#line 3207 "parser.c" /* yacc.c:1646 */ + break; + + case 106: +#line 724 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3213 "parser.c" /* yacc.c:1646 */ break; case 107: -#line 739 "parser.y" /* yacc.c:1646 */ +#line 725 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3265 "parser.c" /* yacc.c:1646 */ +#line 3219 "parser.c" /* yacc.c:1646 */ break; case 108: -#line 740 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3271 "parser.c" /* yacc.c:1646 */ +#line 726 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[-3].blk); } +#line 3225 "parser.c" /* yacc.c:1646 */ break; case 109: -#line 741 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[-3].blk); } -#line 3277 "parser.c" /* yacc.c:1646 */ +#line 727 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3231 "parser.c" /* yacc.c:1646 */ break; case 110: -#line 742 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3283 "parser.c" /* yacc.c:1646 */ - break; - - case 111: -#line 745 "parser.y" /* yacc.c:1646 */ +#line 730 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3291 "parser.c" /* yacc.c:1646 */ +#line 3239 "parser.c" /* yacc.c:1646 */ break; - case 112: -#line 748 "parser.y" /* yacc.c:1646 */ + case 111: +#line 733 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3299 "parser.c" /* yacc.c:1646 */ +#line 3247 "parser.c" /* yacc.c:1646 */ break; - case 113: -#line 753 "parser.y" /* yacc.c:1646 */ + case 112: +#line 738 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3307 "parser.c" /* yacc.c:1646 */ +#line 3255 "parser.c" /* yacc.c:1646 */ break; - case 114: -#line 758 "parser.y" /* yacc.c:1646 */ + case 113: +#line 743 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3316 "parser.c" /* yacc.c:1646 */ +#line 3264 "parser.c" /* yacc.c:1646 */ + break; + + case 114: +#line 747 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); +} +#line 3272 "parser.c" /* yacc.c:1646 */ break; case 115: -#line 762 "parser.y" /* yacc.c:1646 */ +#line 750 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3324 "parser.c" /* yacc.c:1646 */ +#line 3280 "parser.c" /* yacc.c:1646 */ break; case 116: -#line 765 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); -} -#line 3332 "parser.c" /* yacc.c:1646 */ - break; - - case 117: -#line 770 "parser.y" /* yacc.c:1646 */ +#line 755 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3340 "parser.c" /* yacc.c:1646 */ +#line 3288 "parser.c" /* yacc.c:1646 */ break; - case 118: -#line 773 "parser.y" /* yacc.c:1646 */ + case 117: +#line 758 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3348 "parser.c" /* yacc.c:1646 */ +#line 3296 "parser.c" /* yacc.c:1646 */ break; - case 119: -#line 778 "parser.y" /* yacc.c:1646 */ + case 118: +#line 763 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3356 "parser.c" /* yacc.c:1646 */ +#line 3304 "parser.c" /* yacc.c:1646 */ break; - case 120: -#line 781 "parser.y" /* yacc.c:1646 */ + case 119: +#line 766 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3364 "parser.c" /* yacc.c:1646 */ +#line 3312 "parser.c" /* yacc.c:1646 */ break; - case 121: -#line 786 "parser.y" /* yacc.c:1646 */ + case 120: +#line 771 "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 3372 "parser.c" /* yacc.c:1646 */ +#line 3320 "parser.c" /* yacc.c:1646 */ + break; + + case 121: +#line 774 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); +} +#line 3328 "parser.c" /* yacc.c:1646 */ break; case 122: -#line 789 "parser.y" /* yacc.c:1646 */ +#line 777 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3380 "parser.c" /* yacc.c:1646 */ +#line 3336 "parser.c" /* yacc.c:1646 */ break; case 123: -#line 792 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); -} -#line 3388 "parser.c" /* yacc.c:1646 */ - break; - - case 124: -#line 795 "parser.y" /* yacc.c:1646 */ +#line 780 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3396 "parser.c" /* yacc.c:1646 */ +#line 3344 "parser.c" /* yacc.c:1646 */ break; - case 125: -#line 798 "parser.y" /* yacc.c:1646 */ + case 124: +#line 783 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3404 "parser.c" /* yacc.c:1646 */ +#line 3352 "parser.c" /* yacc.c:1646 */ break; - case 126: -#line 803 "parser.y" /* yacc.c:1646 */ + case 125: +#line 788 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("as"); } -#line 3412 "parser.c" /* yacc.c:1646 */ +#line 3360 "parser.c" /* yacc.c:1646 */ break; - case 127: -#line 806 "parser.y" /* yacc.c:1646 */ + case 126: +#line 791 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("def"); } -#line 3420 "parser.c" /* yacc.c:1646 */ +#line 3368 "parser.c" /* yacc.c:1646 */ break; - case 128: -#line 809 "parser.y" /* yacc.c:1646 */ + case 127: +#line 794 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("module"); } -#line 3428 "parser.c" /* yacc.c:1646 */ +#line 3376 "parser.c" /* yacc.c:1646 */ break; - case 129: -#line 812 "parser.y" /* yacc.c:1646 */ + case 128: +#line 797 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("import"); } -#line 3436 "parser.c" /* yacc.c:1646 */ +#line 3384 "parser.c" /* yacc.c:1646 */ break; - case 130: -#line 815 "parser.y" /* yacc.c:1646 */ + case 129: +#line 800 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("include"); } -#line 3444 "parser.c" /* yacc.c:1646 */ +#line 3392 "parser.c" /* yacc.c:1646 */ break; - case 131: -#line 818 "parser.y" /* yacc.c:1646 */ + case 130: +#line 803 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("if"); } -#line 3452 "parser.c" /* yacc.c:1646 */ +#line 3400 "parser.c" /* yacc.c:1646 */ break; - case 132: -#line 821 "parser.y" /* yacc.c:1646 */ + case 131: +#line 806 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("then"); } -#line 3460 "parser.c" /* yacc.c:1646 */ +#line 3408 "parser.c" /* yacc.c:1646 */ break; - case 133: -#line 824 "parser.y" /* yacc.c:1646 */ + case 132: +#line 809 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("else"); } -#line 3468 "parser.c" /* yacc.c:1646 */ +#line 3416 "parser.c" /* yacc.c:1646 */ break; - case 134: -#line 827 "parser.y" /* yacc.c:1646 */ + case 133: +#line 812 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("elif"); } -#line 3476 "parser.c" /* yacc.c:1646 */ +#line 3424 "parser.c" /* yacc.c:1646 */ break; - case 135: -#line 830 "parser.y" /* yacc.c:1646 */ + case 134: +#line 815 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("reduce"); } -#line 3484 "parser.c" /* yacc.c:1646 */ +#line 3432 "parser.c" /* yacc.c:1646 */ break; - case 136: -#line 833 "parser.y" /* yacc.c:1646 */ + case 135: +#line 818 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("foreach"); } -#line 3492 "parser.c" /* yacc.c:1646 */ +#line 3440 "parser.c" /* yacc.c:1646 */ break; - case 137: -#line 836 "parser.y" /* yacc.c:1646 */ + case 136: +#line 821 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("end"); } -#line 3500 "parser.c" /* yacc.c:1646 */ +#line 3448 "parser.c" /* yacc.c:1646 */ break; - case 138: -#line 839 "parser.y" /* yacc.c:1646 */ + case 137: +#line 824 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("and"); } -#line 3508 "parser.c" /* yacc.c:1646 */ +#line 3456 "parser.c" /* yacc.c:1646 */ break; - case 139: -#line 842 "parser.y" /* yacc.c:1646 */ + case 138: +#line 827 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("or"); } -#line 3516 "parser.c" /* yacc.c:1646 */ +#line 3464 "parser.c" /* yacc.c:1646 */ break; - case 140: -#line 845 "parser.y" /* yacc.c:1646 */ + case 139: +#line 830 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("try"); } -#line 3524 "parser.c" /* yacc.c:1646 */ +#line 3472 "parser.c" /* yacc.c:1646 */ break; - case 141: -#line 848 "parser.y" /* yacc.c:1646 */ + case 140: +#line 833 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("catch"); } -#line 3532 "parser.c" /* yacc.c:1646 */ +#line 3480 "parser.c" /* yacc.c:1646 */ break; - case 142: -#line 851 "parser.y" /* yacc.c:1646 */ + case 141: +#line 836 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("label"); } -#line 3540 "parser.c" /* yacc.c:1646 */ +#line 3488 "parser.c" /* yacc.c:1646 */ break; - case 143: -#line 854 "parser.y" /* yacc.c:1646 */ + case 142: +#line 839 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("break"); } -#line 3548 "parser.c" /* yacc.c:1646 */ +#line 3496 "parser.c" /* yacc.c:1646 */ break; - case 144: -#line 857 "parser.y" /* yacc.c:1646 */ + case 143: +#line 842 "parser.y" /* yacc.c:1646 */ { (yyval.literal) = jv_string("__loc__"); } -#line 3556 "parser.c" /* yacc.c:1646 */ +#line 3504 "parser.c" /* yacc.c:1646 */ break; - case 145: -#line 862 "parser.y" /* yacc.c:1646 */ + case 144: +#line 847 "parser.y" /* yacc.c:1646 */ { (yyval.blk)=gen_noop(); } -#line 3564 "parser.c" /* yacc.c:1646 */ +#line 3512 "parser.c" /* yacc.c:1646 */ + break; + + case 145: +#line 850 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3518 "parser.c" /* yacc.c:1646 */ break; case 146: -#line 865 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3570 "parser.c" /* yacc.c:1646 */ +#line 851 "parser.y" /* yacc.c:1646 */ + { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } +#line 3524 "parser.c" /* yacc.c:1646 */ break; case 147: -#line 866 "parser.y" /* yacc.c:1646 */ - { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3576 "parser.c" /* yacc.c:1646 */ +#line 852 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3530 "parser.c" /* yacc.c:1646 */ break; case 148: -#line 867 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3582 "parser.c" /* yacc.c:1646 */ - break; - - case 149: -#line 870 "parser.y" /* yacc.c:1646 */ +#line 855 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3590 "parser.c" /* yacc.c:1646 */ +#line 3538 "parser.c" /* yacc.c:1646 */ break; - case 150: -#line 873 "parser.y" /* yacc.c:1646 */ + case 149: +#line 858 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3598 "parser.c" /* yacc.c:1646 */ +#line 3546 "parser.c" /* yacc.c:1646 */ break; - case 151: -#line 876 "parser.y" /* yacc.c:1646 */ + case 150: +#line 861 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3606 "parser.c" /* yacc.c:1646 */ +#line 3554 "parser.c" /* yacc.c:1646 */ break; - case 152: -#line 879 "parser.y" /* yacc.c:1646 */ + case 151: +#line 864 "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 3615 "parser.c" /* yacc.c:1646 */ +#line 3563 "parser.c" /* yacc.c:1646 */ break; - case 153: -#line 883 "parser.y" /* yacc.c:1646 */ + case 152: +#line 868 "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 3624 "parser.c" /* yacc.c:1646 */ +#line 3572 "parser.c" /* yacc.c:1646 */ break; - case 154: -#line 887 "parser.y" /* yacc.c:1646 */ + case 153: +#line 872 "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 3633 "parser.c" /* yacc.c:1646 */ +#line 3581 "parser.c" /* yacc.c:1646 */ break; - case 155: -#line 891 "parser.y" /* yacc.c:1646 */ + case 154: +#line 876 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3641 "parser.c" /* yacc.c:1646 */ +#line 3589 "parser.c" /* yacc.c:1646 */ break; - case 156: -#line 894 "parser.y" /* yacc.c:1646 */ + case 155: +#line 879 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3647 "parser.c" /* yacc.c:1646 */ +#line 3595 "parser.c" /* yacc.c:1646 */ break; -#line 3651 "parser.c" /* yacc.c:1646 */ +#line 3599 "parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3882,7 +3830,7 @@ yyreturn: #endif return yyresult; } -#line 895 "parser.y" /* yacc.c:1906 */ +#line 880 "parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/parser.y b/parser.y index 5f44d7a6..45009c29 100644 --- a/parser.y +++ b/parser.y @@ -111,8 +111,8 @@ struct lexer_param; %precedence "catch" -%type Exp Term MkDict MkDictPair ExpD ElseBody QQString -%type FuncDef FuncDefs String Import Imports Param Params +%type Exp Term MkDict MkDictPair ExpD ElseBody QQString String +%type FuncDef FuncDefs Import Imports ImportWhat Param Params %type Arg Args Module Pattern ArrayPats ObjPats ObjPat %type Keyword %{ @@ -286,7 +286,7 @@ Module: } | "module" Exp ';' { if (!block_is_const($2)) { - FAIL(@$, "Module metadata must be constant."); + FAIL(@$, "Module metadata must be constant"); $$ = gen_noop(); } else { $$ = gen_module($2); @@ -471,62 +471,47 @@ Term { } Import: -"import" String "as" '$' IDENT ';' { +ImportWhat ';' { + $$ = $1; +} | +ImportWhat Exp ';' { + if (!block_is_const($2)) { + FAIL(@$, "Module metadata must be constant"); + $$ = gen_noop(); + block_free($1); + block_free($2); + } else if (block_const_kind($2) != JV_KIND_OBJECT) { + FAIL(@$, "Module metadata must be an object"); + $$ = gen_noop(); + block_free($1); + block_free($2); + } else { + $$ = gen_import_meta($1, $2); + } +} + +ImportWhat: +"import" String "as" '$' IDENT { jv v = block_const($2); // XXX Make gen_import take only blocks and the int is_data so we // don't have to free so much stuff here - $$ = gen_import(jv_string_value(v), gen_noop(), jv_string_value($5), 1); + $$ = gen_import(jv_string_value(v), jv_string_value($5), 1); block_free($2); jv_free($5); jv_free(v); } | -"import" String "as" IDENT ';' { +"import" String "as" IDENT { jv v = block_const($2); - $$ = gen_import(jv_string_value(v), gen_noop(), jv_string_value($4), 0); + $$ = gen_import(jv_string_value(v), jv_string_value($4), 0); block_free($2); jv_free($4); jv_free(v); } | -"include" String ';' { +"include" String { jv v = block_const($2); - $$ = gen_import(jv_string_value(v), gen_noop(), NULL, 0); + $$ = gen_import(jv_string_value(v), NULL, 0); block_free($2); jv_free(v); -} | -"import" String "as" IDENT Exp ';' { - if (!block_is_const($5)) { - FAIL(@$, "Module metadata must be constant."); - $$ = gen_noop(); - } else { - jv v = block_const($2); - $$ = gen_import(jv_string_value(v), $5, jv_string_value($4), 0); - jv_free(v); - } - block_free($2); - jv_free($4); -} | -"include" String Exp ';' { - if (!block_is_const($3)) { - FAIL(@$, "Module metadata must be constant."); - $$ = gen_noop(); - } else { - jv v = block_const($2); - $$ = gen_import(jv_string_value(v), $3, NULL, 0); - jv_free(v); - } - block_free($2); -} | -"import" String "as" '$' IDENT Exp ';' { - if (!block_is_const($6)) { - FAIL(@$, "Module metadata must be constant."); - $$ = gen_noop(); - } else { - jv v = block_const($2); - $$ = gen_import(jv_string_value(v), $6, jv_string_value($5), 1); - jv_free(v); - } - block_free($2); - jv_free($5); } FuncDef: diff --git a/tests/jq.test b/tests/jq.test index a223c2f2..e93729db 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1181,6 +1181,14 @@ include "c"; [a, c] null [0,"acmehbah"] +%%FAIL +include "a" (.+1); 0 +jq: error: Module metadata must be constant at , line 1: + +%%FAIL +include "a" []; 0 +jq: error: Module metadata must be an object at , line 1: + modulemeta "c" {"whatever":null,"deps":[{"as":"foo","is_data":false,"relpath":"a"},{"search":"./","as":"d","is_data":false,"relpath":"d"},{"search":"./","as":"d2","is_data":false,"relpath":"d"},{"search":"./../lib/jq","as":"e","is_data":false,"relpath":"e"},{"search":"./../lib/jq","as":"f","is_data":false,"relpath":"f"},{"as":"d","is_data":true,"relpath":"data"}]}