diff --git a/compile.c b/compile.c index 36a93643..e7f3d698 100644 --- a/compile.c +++ b/compile.c @@ -368,12 +368,13 @@ block block_bind(block binder, block body, int bindflags) { return block_join(binder, body); } -block block_bind_library(block binder, block body, int bindflags, const char* libname) { +block block_bind_library(block binder, block body, int bindflags, const char *libname) { bindflags |= OP_HAS_BINDING; int nrefs = 0; - int matchlen = strlen(libname); - char* matchname = jv_mem_alloc(matchlen+2+1); - if (libname[0] != '\0') { + int matchlen = (libname == NULL) ? 0 : strlen(libname); + char *matchname = jv_mem_alloc(matchlen+2+1); + matchname[0] = '\0'; + if (libname != NULL && libname[0] != '\0') { strcpy(matchname,libname); strcpy(matchname+matchlen, "::"); matchlen += 2; @@ -502,7 +503,8 @@ block gen_import(const char* name, block metadata, const char* as, int is_data) meta = block_const(metadata); else meta = jv_object(); - meta = jv_object_set(meta, jv_string("as"), jv_string(as)); + 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; diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index 433d50c3..ef05561e 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -2753,6 +2753,14 @@ sections: the relative path string. The module's symbols are prefixed with "NAME::". + - title: "`import RelativePathString;`" + body: | + + Imports a module found at the given path relative to a + directory in a search path. A ".jq" suffix will be added to + the relative path string. The module's symbols are imported + into the caller's namespace as if the module's content had + been included directly. - title: "`import RelativePathString as NAME ;`" body: | diff --git a/linker.c b/linker.c index b83f00e8..d1c39640 100644 --- a/linker.c +++ b/linker.c @@ -198,6 +198,7 @@ static int process_dependencies(jq_state *jq, jv jq_origin, jv lib_origin, block jv deps = block_take_imports(src_block); block bk = *src_block; int nerrors = 0; + const char *as_str = NULL; jv_array_foreach(deps, i, dep) { int is_data = jv_get_kind(jv_object_get(jv_copy(dep), jv_string("is_data"))) == JV_KIND_TRUE; @@ -208,7 +209,9 @@ static int process_dependencies(jq_state *jq, jv jq_origin, jv lib_origin, block jv_free(v); jv relpath = validate_relpath(jv_object_get(jv_copy(dep), jv_string("relpath"))); jv as = jv_object_get(jv_copy(dep), jv_string("as")); - assert(jv_is_valid(as) && jv_get_kind(as) == JV_KIND_STRING); + assert(!jv_is_valid(as) || jv_get_kind(as) == JV_KIND_STRING); + if (jv_get_kind(as) == JV_KIND_STRING) + as_str = jv_string_value(as); jv search = default_search(jq, jv_object_get(dep, jv_string("search"))); // dep is now freed; do not reuse @@ -233,14 +236,14 @@ static int process_dependencies(jq_state *jq, jv jq_origin, jv lib_origin, block if (state_idx < lib_state->ct) { // Found jv_free(resolved); // Bind the library to the program - bk = block_bind_library(lib_state->defs[state_idx], bk, OP_IS_CALL_PSEUDO, jv_string_value(as)); + bk = block_bind_library(lib_state->defs[state_idx], bk, OP_IS_CALL_PSEUDO, as_str); } else { // Not found. Add it to the table before binding. block dep_def_block = gen_noop(); - nerrors += load_library(jq, resolved, is_data, raw, jv_string_value(as), &dep_def_block, lib_state); + nerrors += load_library(jq, resolved, is_data, raw, as_str, &dep_def_block, lib_state); // resolved has been freed if (nerrors == 0) { // Bind the library to the program - bk = block_bind_library(dep_def_block, bk, OP_IS_CALL_PSEUDO, jv_string_value(as)); + bk = block_bind_library(dep_def_block, bk, OP_IS_CALL_PSEUDO, as_str); } } jv_free(as); diff --git a/parser.c b/parser.c index e516a7ef..75584b99 100644 --- a/parser.c +++ b/parser.c @@ -651,16 +651,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1976 +#define YYLAST 2061 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 65 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 26 /* YYNRULES -- Number of rules. */ -#define YYNRULES 153 +#define YYNRULES 155 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 304 +#define YYNSTATES 307 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -715,17 +715,17 @@ static const yytype_uint16 yyrline[] = 349, 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, 502, 516, 521, 527, 530, 535, 540, 547, 547, - 551, 551, 558, 561, 564, 570, 573, 578, 581, 584, - 590, 593, 596, 604, 608, 611, 614, 617, 620, 623, - 626, 629, 632, 636, 642, 645, 648, 651, 654, 657, - 660, 663, 666, 669, 672, 675, 678, 681, 684, 687, - 690, 697, 701, 705, 717, 722, 723, 724, 725, 728, - 731, 736, 741, 745, 748, 753, 756, 761, 764, 769, - 772, 775, 778, 781, 786, 789, 792, 795, 798, 801, - 804, 807, 810, 813, 816, 819, 822, 825, 828, 831, - 834, 837, 842, 845, 846, 847, 850, 853, 856, 859, - 863, 867, 871, 874 + 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, 859, 862, 863, 864, 867, 870, + 873, 876, 880, 884, 888, 891 }; #endif @@ -766,51 +766,51 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -141 +#define YYPACT_NINF -151 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-141))) + (!!((Yystate) == (-151))) -#define YYTABLE_NINF -143 +#define YYTABLE_NINF -145 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-143))) + (!!((Yytable_value) == (-145))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 25, 806, 31, 33, -5, -2, -141, 17, -141, 64, - 806, 666, 666, 806, 18, 0, -141, 806, 452, 11, - 271, 426, 333, 1284, 806, -141, 6, -141, 3, 806, - 33, 806, -141, -141, -21, 1659, 9, 48, 45, 71, - -141, 73, -141, -6, 56, 1129, -141, -141, -141, 78, - 17, 63, 57, -141, 942, -32, 68, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, 513, 116, 69, 72, 59, - 85, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, -141, -141, 1813, 79, -24, - 3, 143, 122, -141, 1813, 806, -141, 1813, 16, -141, - -141, 2, 806, 539, -24, -24, 600, 92, -141, 14, - -141, -141, -141, -141, -141, -141, 386, -141, 204, 83, - 1160, -141, 204, 204, -141, 386, 1875, 328, 328, 1844, - 1922, 1893, 1875, 1875, 1875, 1875, 1875, 1875, 328, 328, - 1813, 1844, 1875, 328, 328, -6, -6, 87, 87, 87, - -141, 138, -24, 861, 99, 91, 90, 806, 100, 896, - 20, -141, 806, -141, 22, -141, 149, 61, -141, 1331, - -141, 1613, 102, 103, -141, -141, 806, -141, 806, -141, - 110, -141, 204, 112, 54, 104, 107, 112, 112, -141, - -141, -141, -19, 108, 806, 157, 111, -20, -141, 114, - 806, -141, -141, 988, -141, 626, 121, 686, 158, -141, - -141, -141, 2, 118, -141, 806, 806, -141, 806, 806, - 1813, 1690, -141, 204, 204, 204, -24, -141, -24, 1191, - -141, -24, 861, -141, -24, 1813, 124, 125, 1034, -141, - -141, 1378, 746, -141, 806, 1736, 1782, 1425, 1472, -141, - 112, 112, 112, -141, -141, 126, -141, -141, -141, -141, - -141, 129, -141, -141, 1519, 1566, -141, 806, 806, 806, - -24, -141, -141, -141, 1613, 1222, 1080, -141, -141, -141, - 806, -141, 1253, -141 + -5, 844, 5, 28, -22, -19, -151, 10, -151, 52, + 844, 764, 764, 844, 2, 0, -151, 844, 465, 18, + 274, 402, 140, 1322, 844, -151, 6, -151, -3, 844, + 28, 844, -151, -151, -17, 1744, 16, 46, 30, 59, + -151, 60, -151, 19, 8, 1167, -151, -151, -151, 67, + 10, 24, 47, -151, 980, -18, 49, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, 491, 112, 61, 69, 66, + 86, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, -151, -151, 1898, 79, -20, + -3, 376, 638, -151, 1898, 844, -151, 1898, -10, -151, + -151, 11, 844, 552, -20, -20, 578, 92, -151, 72, + -151, -151, -151, -151, -151, -151, 336, -151, 618, 80, + 1198, -151, 618, 618, -151, 336, 1960, 1978, 1978, 1929, + 2007, 182, 1960, 1960, 1960, 1960, 1960, 1960, 1978, 1978, + 1898, 1929, 1960, 1978, 1978, 19, 19, 88, 88, 88, + -151, 139, -20, 899, 101, 94, 84, 844, 96, 934, + 21, -151, 1369, -151, 844, -151, 83, -151, 147, -2, + -151, 1416, -151, 1698, 116, 117, -151, -151, 844, -151, + 844, -151, 107, -151, 618, 130, 1, 119, 121, 130, + 130, -151, -151, -151, -8, 122, 844, 171, 123, -12, + -151, 125, 844, -151, -151, 1026, -151, 698, 131, 724, + 183, -151, -151, -151, -151, 11, 127, -151, 844, 844, + -151, 844, 844, 1898, 1775, -151, 618, 618, 618, -20, + -151, -20, 1229, -151, -20, 899, -151, -20, 1898, 134, + 135, 1072, -151, -151, 1463, 784, -151, 844, 1821, 1867, + 1510, 1557, -151, 130, 130, 130, -151, -151, 132, -151, + -151, -151, -151, -151, 136, -151, -151, 1604, 1651, -151, + 844, 844, 844, -20, -151, -151, -151, 1698, 1260, 1118, + -151, -151, -151, 844, -151, 1291, -151 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -818,53 +818,53 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 103, 79, 94, 96, 71, 0, - 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 47, 1, 0, 8, - 6, 0, 75, 60, 0, 0, 0, 0, 18, 0, - 73, 0, 62, 32, 0, 0, 102, 101, 82, 0, - 0, 81, 0, 99, 0, 0, 151, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 0, 0, 149, 0, 0, - 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 153, 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, 0, 21, 5, 10, 78, 0, - 0, 0, 0, 3, 2, 8, 7, 111, 0, 109, - 62, 0, 0, 0, 0, 0, 0, 0, 72, 0, - 105, 97, 83, 77, 106, 98, 0, 108, 0, 0, - 0, 150, 0, 0, 100, 0, 40, 41, 42, 25, + 0, 0, 0, 0, 0, 21, 5, 10, 80, 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, 152, 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, - 74, 0, 0, 0, 0, 80, 0, 0, 87, 0, - 0, 9, 0, 104, 0, 57, 0, 0, 54, 0, - 16, 0, 0, 0, 19, 17, 0, 63, 0, 59, - 0, 145, 0, 146, 69, 0, 0, 148, 147, 144, - 112, 115, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 76, 107, 0, 86, 0, 85, 0, 0, 110, - 61, 56, 0, 0, 52, 0, 0, 15, 0, 0, - 20, 0, 68, 0, 0, 0, 0, 113, 0, 0, - 119, 0, 0, 114, 0, 11, 93, 92, 0, 84, - 49, 0, 0, 55, 0, 0, 0, 0, 0, 64, - 67, 153, 152, 116, 120, 0, 122, 118, 121, 90, - 89, 91, 50, 48, 0, 0, 66, 0, 0, 0, - 0, 88, 51, 53, 0, 0, 0, 123, 65, 12, - 0, 14, 0, 13 + 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, 147, 0, 148, 71, 0, 0, 150, + 149, 146, 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, 155, 154, 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 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -141, -141, -141, 150, 74, -1, -141, -11, -141, -48, - 1, -141, -141, 66, -107, -138, -4, -141, 8, -122, - -141, -141, -64, -140, -109, -141 + -151, -151, -151, 164, 87, -1, -151, -11, -151, -40, + 4, -151, -151, 81, -94, -129, -4, -151, 23, -122, + -151, -151, -50, -150, -105, -151 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 29, 113, 107, 30, 24, 187, 188, - 25, 42, 120, 129, 237, 203, 26, 118, 119, 174, - 212, 217, 218, 78, 79, 80 + -1, 2, 3, 29, 113, 107, 30, 24, 189, 190, + 25, 42, 120, 129, 240, 205, 26, 118, 119, 174, + 214, 219, 220, 78, 79, 80 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -872,248 +872,252 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 23, 40, 192, 193, 207, 208, 185, 36, 37, 35, - 50, 108, 38, 136, 108, 46, 43, 45, 115, 109, - 54, 51, 124, 77, 227, 252, 246, 201, 114, 112, - 117, 27, 137, 219, 171, 121, 209, 172, 122, 173, - 1, 47, 16, 247, 253, 102, 103, 104, 105, 28, - 211, 31, 32, 108, 197, 198, 33, 199, 41, 108, - 186, 125, 197, 198, 242, 230, 110, 111, 34, 110, - 111, 182, 126, 183, 140, 127, 39, 128, 228, 132, + 23, 40, 194, 195, 50, 27, 108, 36, 37, 35, + 1, 108, 38, 209, 210, 187, 43, 45, 115, 109, + 54, 108, 46, 221, 51, 229, 77, 136, 114, 124, + 117, 203, 112, 255, 31, 32, 16, 249, 171, 121, + 211, 172, 122, 173, 28, 184, 137, 185, 47, 33, + 213, 108, 256, 235, 250, 236, 34, 126, 41, 125, + 39, 110, 111, 127, 128, 130, 110, 111, 132, 188, + 102, 103, 104, 105, 140, 245, 110, 111, 133, 230, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 115, 270, 271, 272, 110, 111, - 179, 175, 219, 130, 110, 111, 232, 133, 233, 134, - 141, 189, 191, 144, 273, 195, 274, 138, 142, 276, - 145, 143, 278, 170, 204, 180, 196, 77, 204, 204, - 205, 105, 210, 220, 176, 221, 77, 4, 5, 6, - 7, 8, 222, 231, 224, 136, 243, 9, 238, 239, - 10, 250, 262, 244, 11, 12, 245, 248, 297, 13, - 251, 14, 15, 254, 216, 259, 223, 264, 279, 280, - 116, 117, 16, 291, 263, 290, 184, 298, 277, 181, - 229, 0, 0, 17, 0, 240, 0, 241, 204, 18, - 0, 19, 177, 20, 21, 178, 22, 0, 4, 5, - 6, 7, 8, 249, 0, 0, 0, 0, 0, 255, - 0, 0, 0, 0, 258, 0, 261, 0, 0, 0, - 0, 0, 0, 15, 265, 266, 0, 267, 268, 204, - 204, 204, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 202, 0, 0, 0, 0, 0, - 18, 284, 19, 285, 20, 21, 0, 22, 0, 0, - 0, -70, 48, 0, 0, 49, -70, 0, 50, 0, - -70, -70, -70, -70, -70, 0, 294, 295, 296, -70, - -70, -70, 0, 0, -70, -70, -70, 0, -70, 302, - 0, 0, -70, -70, -70, -70, -70, -70, -70, -70, - 16, 0, 0, -70, 0, -70, -70, -70, -70, -70, - -70, -70, -70, -70, -70, -70, -70, 0, -70, 0, - -70, -70, -70, -70, 55, -70, 0, 56, -143, -143, - 50, 0, 0, 0, 0, 0, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 0, -143, -143, 0, 0, 0, - 0, 0, 16, 0, 0, -143, -143, 100, 101, 102, - 103, 104, 105, 0, 0, 0, 0, 200, 0, 75, - 56, 76, 0, 50, 0, 0, 0, -142, 0, 57, + 166, 167, 168, 169, 115, 221, 110, 111, 138, 134, + 179, 182, 199, 200, 175, 201, 141, 273, 274, 275, + 142, 191, 193, 199, 200, 197, 233, 276, 143, 277, + 144, 145, 279, 170, 206, 281, 198, 207, 206, 206, + 77, 55, 105, 212, 56, 222, 224, 50, 223, 77, + 226, 234, 136, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 300, 241, 242, 246, 253, 225, 218, 247, 16, + 248, 251, 254, 117, 257, 262, 267, 265, 282, 283, + 294, 293, 82, 83, 116, 266, 75, 243, 76, 244, + 206, 186, 183, 301, -144, 280, 85, 232, 0, 0, + 0, 0, 0, 0, 0, 252, 0, 0, 0, 93, + 94, 258, 0, 0, 0, 0, 261, 0, 264, 98, + 99, 100, 101, 102, 103, 104, 105, 268, 269, 0, + 270, 271, 206, 206, 206, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, + 0, 0, 0, 0, 287, 0, 288, 0, 0, 0, + 0, 0, 0, 0, -72, 48, 0, 0, 49, -72, + 0, 50, 0, -72, -72, -72, -72, -72, 0, 297, + 298, 299, -72, -72, -72, 0, 0, -72, -72, -72, + 0, -72, 305, 0, 0, -72, -72, -72, -72, -72, + -72, -72, -72, 16, 0, 0, -72, 0, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 0, -72, 0, -72, -72, -72, -72, 202, -72, 0, + 56, 0, 0, 50, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 176, 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, 75, 10, 76, 0, 0, 11, 12, 0, - -142, 0, 13, 44, 14, 15, 4, 5, 6, 7, + -144, 0, 13, 52, 14, 15, 4, 5, 6, 7, 8, 0, 0, 0, 0, 16, 9, 0, 0, 10, 0, 0, 0, 11, 12, 0, 17, 0, 13, 0, - 14, 15, 18, 0, 19, 0, 20, 21, 53, 22, + 14, 15, 18, 0, 19, 177, 20, 21, 178, 22, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, - 19, 0, 20, 21, 139, 22, 0, 4, 5, 6, - 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, - 10, 0, 0, 0, 11, 12, 0, 0, 0, 13, - 190, 14, 15, 4, 5, 6, 7, 8, 0, 0, - 0, 0, 16, 9, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 17, 0, 13, 0, 14, 15, 18, - 0, 19, 0, 20, 21, 0, 22, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 0, 0, 0, 0, 0, 18, 0, 19, 0, 20, - 21, 194, 22, 0, 4, 5, 6, 7, 8, 0, - 0, 0, 0, 0, 9, 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, 10, 0, 0, 0, 11, 12, 0, - 17, 0, 13, 0, 14, 15, 18, 0, 19, 0, - 20, 21, 0, 22, 0, 16, 0, 0, 0, 0, - 4, 5, 6, 7, 8, 0, 17, 0, 0, 0, - 0, 0, 18, 0, 19, 0, 20, 21, 257, 22, - 4, 5, 6, 7, 8, 15, 0, 0, 0, 0, - 9, 0, 0, 10, 0, 16, 0, 11, 12, 0, - 0, 0, 13, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 18, 0, 19, 16, 20, 21, 0, 22, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 260, 18, 0, 19, 0, 20, 21, 0, 22, - 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, - 9, 0, 0, 10, 0, 0, 0, 11, 12, 0, - 0, 0, 13, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 283, 18, 0, 19, 0, 20, 21, 0, 22, - 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, - 9, 0, 0, 10, 0, 0, 0, 11, 12, 0, - 0, 0, 13, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 18, 0, 19, 213, 20, 21, 50, 22, - 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 81, 82, 83, 84, 0, - 0, 0, 0, 0, 0, 0, 0, 214, 0, 215, + 19, 0, 20, 21, 53, 22, 44, 0, 0, 4, + 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, + 0, 13, 139, 14, 15, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 16, 9, 0, 0, 10, 0, + 0, 0, 11, 12, 0, 17, 0, 13, 0, 14, + 15, 18, 0, 19, 0, 20, 21, 0, 22, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 18, 0, 19, + 0, 20, 21, 192, 22, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, + 0, 0, 0, 11, 12, 0, 0, 0, 13, 196, + 14, 15, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 16, 9, 0, 0, 10, 0, 0, 0, 11, + 12, 0, 17, 0, 13, 0, 14, 15, 18, 0, + 19, 0, 20, 21, 0, 22, 0, 16, 0, 0, + 0, 0, 4, 5, 6, 7, 8, 0, 17, 0, + 0, 0, 0, 0, 18, 0, 19, 0, 20, 21, + 0, 22, 4, 5, 6, 7, 8, 15, 0, 0, + 0, 180, 9, 0, 0, 10, 0, 16, 0, 11, + 12, 0, 0, 0, 13, 0, 14, 15, 204, 0, + 0, 0, 0, 0, 18, 0, 19, 16, 20, 21, + 0, 22, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 181, 18, 0, 19, 0, 20, 21, + 0, 22, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 0, 9, 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, 10, 0, 0, 0, 11, 12, 0, 17, 0, + 13, 0, 14, 15, 18, 0, 19, 0, 20, 21, + 260, 22, 0, 16, 0, 0, 0, 0, 4, 5, + 6, 7, 8, 0, 17, 0, 0, 0, 0, 263, + 18, 0, 19, 0, 20, 21, 0, 22, 4, 5, + 6, 7, 8, 15, 0, 0, 0, 0, 9, 0, + 0, 10, 0, 16, 0, 11, 12, 0, 0, 0, + 13, 0, 14, 15, 0, 0, 0, 0, 0, 0, + 18, 0, 19, 16, 20, 21, 0, 22, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 286, + 18, 0, 19, 0, 20, 21, 0, 22, 4, 5, + 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, + 0, 10, 0, 0, 0, 11, 12, 0, 0, 0, + 13, 0, 14, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 18, 0, 19, 215, 20, 21, 50, 22, 0, 0, + 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 0, 217, 85, 86, + 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, + 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 81, + 82, 83, 84, 227, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, + 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, + 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 81, 82, 83, 84, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 81, 82, 83, 84, 225, 0, 0, 226, 0, + 105, 81, 82, 83, 84, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 81, 82, 83, - 84, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 81, 82, 83, 84, 0, 0, 0, - 256, 0, 0, 0, 0, 0, 0, 0, 85, 86, - 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, - 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 81, - 82, 83, 84, 0, 0, 0, 281, 0, 0, 0, - 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, - 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 300, 0, 301, 81, 82, - 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, + 103, 104, 105, 303, 0, 304, 81, 82, 83, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, + 89, 90, 91, 92, 93, 94, 0, 81, 82, 83, + 84, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 85, 86, 131, 0, 0, 0, 0, 87, + 88, 89, 90, 91, 92, 93, 94, 0, 81, 82, + 83, 84, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 85, 86, 208, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 85, 86, 131, 0, 0, 0, + 102, 103, 104, 105, 85, 86, 278, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 85, 86, 206, 0, 0, + 101, 102, 103, 104, 105, 85, 86, 302, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 85, 86, 275, 0, - 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, - 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 85, 86, 299, - 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, - 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 85, 86, - 303, 0, 0, 0, 0, 87, 88, 89, 90, 91, - 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, - 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, - 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 234, 81, 82, 83, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, - 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, - 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 282, 81, 82, 83, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, - 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 288, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, + 100, 101, 102, 103, 104, 105, 85, 86, 306, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 289, 81, 82, + 99, 100, 101, 102, 103, 104, 105, 106, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 292, 81, 82, 83, 84, 0, + 102, 103, 104, 105, 231, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 293, 81, 82, 83, 84, 0, 0, 0, 0, - 0, 0, 235, 236, 0, 0, 0, 85, 86, 0, + 105, 237, 81, 82, 83, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 81, 82, - 83, 84, 0, 0, 0, 0, 0, 123, 0, 0, - 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, - 87, 88, 89, 90, 91, 92, 93, 94, 0, 81, - 82, 83, 84, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 85, 86, 0, 0, 0, 0, + 98, 99, 100, 101, 102, 103, 104, 105, 285, 81, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 0, - 0, 0, 269, 0, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 81, 82, 83, 84, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, - 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, - 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 287, 0, 0, 0, 0, 0, 85, 86, 0, 0, - 0, 0, 0, 87, 88, 89, 90, 91, 92, 93, - 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 85, 86, 0, - 0, 0, 0, 0, 87, 88, 89, 90, 91, 92, - 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 85, 86, + 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 291, 81, 82, 83, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, + 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, + 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 292, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, - 92, 93, 94, 0, -143, 82, 83, 0, 0, 0, + 92, 93, 94, 0, 0, 0, 0, 0, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 295, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, + 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, + 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 296, 81, 82, 83, + 84, 0, 0, 0, 0, 0, 0, 238, 239, 0, + 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, + 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, + 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 123, 0, 0, 0, 0, 0, 85, 86, + 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, + 92, 93, 94, 0, 81, 82, 83, 84, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 85, - 86, 0, 0, 82, 83, 0, -143, -143, -143, -143, - -143, -143, 93, 94, 0, 0, 0, 85, 0, 0, - 0, -143, 98, 99, 100, 101, 102, 103, 104, 105, - 93, 94, 82, 83, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, - 94, 0, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105 + 86, 0, 0, 0, 0, 0, 87, 88, 89, 90, + 91, 92, 93, 94, 0, 0, 0, 272, 0, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 289, 85, 86, 0, 0, 0, + 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, + 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 81, 82, 83, 84, + 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 85, 86, 0, 0, 0, 0, 0, 87, 88, + 89, 90, 91, 92, 93, 94, 0, 81, 82, 83, + 84, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 85, 86, 0, 0, 0, 0, 0, 87, + 88, 89, 90, 91, 92, 93, 94, 0, 81, 82, + 83, 84, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 85, 86, 0, 0, 0, 0, 0, + 87, 88, 89, 90, 91, 92, 93, 94, 0, -145, + 82, 83, 0, 0, 0, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 85, 86, 0, 0, -145, -145, + 0, -145, -145, -145, -145, -145, -145, 93, 94, 0, + 0, 0, 0, 0, 0, 0, -145, 98, 99, 100, + 101, 102, 103, 104, 105, -145, -145, 82, 83, 0, + 0, 0, 0, 0, 0, -145, -145, 100, 101, 102, + 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 94, 0, 0, 0, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, + 104, 105 }; static const yytype_int16 yycheck[] = { - 1, 1, 124, 125, 142, 143, 4, 11, 12, 10, - 7, 5, 13, 45, 5, 4, 17, 18, 29, 13, - 21, 20, 13, 22, 4, 45, 45, 136, 29, 28, - 31, 0, 64, 173, 58, 56, 145, 61, 59, 63, - 15, 30, 39, 62, 64, 51, 52, 53, 54, 16, - 172, 56, 54, 5, 40, 41, 39, 43, 58, 5, - 58, 13, 40, 41, 202, 43, 60, 61, 4, 60, - 61, 55, 27, 57, 75, 4, 58, 4, 58, 1, + 1, 1, 124, 125, 7, 0, 5, 11, 12, 10, + 15, 5, 13, 142, 143, 4, 17, 18, 29, 13, + 21, 5, 4, 173, 20, 4, 22, 45, 29, 13, + 31, 136, 28, 45, 56, 54, 39, 45, 58, 56, + 145, 61, 59, 63, 16, 55, 64, 57, 30, 39, + 172, 5, 64, 55, 62, 57, 4, 27, 58, 13, + 58, 60, 61, 4, 4, 57, 60, 61, 1, 58, + 51, 52, 53, 54, 75, 204, 60, 61, 54, 58, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 115, 243, 244, 245, 60, 61, - 111, 110, 252, 57, 60, 61, 55, 54, 57, 62, - 4, 122, 123, 64, 246, 126, 248, 59, 59, 251, - 45, 59, 254, 54, 138, 13, 44, 136, 142, 143, - 57, 54, 4, 44, 1, 54, 145, 4, 5, 6, - 7, 8, 62, 4, 54, 45, 44, 14, 56, 56, - 17, 4, 4, 59, 21, 22, 59, 59, 290, 26, - 59, 28, 29, 59, 173, 54, 177, 59, 54, 54, - 30, 182, 39, 54, 232, 59, 120, 294, 252, 115, - 182, -1, -1, 50, -1, 196, -1, 198, 202, 56, - -1, 58, 59, 60, 61, 62, 63, -1, 4, 5, - 6, 7, 8, 214, -1, -1, -1, -1, -1, 220, - -1, -1, -1, -1, 225, -1, 227, -1, -1, -1, - -1, -1, -1, 29, 235, 236, -1, 238, 239, 243, - 244, 245, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 252, 50, -1, -1, -1, -1, -1, - 56, 262, 58, 264, 60, 61, -1, 63, -1, -1, - -1, 0, 1, -1, -1, 4, 5, -1, 7, -1, - 9, 10, 11, 12, 13, -1, 287, 288, 289, 18, - 19, 20, -1, -1, 23, 24, 25, -1, 27, 300, - -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, 42, -1, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, -1, 57, -1, - 59, 60, 61, 62, 1, 64, -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, -1, 37, 38, -1, -1, -1, - -1, -1, 39, -1, -1, 47, 48, 49, 50, 51, - 52, 53, 54, -1, -1, -1, -1, 1, -1, 56, - 4, 58, -1, 7, -1, -1, -1, 64, -1, 13, + 101, 102, 103, 104, 115, 255, 60, 61, 59, 62, + 111, 112, 40, 41, 110, 43, 4, 246, 247, 248, + 59, 122, 123, 40, 41, 126, 43, 249, 59, 251, + 64, 45, 254, 54, 138, 257, 44, 57, 142, 143, + 136, 1, 54, 4, 4, 44, 62, 7, 54, 145, + 54, 4, 45, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 293, 56, 56, 44, 4, 177, 173, 59, 39, + 59, 59, 59, 184, 59, 54, 59, 4, 54, 54, + 54, 59, 10, 11, 30, 235, 56, 198, 58, 200, + 204, 120, 115, 297, 64, 255, 24, 184, -1, -1, + -1, -1, -1, -1, -1, 216, -1, -1, -1, 37, + 38, 222, -1, -1, -1, -1, 227, -1, 229, 47, + 48, 49, 50, 51, 52, 53, 54, 238, 239, -1, + 241, 242, 246, 247, 248, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, -1, -1, 265, -1, 267, -1, -1, -1, + -1, -1, -1, -1, 0, 1, -1, -1, 4, 5, + -1, 7, -1, 9, 10, 11, 12, 13, -1, 290, + 291, 292, 18, 19, 20, -1, -1, 23, 24, 25, + -1, 27, 303, -1, -1, 31, 32, 33, 34, 35, + 36, 37, 38, 39, -1, -1, 42, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, -1, 59, 60, 61, 62, 1, 64, -1, + 4, -1, -1, 7, -1, -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 1, -1, -1, @@ -1122,54 +1126,72 @@ static const yytype_int16 yycheck[] = 64, -1, 26, 1, 28, 29, 4, 5, 6, 7, 8, -1, -1, -1, -1, 39, 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, 50, -1, 26, -1, - 28, 29, 56, -1, 58, -1, 60, 61, 62, 63, + 28, 29, 56, -1, 58, 59, 60, 61, 62, 63, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, 56, -1, - 58, -1, 60, 61, 1, 63, -1, 4, 5, 6, - 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, - 17, -1, -1, -1, 21, 22, -1, -1, -1, 26, - 1, 28, 29, 4, 5, 6, 7, 8, -1, -1, - -1, -1, 39, 14, -1, -1, 17, -1, -1, -1, - 21, 22, -1, 50, -1, 26, -1, 28, 29, 56, - -1, 58, -1, 60, 61, -1, 63, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, - -1, -1, -1, -1, -1, 56, -1, 58, -1, 60, - 61, 1, 63, -1, 4, 5, 6, 7, 8, -1, - -1, -1, -1, -1, 14, -1, -1, 17, -1, -1, - -1, 21, 22, -1, -1, -1, 26, -1, 28, 29, - 4, 5, 6, 7, 8, -1, -1, -1, -1, 39, - 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, - 50, -1, 26, -1, 28, 29, 56, -1, 58, -1, - 60, 61, -1, 63, -1, 39, -1, -1, -1, -1, - 4, 5, 6, 7, 8, -1, 50, -1, -1, -1, - -1, -1, 56, -1, 58, -1, 60, 61, 62, 63, - 4, 5, 6, 7, 8, 29, -1, -1, -1, -1, - 14, -1, -1, 17, -1, 39, -1, 21, 22, -1, - -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, - -1, -1, 56, -1, 58, 39, 60, 61, -1, 63, - -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, - -1, 55, 56, -1, 58, -1, 60, 61, -1, 63, - 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, - 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, - -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, - -1, 55, 56, -1, 58, -1, 60, 61, -1, 63, - 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, - 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, - -1, -1, 26, -1, 28, 29, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, - -1, -1, 56, -1, 58, 4, 60, 61, 7, 63, - -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, - 39, -1, -1, -1, -1, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, -1, -1, 56, -1, 58, + 58, -1, 60, 61, 62, 63, 1, -1, -1, 4, + 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, + -1, -1, 17, -1, -1, -1, 21, 22, -1, -1, + -1, 26, 1, 28, 29, 4, 5, 6, 7, 8, + -1, -1, -1, -1, 39, 14, -1, -1, 17, -1, + -1, -1, 21, 22, -1, 50, -1, 26, -1, 28, + 29, 56, -1, 58, -1, 60, 61, -1, 63, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 50, -1, -1, -1, -1, -1, 56, -1, 58, + -1, 60, 61, 1, 63, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, + -1, -1, -1, 21, 22, -1, -1, -1, 26, 1, + 28, 29, 4, 5, 6, 7, 8, -1, -1, -1, + -1, 39, 14, -1, -1, 17, -1, -1, -1, 21, + 22, -1, 50, -1, 26, -1, 28, 29, 56, -1, + 58, -1, 60, 61, -1, 63, -1, 39, -1, -1, + -1, -1, 4, 5, 6, 7, 8, -1, 50, -1, + -1, -1, -1, -1, 56, -1, 58, -1, 60, 61, + -1, 63, 4, 5, 6, 7, 8, 29, -1, -1, + -1, 13, 14, -1, -1, 17, -1, 39, -1, 21, + 22, -1, -1, -1, 26, -1, 28, 29, 50, -1, + -1, -1, -1, -1, 56, -1, 58, 39, 60, 61, + -1, 63, -1, -1, -1, -1, -1, -1, 50, -1, + -1, -1, -1, 55, 56, -1, 58, -1, 60, 61, + -1, 63, 4, 5, 6, 7, 8, -1, -1, -1, + -1, -1, 14, -1, -1, 17, -1, -1, -1, 21, + 22, -1, -1, -1, 26, -1, 28, 29, 4, 5, + 6, 7, 8, -1, -1, -1, -1, 39, 14, -1, + -1, 17, -1, -1, -1, 21, 22, -1, 50, -1, + 26, -1, 28, 29, 56, -1, 58, -1, 60, 61, + 62, 63, -1, 39, -1, -1, -1, -1, 4, 5, + 6, 7, 8, -1, 50, -1, -1, -1, -1, 55, + 56, -1, 58, -1, 60, 61, -1, 63, 4, 5, + 6, 7, 8, 29, -1, -1, -1, -1, 14, -1, + -1, 17, -1, 39, -1, 21, 22, -1, -1, -1, + 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, + 56, -1, 58, 39, 60, 61, -1, 63, -1, -1, + -1, -1, -1, -1, 50, -1, -1, -1, -1, 55, + 56, -1, 58, -1, 60, 61, -1, 63, 4, 5, + 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, + -1, 17, -1, -1, -1, 21, 22, -1, -1, -1, + 26, -1, 28, 29, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, + 56, -1, 58, 4, 60, 61, 7, 63, -1, -1, + -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, + -1, -1, -1, 9, 10, 11, 12, -1, -1, -1, + -1, -1, -1, -1, -1, 56, -1, 58, 24, 25, + -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, + 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 9, + 10, 11, 12, 59, -1, -1, 62, -1, -1, -1, + -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, + -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 9, 10, 11, 12, -1, + -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 9, 10, 11, 12, 59, -1, -1, 62, -1, + 54, 9, 10, 11, 12, -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, 47, @@ -1178,18 +1200,15 @@ static const yytype_int16 yycheck[] = -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 9, 10, 11, 12, -1, -1, -1, - 62, -1, -1, -1, -1, -1, -1, -1, 24, 25, - -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, - 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 9, - 10, 11, 12, -1, -1, -1, 62, -1, -1, -1, - -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, - -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, - -1, -1, -1, -1, 44, 45, 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, -1, -1, -1, -1, -1, + 52, 53, 54, 55, -1, 57, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, + 33, 34, 35, 36, 37, 38, -1, 9, 10, 11, + 12, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 24, 25, 57, -1, -1, -1, -1, 31, + 32, 33, 34, 35, 36, 37, 38, -1, 9, 10, + 11, 12, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 24, 25, 57, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, 9, 10, 11, 12, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 24, 25, 57, -1, -1, -1, @@ -1200,31 +1219,6 @@ static const yytype_int16 yycheck[] = -1, 9, 10, 11, 12, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 24, 25, 57, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, - 38, -1, 9, 10, 11, 12, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 24, 25, 57, - -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, - 37, 38, -1, 9, 10, 11, 12, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 24, 25, - 57, -1, -1, -1, -1, 31, 32, 33, 34, 35, - 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, - -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, - -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, - 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, - 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, - -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 9, 10, 11, 12, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, - 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, - 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, - -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1237,41 +1231,65 @@ static const yytype_int16 yycheck[] = 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 12, -1, -1, -1, -1, - -1, -1, 19, 20, -1, -1, -1, 24, 25, -1, + -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 9, 10, - 11, 12, -1, -1, -1, -1, -1, 18, -1, -1, - -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, - 31, 32, 33, 34, 35, 36, 37, 38, -1, 9, - 10, 11, 12, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 24, 25, -1, -1, -1, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, - -1, -1, 42, -1, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, - 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, - 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 9, 10, 11, 12, -1, -1, -1, -1, -1, - 18, -1, -1, -1, -1, -1, 24, 25, -1, -1, - -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, - 38, -1, 9, 10, 11, 12, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 24, 25, -1, - -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, - 37, 38, -1, 9, 10, 11, 12, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 24, 25, + -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, + 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 9, 10, 11, 12, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, - 36, 37, 38, -1, 9, 10, 11, -1, -1, -1, + 36, 37, 38, -1, -1, -1, -1, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, + -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, + -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, 19, 20, -1, + -1, -1, 24, 25, -1, -1, -1, -1, -1, 31, + 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, + -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 9, 10, 11, 12, -1, -1, -1, + -1, -1, 18, -1, -1, -1, -1, -1, 24, 25, + -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, + 36, 37, 38, -1, 9, 10, 11, 12, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 24, - 25, -1, -1, 10, 11, -1, 31, 32, 33, 34, - 35, 36, 37, 38, -1, -1, -1, 24, -1, -1, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 37, 38, 10, 11, -1, -1, -1, -1, -1, -1, - 47, 48, 49, 50, 51, 52, 53, 54, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, -1, -1, -1, -1, -1, -1, -1, 47, - 48, 49, 50, 51, 52, 53, 54 + 25, -1, -1, -1, -1, -1, 31, 32, 33, 34, + 35, 36, 37, 38, -1, -1, -1, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 23, 24, 25, -1, -1, -1, + -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, + -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 9, 10, 11, 12, + -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, -1, 31, 32, + 33, 34, 35, 36, 37, 38, -1, 9, 10, 11, + 12, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 24, 25, -1, -1, -1, -1, -1, 31, + 32, 33, 34, 35, 36, 37, 38, -1, 9, 10, + 11, 12, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 24, 25, -1, -1, -1, -1, -1, + 31, 32, 33, 34, 35, 36, 37, 38, -1, 9, + 10, 11, -1, -1, -1, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 24, 25, -1, -1, 10, 11, + -1, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 37, 38, 10, 11, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, + 52, 53, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, -1, -1, -1, + -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, + 53, 54 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1296,19 +1314,19 @@ static const yytype_uint8 yystos[] = 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 54, 58, 61, 63, 84, 75, 1, 59, 62, 70, - 13, 69, 55, 57, 78, 4, 58, 73, 74, 70, - 1, 70, 84, 84, 1, 70, 44, 40, 41, 43, - 1, 89, 50, 80, 81, 57, 57, 80, 80, 89, - 4, 84, 85, 4, 56, 58, 75, 86, 87, 88, - 44, 54, 62, 70, 54, 59, 62, 4, 58, 83, - 43, 4, 55, 57, 55, 19, 20, 79, 56, 56, - 70, 70, 80, 44, 59, 59, 45, 62, 59, 70, - 4, 59, 45, 64, 59, 70, 62, 62, 70, 54, - 55, 70, 4, 74, 59, 70, 70, 70, 70, 42, - 80, 80, 80, 84, 84, 57, 84, 87, 84, 54, - 54, 62, 55, 55, 70, 70, 23, 18, 55, 55, - 59, 54, 55, 55, 70, 70, 70, 84, 79, 57, - 55, 57, 70, 57 + 13, 55, 70, 69, 55, 57, 78, 4, 58, 73, + 74, 70, 1, 70, 84, 84, 1, 70, 44, 40, + 41, 43, 1, 89, 50, 80, 81, 57, 57, 80, + 80, 89, 4, 84, 85, 4, 56, 58, 75, 86, + 87, 88, 44, 54, 62, 70, 54, 59, 62, 4, + 58, 55, 83, 43, 4, 55, 57, 55, 19, 20, + 79, 56, 56, 70, 70, 80, 44, 59, 59, 45, + 62, 59, 70, 4, 59, 45, 64, 59, 70, 62, + 62, 70, 54, 55, 70, 4, 74, 59, 70, 70, + 70, 70, 42, 80, 80, 80, 84, 84, 57, 84, + 87, 84, 54, 54, 62, 55, 55, 70, 70, 23, + 18, 55, 55, 59, 54, 55, 55, 70, 70, 70, + 84, 79, 57, 55, 57, 70, 57 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1319,17 +1337,17 @@ static const yytype_uint8 yyr1[] = 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, - 71, 71, 72, 72, 73, 73, 74, 74, 76, 75, - 77, 75, 78, 78, 78, 79, 79, 80, 80, 80, + 71, 71, 71, 71, 72, 72, 73, 73, 74, 74, + 76, 75, 77, 75, 78, 78, 78, 79, 79, 80, + 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, - 82, 83, 84, 84, 84, 85, 85, 86, 86, 87, - 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, + 81, 82, 82, 83, 84, 84, 84, 85, 85, 86, + 86, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 89, 89, 89, 89, 90, 90, 90, 90, - 90, 90, 90, 90 + 88, 88, 88, 88, 89, 89, 89, 89, 90, 90, + 90, 90, 90, 90, 90, 90 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1340,17 +1358,17 @@ static const yytype_uint8 yyr2[] = 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, - 6, 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, 1, 1, + 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, 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 }; @@ -1853,163 +1871,163 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 4: /* IDENT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1857 "parser.c" /* yacc.c:1257 */ +#line 1875 "parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1863 "parser.c" /* yacc.c:1257 */ +#line 1881 "parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1869 "parser.c" /* yacc.c:1257 */ +#line 1887 "parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1875 "parser.c" /* yacc.c:1257 */ +#line 1893 "parser.c" /* yacc.c:1257 */ break; case 40: /* QQSTRING_TEXT */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1881 "parser.c" /* yacc.c:1257 */ +#line 1899 "parser.c" /* yacc.c:1257 */ break; case 67: /* Module */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1887 "parser.c" /* yacc.c:1257 */ +#line 1905 "parser.c" /* yacc.c:1257 */ break; case 68: /* Imports */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1893 "parser.c" /* yacc.c:1257 */ +#line 1911 "parser.c" /* yacc.c:1257 */ break; case 69: /* FuncDefs */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1899 "parser.c" /* yacc.c:1257 */ +#line 1917 "parser.c" /* yacc.c:1257 */ break; case 70: /* Exp */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1905 "parser.c" /* yacc.c:1257 */ +#line 1923 "parser.c" /* yacc.c:1257 */ break; case 71: /* Import */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1911 "parser.c" /* yacc.c:1257 */ +#line 1929 "parser.c" /* yacc.c:1257 */ break; case 72: /* FuncDef */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1917 "parser.c" /* yacc.c:1257 */ +#line 1935 "parser.c" /* yacc.c:1257 */ break; case 73: /* Params */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1923 "parser.c" /* yacc.c:1257 */ +#line 1941 "parser.c" /* yacc.c:1257 */ break; case 74: /* Param */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1929 "parser.c" /* yacc.c:1257 */ +#line 1947 "parser.c" /* yacc.c:1257 */ break; case 75: /* String */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1935 "parser.c" /* yacc.c:1257 */ +#line 1953 "parser.c" /* yacc.c:1257 */ break; case 78: /* QQString */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1941 "parser.c" /* yacc.c:1257 */ +#line 1959 "parser.c" /* yacc.c:1257 */ break; case 79: /* ElseBody */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1947 "parser.c" /* yacc.c:1257 */ +#line 1965 "parser.c" /* yacc.c:1257 */ break; case 80: /* ExpD */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1953 "parser.c" /* yacc.c:1257 */ +#line 1971 "parser.c" /* yacc.c:1257 */ break; case 81: /* Term */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1959 "parser.c" /* yacc.c:1257 */ +#line 1977 "parser.c" /* yacc.c:1257 */ break; case 82: /* Args */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1965 "parser.c" /* yacc.c:1257 */ +#line 1983 "parser.c" /* yacc.c:1257 */ break; case 83: /* Arg */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1971 "parser.c" /* yacc.c:1257 */ +#line 1989 "parser.c" /* yacc.c:1257 */ break; case 84: /* Pattern */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1977 "parser.c" /* yacc.c:1257 */ +#line 1995 "parser.c" /* yacc.c:1257 */ break; case 85: /* ArrayPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1983 "parser.c" /* yacc.c:1257 */ +#line 2001 "parser.c" /* yacc.c:1257 */ break; case 86: /* ObjPats */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1989 "parser.c" /* yacc.c:1257 */ +#line 2007 "parser.c" /* yacc.c:1257 */ break; case 87: /* ObjPat */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1995 "parser.c" /* yacc.c:1257 */ +#line 2013 "parser.c" /* yacc.c:1257 */ break; case 88: /* Keyword */ #line 36 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 2001 "parser.c" /* yacc.c:1257 */ +#line 2019 "parser.c" /* yacc.c:1257 */ break; case 89: /* MkDict */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2007 "parser.c" /* yacc.c:1257 */ +#line 2025 "parser.c" /* yacc.c:1257 */ break; case 90: /* MkDictPair */ #line 37 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 2013 "parser.c" /* yacc.c:1257 */ +#line 2031 "parser.c" /* yacc.c:1257 */ break; @@ -2305,7 +2323,7 @@ yyreduce: { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2309 "parser.c" /* yacc.c:1646 */ +#line 2327 "parser.c" /* yacc.c:1646 */ break; case 3: @@ -2313,7 +2331,7 @@ yyreduce: { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2317 "parser.c" /* yacc.c:1646 */ +#line 2335 "parser.c" /* yacc.c:1646 */ break; case 4: @@ -2321,7 +2339,7 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2325 "parser.c" /* yacc.c:1646 */ +#line 2343 "parser.c" /* yacc.c:1646 */ break; case 5: @@ -2334,7 +2352,7 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2338 "parser.c" /* yacc.c:1646 */ +#line 2356 "parser.c" /* yacc.c:1646 */ break; case 6: @@ -2342,7 +2360,7 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2346 "parser.c" /* yacc.c:1646 */ +#line 2364 "parser.c" /* yacc.c:1646 */ break; case 7: @@ -2350,7 +2368,7 @@ yyreduce: { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2354 "parser.c" /* yacc.c:1646 */ +#line 2372 "parser.c" /* yacc.c:1646 */ break; case 8: @@ -2358,7 +2376,7 @@ yyreduce: { (yyval.blk) = gen_noop(); } -#line 2362 "parser.c" /* yacc.c:1646 */ +#line 2380 "parser.c" /* yacc.c:1646 */ break; case 9: @@ -2366,7 +2384,7 @@ yyreduce: { (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2370 "parser.c" /* yacc.c:1646 */ +#line 2388 "parser.c" /* yacc.c:1646 */ break; case 10: @@ -2374,7 +2392,7 @@ yyreduce: { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2378 "parser.c" /* yacc.c:1646 */ +#line 2396 "parser.c" /* yacc.c:1646 */ break; case 11: @@ -2382,7 +2400,7 @@ yyreduce: { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2386 "parser.c" /* yacc.c:1646 */ +#line 2404 "parser.c" /* yacc.c:1646 */ break; case 12: @@ -2390,7 +2408,7 @@ yyreduce: { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2394 "parser.c" /* yacc.c:1646 */ +#line 2412 "parser.c" /* yacc.c:1646 */ break; case 13: @@ -2398,7 +2416,7 @@ yyreduce: { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2402 "parser.c" /* yacc.c:1646 */ +#line 2420 "parser.c" /* yacc.c:1646 */ break; case 14: @@ -2406,7 +2424,7 @@ yyreduce: { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); } -#line 2410 "parser.c" /* yacc.c:1646 */ +#line 2428 "parser.c" /* yacc.c:1646 */ break; case 15: @@ -2414,7 +2432,7 @@ yyreduce: { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2418 "parser.c" /* yacc.c:1646 */ +#line 2436 "parser.c" /* yacc.c:1646 */ break; case 16: @@ -2423,7 +2441,7 @@ yyreduce: FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2427 "parser.c" /* yacc.c:1646 */ +#line 2445 "parser.c" /* yacc.c:1646 */ break; case 17: @@ -2432,7 +2450,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 2436 "parser.c" /* yacc.c:1646 */ +#line 2454 "parser.c" /* yacc.c:1646 */ break; case 18: @@ -2441,7 +2459,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 2445 "parser.c" /* yacc.c:1646 */ +#line 2463 "parser.c" /* yacc.c:1646 */ break; case 19: @@ -2450,7 +2468,7 @@ yyreduce: FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2454 "parser.c" /* yacc.c:1646 */ +#line 2472 "parser.c" /* yacc.c:1646 */ break; case 20: @@ -2461,7 +2479,7 @@ yyreduce: jv_free((yyvsp[-2].literal)); jv_free(v); } -#line 2465 "parser.c" /* yacc.c:1646 */ +#line 2483 "parser.c" /* yacc.c:1646 */ break; case 21: @@ -2469,7 +2487,7 @@ yyreduce: { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2473 "parser.c" /* yacc.c:1646 */ +#line 2491 "parser.c" /* yacc.c:1646 */ break; case 22: @@ -2477,7 +2495,7 @@ yyreduce: { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2481 "parser.c" /* yacc.c:1646 */ +#line 2499 "parser.c" /* yacc.c:1646 */ break; case 23: @@ -2485,7 +2503,7 @@ yyreduce: { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2489 "parser.c" /* yacc.c:1646 */ +#line 2507 "parser.c" /* yacc.c:1646 */ break; case 24: @@ -2493,7 +2511,7 @@ yyreduce: { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2497 "parser.c" /* yacc.c:1646 */ +#line 2515 "parser.c" /* yacc.c:1646 */ break; case 25: @@ -2501,7 +2519,7 @@ yyreduce: { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2505 "parser.c" /* yacc.c:1646 */ +#line 2523 "parser.c" /* yacc.c:1646 */ break; case 26: @@ -2509,7 +2527,7 @@ yyreduce: { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2513 "parser.c" /* yacc.c:1646 */ +#line 2531 "parser.c" /* yacc.c:1646 */ break; case 27: @@ -2517,7 +2535,7 @@ yyreduce: { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2521 "parser.c" /* yacc.c:1646 */ +#line 2539 "parser.c" /* yacc.c:1646 */ break; case 28: @@ -2525,7 +2543,7 @@ yyreduce: { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2529 "parser.c" /* yacc.c:1646 */ +#line 2547 "parser.c" /* yacc.c:1646 */ break; case 29: @@ -2533,7 +2551,7 @@ yyreduce: { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2537 "parser.c" /* yacc.c:1646 */ +#line 2555 "parser.c" /* yacc.c:1646 */ break; case 30: @@ -2541,7 +2559,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2545 "parser.c" /* yacc.c:1646 */ +#line 2563 "parser.c" /* yacc.c:1646 */ break; case 31: @@ -2549,7 +2567,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2553 "parser.c" /* yacc.c:1646 */ +#line 2571 "parser.c" /* yacc.c:1646 */ break; case 32: @@ -2557,7 +2575,7 @@ yyreduce: { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2561 "parser.c" /* yacc.c:1646 */ +#line 2579 "parser.c" /* yacc.c:1646 */ break; case 33: @@ -2565,7 +2583,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2569 "parser.c" /* yacc.c:1646 */ +#line 2587 "parser.c" /* yacc.c:1646 */ break; case 34: @@ -2573,7 +2591,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2577 "parser.c" /* yacc.c:1646 */ +#line 2595 "parser.c" /* yacc.c:1646 */ break; case 35: @@ -2581,7 +2599,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2585 "parser.c" /* yacc.c:1646 */ +#line 2603 "parser.c" /* yacc.c:1646 */ break; case 36: @@ -2589,7 +2607,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2593 "parser.c" /* yacc.c:1646 */ +#line 2611 "parser.c" /* yacc.c:1646 */ break; case 37: @@ -2599,7 +2617,7 @@ yyreduce: if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Division by zero?"); } -#line 2603 "parser.c" /* yacc.c:1646 */ +#line 2621 "parser.c" /* yacc.c:1646 */ break; case 38: @@ -2609,7 +2627,7 @@ yyreduce: if (block_is_const_inf((yyval.blk))) FAIL((yyloc), "Remainder by zero?"); } -#line 2613 "parser.c" /* yacc.c:1646 */ +#line 2631 "parser.c" /* yacc.c:1646 */ break; case 39: @@ -2617,7 +2635,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2621 "parser.c" /* yacc.c:1646 */ +#line 2639 "parser.c" /* yacc.c:1646 */ break; case 40: @@ -2625,7 +2643,7 @@ yyreduce: { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2629 "parser.c" /* yacc.c:1646 */ +#line 2647 "parser.c" /* yacc.c:1646 */ break; case 41: @@ -2633,7 +2651,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2637 "parser.c" /* yacc.c:1646 */ +#line 2655 "parser.c" /* yacc.c:1646 */ break; case 42: @@ -2641,7 +2659,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2645 "parser.c" /* yacc.c:1646 */ +#line 2663 "parser.c" /* yacc.c:1646 */ break; case 43: @@ -2649,7 +2667,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2653 "parser.c" /* yacc.c:1646 */ +#line 2671 "parser.c" /* yacc.c:1646 */ break; case 44: @@ -2657,7 +2675,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2661 "parser.c" /* yacc.c:1646 */ +#line 2679 "parser.c" /* yacc.c:1646 */ break; case 45: @@ -2665,7 +2683,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2669 "parser.c" /* yacc.c:1646 */ +#line 2687 "parser.c" /* yacc.c:1646 */ break; case 46: @@ -2673,7 +2691,7 @@ yyreduce: { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2677 "parser.c" /* yacc.c:1646 */ +#line 2695 "parser.c" /* yacc.c:1646 */ break; case 47: @@ -2681,7 +2699,7 @@ yyreduce: { (yyval.blk) = (yyvsp[0].blk); } -#line 2685 "parser.c" /* yacc.c:1646 */ +#line 2703 "parser.c" /* yacc.c:1646 */ break; case 48: @@ -2695,7 +2713,7 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2699 "parser.c" /* yacc.c:1646 */ +#line 2717 "parser.c" /* yacc.c:1646 */ break; case 49: @@ -2707,12 +2725,23 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2711 "parser.c" /* yacc.c:1646 */ +#line 2729 "parser.c" /* yacc.c:1646 */ break; case 50: #line 490 "parser.y" /* yacc.c:1646 */ { + jv v = block_const((yyvsp[-1].blk)); + (yyval.blk) = gen_import(jv_string_value(v), gen_noop(), NULL, 0); + block_free((yyvsp[-1].blk)); + jv_free(v); +} +#line 2740 "parser.c" /* yacc.c:1646 */ + break; + + case 51: +#line 496 "parser.y" /* yacc.c:1646 */ + { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); (yyval.blk) = gen_noop(); @@ -2724,11 +2753,27 @@ yyreduce: block_free((yyvsp[-4].blk)); jv_free((yyvsp[-2].literal)); } -#line 2728 "parser.c" /* yacc.c:1646 */ +#line 2757 "parser.c" /* yacc.c:1646 */ break; - case 51: -#line 502 "parser.y" /* yacc.c:1646 */ + case 52: +#line 508 "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)); +} +#line 2773 "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."); @@ -2741,173 +2786,173 @@ yyreduce: block_free((yyvsp[-5].blk)); jv_free((yyvsp[-2].literal)); } -#line 2745 "parser.c" /* yacc.c:1646 */ +#line 2790 "parser.c" /* yacc.c:1646 */ break; - case 52: -#line 516 "parser.y" /* yacc.c:1646 */ + case 54: +#line 533 "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 2754 "parser.c" /* yacc.c:1646 */ +#line 2799 "parser.c" /* yacc.c:1646 */ break; - case 53: -#line 521 "parser.y" /* yacc.c:1646 */ + case 55: +#line 538 "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 2763 "parser.c" /* yacc.c:1646 */ - break; - - case 54: -#line 527 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[0].blk); -} -#line 2771 "parser.c" /* yacc.c:1646 */ - break; - - case 55: -#line 530 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 2779 "parser.c" /* yacc.c:1646 */ +#line 2808 "parser.c" /* yacc.c:1646 */ break; case 56: -#line 535 "parser.y" /* yacc.c:1646 */ +#line 544 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = (yyvsp[0].blk); +} +#line 2816 "parser.c" /* yacc.c:1646 */ + break; + + case 57: +#line 547 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 2824 "parser.c" /* yacc.c:1646 */ + break; + + case 58: +#line 552 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2788 "parser.c" /* yacc.c:1646 */ +#line 2833 "parser.c" /* yacc.c:1646 */ break; - case 57: -#line 540 "parser.y" /* yacc.c:1646 */ + case 59: +#line 557 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2797 "parser.c" /* yacc.c:1646 */ - break; - - case 58: -#line 547 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = jv_string("text"); } -#line 2803 "parser.c" /* yacc.c:1646 */ - break; - - case 59: -#line 547 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[-1].blk); - jv_free((yyvsp[-2].literal)); -} -#line 2812 "parser.c" /* yacc.c:1646 */ +#line 2842 "parser.c" /* yacc.c:1646 */ break; case 60: -#line 551 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = (yyvsp[-1].literal); } -#line 2818 "parser.c" /* yacc.c:1646 */ +#line 564 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = jv_string("text"); } +#line 2848 "parser.c" /* yacc.c:1646 */ break; case 61: -#line 551 "parser.y" /* yacc.c:1646 */ +#line 564 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 2827 "parser.c" /* yacc.c:1646 */ +#line 2857 "parser.c" /* yacc.c:1646 */ break; case 62: -#line 558 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_const(jv_string("")); -} -#line 2835 "parser.c" /* yacc.c:1646 */ +#line 568 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = (yyvsp[-1].literal); } +#line 2863 "parser.c" /* yacc.c:1646 */ break; case 63: -#line 561 "parser.y" /* yacc.c:1646 */ +#line 568 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); + (yyval.blk) = (yyvsp[-1].blk); + jv_free((yyvsp[-2].literal)); } -#line 2843 "parser.c" /* yacc.c:1646 */ +#line 2872 "parser.c" /* yacc.c:1646 */ break; case 64: -#line 564 "parser.y" /* yacc.c:1646 */ +#line 575 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); + (yyval.blk) = gen_const(jv_string("")); } -#line 2851 "parser.c" /* yacc.c:1646 */ +#line 2880 "parser.c" /* yacc.c:1646 */ break; case 65: -#line 570 "parser.y" /* yacc.c:1646 */ +#line 578 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 2859 "parser.c" /* yacc.c:1646 */ +#line 2888 "parser.c" /* yacc.c:1646 */ break; case 66: -#line 573 "parser.y" /* yacc.c:1646 */ +#line 581 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = (yyvsp[-1].blk); + (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 2867 "parser.c" /* yacc.c:1646 */ +#line 2896 "parser.c" /* yacc.c:1646 */ break; case 67: -#line 578 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); +#line 587 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2875 "parser.c" /* yacc.c:1646 */ +#line 2904 "parser.c" /* yacc.c:1646 */ break; case 68: -#line 581 "parser.y" /* yacc.c:1646 */ +#line 590 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); + (yyval.blk) = (yyvsp[-1].blk); } -#line 2883 "parser.c" /* yacc.c:1646 */ +#line 2912 "parser.c" /* yacc.c:1646 */ break; case 69: -#line 584 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[0].blk); +#line 595 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2891 "parser.c" /* yacc.c:1646 */ +#line 2920 "parser.c" /* yacc.c:1646 */ break; case 70: -#line 590 "parser.y" /* yacc.c:1646 */ +#line 598 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_noop(); + (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2899 "parser.c" /* yacc.c:1646 */ +#line 2928 "parser.c" /* yacc.c:1646 */ break; case 71: -#line 593 "parser.y" /* yacc.c:1646 */ +#line 601 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_call("recurse", gen_noop()); + (yyval.blk) = (yyvsp[0].blk); } -#line 2907 "parser.c" /* yacc.c:1646 */ +#line 2936 "parser.c" /* yacc.c:1646 */ break; case 72: -#line 596 "parser.y" /* yacc.c:1646 */ +#line 607 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_noop(); +} +#line 2944 "parser.c" /* yacc.c:1646 */ + break; + + case 73: +#line 610 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_call("recurse", gen_noop()); +} +#line 2952 "parser.c" /* yacc.c:1646 */ + break; + + case 74: +#line 613 "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, @@ -2916,231 +2961,231 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 2920 "parser.c" /* yacc.c:1646 */ +#line 2965 "parser.c" /* yacc.c:1646 */ break; - case 73: -#line 604 "parser.y" /* yacc.c:1646 */ + case 75: +#line 621 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 2929 "parser.c" /* yacc.c:1646 */ - break; - - case 74: -#line 608 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); -} -#line 2937 "parser.c" /* yacc.c:1646 */ - break; - - case 75: -#line 611 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); -} -#line 2945 "parser.c" /* yacc.c:1646 */ +#line 2974 "parser.c" /* yacc.c:1646 */ break; case 76: -#line 614 "parser.y" /* yacc.c:1646 */ +#line 625 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); + (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 2953 "parser.c" /* yacc.c:1646 */ +#line 2982 "parser.c" /* yacc.c:1646 */ break; case 77: -#line 617 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); +#line 628 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 2961 "parser.c" /* yacc.c:1646 */ +#line 2990 "parser.c" /* yacc.c:1646 */ break; case 78: -#line 620 "parser.y" /* yacc.c:1646 */ +#line 631 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); + (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2969 "parser.c" /* yacc.c:1646 */ +#line 2998 "parser.c" /* yacc.c:1646 */ break; case 79: -#line 623 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); +#line 634 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 2977 "parser.c" /* yacc.c:1646 */ +#line 3006 "parser.c" /* yacc.c:1646 */ break; case 80: -#line 626 "parser.y" /* yacc.c:1646 */ +#line 637 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 2985 "parser.c" /* yacc.c:1646 */ +#line 3014 "parser.c" /* yacc.c:1646 */ break; case 81: -#line 629 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); +#line 640 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 2993 "parser.c" /* yacc.c:1646 */ +#line 3022 "parser.c" /* yacc.c:1646 */ break; case 82: -#line 632 "parser.y" /* yacc.c:1646 */ +#line 643 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 3030 "parser.c" /* yacc.c:1646 */ + break; + + case 83: +#line 646 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); +} +#line 3038 "parser.c" /* yacc.c:1646 */ + break; + + case 84: +#line 649 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3002 "parser.c" /* yacc.c:1646 */ +#line 3047 "parser.c" /* yacc.c:1646 */ break; - case 83: -#line 636 "parser.y" /* yacc.c:1646 */ + case 85: +#line 653 "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 3012 "parser.c" /* yacc.c:1646 */ - break; - - case 84: -#line 642 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); -} -#line 3020 "parser.c" /* yacc.c:1646 */ - break; - - case 85: -#line 645 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); -} -#line 3028 "parser.c" /* yacc.c:1646 */ +#line 3057 "parser.c" /* yacc.c:1646 */ break; case 86: -#line 648 "parser.y" /* yacc.c:1646 */ +#line 659 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); + (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3036 "parser.c" /* yacc.c:1646 */ +#line 3065 "parser.c" /* yacc.c:1646 */ break; case 87: -#line 651 "parser.y" /* yacc.c:1646 */ +#line 662 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); + (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3044 "parser.c" /* yacc.c:1646 */ +#line 3073 "parser.c" /* yacc.c:1646 */ break; case 88: -#line 654 "parser.y" /* yacc.c:1646 */ +#line 665 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); + (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3052 "parser.c" /* yacc.c:1646 */ +#line 3081 "parser.c" /* yacc.c:1646 */ break; case 89: -#line 657 "parser.y" /* yacc.c:1646 */ +#line 668 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); + (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3060 "parser.c" /* yacc.c:1646 */ +#line 3089 "parser.c" /* yacc.c:1646 */ break; case 90: -#line 660 "parser.y" /* yacc.c:1646 */ +#line 671 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); + (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3068 "parser.c" /* yacc.c:1646 */ +#line 3097 "parser.c" /* yacc.c:1646 */ break; case 91: -#line 663 "parser.y" /* yacc.c:1646 */ +#line 674 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3076 "parser.c" /* yacc.c:1646 */ +#line 3105 "parser.c" /* yacc.c:1646 */ break; case 92: -#line 666 "parser.y" /* yacc.c:1646 */ +#line 677 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3084 "parser.c" /* yacc.c:1646 */ +#line 3113 "parser.c" /* yacc.c:1646 */ break; case 93: -#line 669 "parser.y" /* yacc.c:1646 */ +#line 680 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); + (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3092 "parser.c" /* yacc.c:1646 */ +#line 3121 "parser.c" /* yacc.c:1646 */ break; case 94: -#line 672 "parser.y" /* yacc.c:1646 */ +#line 683 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_const((yyvsp[0].literal)); + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3100 "parser.c" /* yacc.c:1646 */ +#line 3129 "parser.c" /* yacc.c:1646 */ break; case 95: -#line 675 "parser.y" /* yacc.c:1646 */ +#line 686 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = (yyvsp[0].blk); + (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3108 "parser.c" /* yacc.c:1646 */ +#line 3137 "parser.c" /* yacc.c:1646 */ break; case 96: -#line 678 "parser.y" /* yacc.c:1646 */ +#line 689 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); + (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3116 "parser.c" /* yacc.c:1646 */ +#line 3145 "parser.c" /* yacc.c:1646 */ break; case 97: -#line 681 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[-1].blk); +#line 692 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = (yyvsp[0].blk); } -#line 3124 "parser.c" /* yacc.c:1646 */ +#line 3153 "parser.c" /* yacc.c:1646 */ break; case 98: -#line 684 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_collect((yyvsp[-1].blk)); +#line 695 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3132 "parser.c" /* yacc.c:1646 */ +#line 3161 "parser.c" /* yacc.c:1646 */ break; case 99: -#line 687 "parser.y" /* yacc.c:1646 */ +#line 698 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_const(jv_array()); + (yyval.blk) = (yyvsp[-1].blk); } -#line 3140 "parser.c" /* yacc.c:1646 */ +#line 3169 "parser.c" /* yacc.c:1646 */ break; case 100: -#line 690 "parser.y" /* yacc.c:1646 */ +#line 701 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_collect((yyvsp[-1].blk)); +} +#line 3177 "parser.c" /* yacc.c:1646 */ + break; + + case 101: +#line 704 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_const(jv_array()); +} +#line 3185 "parser.c" /* yacc.c:1646 */ + break; + + case 102: +#line 707 "parser.y" /* yacc.c:1646 */ { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3148,29 +3193,29 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3152 "parser.c" /* yacc.c:1646 */ +#line 3197 "parser.c" /* yacc.c:1646 */ break; - case 101: -#line 697 "parser.y" /* yacc.c:1646 */ + case 103: +#line 714 "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 3161 "parser.c" /* yacc.c:1646 */ +#line 3206 "parser.c" /* yacc.c:1646 */ break; - case 102: -#line 701 "parser.y" /* yacc.c:1646 */ + case 104: +#line 718 "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 3170 "parser.c" /* yacc.c:1646 */ +#line 3215 "parser.c" /* yacc.c:1646 */ break; - case 103: -#line 705 "parser.y" /* yacc.c:1646 */ + case 105: +#line 722 "parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3183,401 +3228,401 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3187 "parser.c" /* yacc.c:1646 */ +#line 3232 "parser.c" /* yacc.c:1646 */ break; - case 104: -#line 717 "parser.y" /* yacc.c:1646 */ + case 106: +#line 734 "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 3197 "parser.c" /* yacc.c:1646 */ - break; - - case 105: -#line 722 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3203 "parser.c" /* yacc.c:1646 */ - break; - - case 106: -#line 723 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3209 "parser.c" /* yacc.c:1646 */ +#line 3242 "parser.c" /* yacc.c:1646 */ break; case 107: -#line 724 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[-3].blk); } -#line 3215 "parser.c" /* yacc.c:1646 */ +#line 739 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3248 "parser.c" /* yacc.c:1646 */ break; case 108: -#line 725 "parser.y" /* yacc.c:1646 */ +#line 740 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3221 "parser.c" /* yacc.c:1646 */ +#line 3254 "parser.c" /* yacc.c:1646 */ break; case 109: -#line 728 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[0].blk); -} -#line 3229 "parser.c" /* yacc.c:1646 */ +#line 741 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[-3].blk); } +#line 3260 "parser.c" /* yacc.c:1646 */ break; case 110: -#line 731 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); -} -#line 3237 "parser.c" /* yacc.c:1646 */ +#line 742 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3266 "parser.c" /* yacc.c:1646 */ break; case 111: -#line 736 "parser.y" /* yacc.c:1646 */ +#line 745 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_lambda((yyvsp[0].blk)); + (yyval.blk) = (yyvsp[0].blk); } -#line 3245 "parser.c" /* yacc.c:1646 */ +#line 3274 "parser.c" /* yacc.c:1646 */ break; case 112: -#line 741 "parser.y" /* yacc.c:1646 */ +#line 748 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); +} +#line 3282 "parser.c" /* yacc.c:1646 */ + break; + + case 113: +#line 753 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_lambda((yyvsp[0].blk)); +} +#line 3290 "parser.c" /* yacc.c:1646 */ + break; + + case 114: +#line 758 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3254 "parser.c" /* yacc.c:1646 */ - break; - - case 113: -#line 745 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); -} -#line 3262 "parser.c" /* yacc.c:1646 */ - break; - - case 114: -#line 748 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); -} -#line 3270 "parser.c" /* yacc.c:1646 */ +#line 3299 "parser.c" /* yacc.c:1646 */ break; case 115: -#line 753 "parser.y" /* yacc.c:1646 */ +#line 762 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); + (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3278 "parser.c" /* yacc.c:1646 */ +#line 3307 "parser.c" /* yacc.c:1646 */ break; case 116: -#line 756 "parser.y" /* yacc.c:1646 */ +#line 765 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3286 "parser.c" /* yacc.c:1646 */ +#line 3315 "parser.c" /* yacc.c:1646 */ break; case 117: -#line 761 "parser.y" /* yacc.c:1646 */ +#line 770 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = (yyvsp[0].blk); + (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3294 "parser.c" /* yacc.c:1646 */ +#line 3323 "parser.c" /* yacc.c:1646 */ break; case 118: -#line 764 "parser.y" /* yacc.c:1646 */ +#line 773 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3302 "parser.c" /* yacc.c:1646 */ +#line 3331 "parser.c" /* yacc.c:1646 */ break; case 119: -#line 769 "parser.y" /* yacc.c:1646 */ +#line 778 "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)))); + (yyval.blk) = (yyvsp[0].blk); } -#line 3310 "parser.c" /* yacc.c:1646 */ +#line 3339 "parser.c" /* yacc.c:1646 */ break; case 120: -#line 772 "parser.y" /* yacc.c:1646 */ +#line 781 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3318 "parser.c" /* yacc.c:1646 */ +#line 3347 "parser.c" /* yacc.c:1646 */ break; case 121: -#line 775 "parser.y" /* yacc.c:1646 */ +#line 786 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); } -#line 3326 "parser.c" /* yacc.c:1646 */ +#line 3355 "parser.c" /* yacc.c:1646 */ break; case 122: -#line 778 "parser.y" /* yacc.c:1646 */ +#line 789 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3334 "parser.c" /* yacc.c:1646 */ +#line 3363 "parser.c" /* yacc.c:1646 */ break; case 123: -#line 781 "parser.y" /* yacc.c:1646 */ +#line 792 "parser.y" /* yacc.c:1646 */ { - (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); + (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3342 "parser.c" /* yacc.c:1646 */ +#line 3371 "parser.c" /* yacc.c:1646 */ break; case 124: -#line 786 "parser.y" /* yacc.c:1646 */ +#line 795 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("as"); + (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3350 "parser.c" /* yacc.c:1646 */ +#line 3379 "parser.c" /* yacc.c:1646 */ break; case 125: -#line 789 "parser.y" /* yacc.c:1646 */ +#line 798 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("def"); + (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3358 "parser.c" /* yacc.c:1646 */ +#line 3387 "parser.c" /* yacc.c:1646 */ break; case 126: -#line 792 "parser.y" /* yacc.c:1646 */ +#line 803 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("module"); + (yyval.literal) = jv_string("as"); } -#line 3366 "parser.c" /* yacc.c:1646 */ +#line 3395 "parser.c" /* yacc.c:1646 */ break; case 127: -#line 795 "parser.y" /* yacc.c:1646 */ +#line 806 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("import"); + (yyval.literal) = jv_string("def"); } -#line 3374 "parser.c" /* yacc.c:1646 */ +#line 3403 "parser.c" /* yacc.c:1646 */ break; case 128: -#line 798 "parser.y" /* yacc.c:1646 */ +#line 809 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("if"); + (yyval.literal) = jv_string("module"); } -#line 3382 "parser.c" /* yacc.c:1646 */ +#line 3411 "parser.c" /* yacc.c:1646 */ break; case 129: -#line 801 "parser.y" /* yacc.c:1646 */ +#line 812 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("then"); + (yyval.literal) = jv_string("import"); } -#line 3390 "parser.c" /* yacc.c:1646 */ +#line 3419 "parser.c" /* yacc.c:1646 */ break; case 130: -#line 804 "parser.y" /* yacc.c:1646 */ +#line 815 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("else"); + (yyval.literal) = jv_string("if"); } -#line 3398 "parser.c" /* yacc.c:1646 */ +#line 3427 "parser.c" /* yacc.c:1646 */ break; case 131: -#line 807 "parser.y" /* yacc.c:1646 */ +#line 818 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("elif"); + (yyval.literal) = jv_string("then"); } -#line 3406 "parser.c" /* yacc.c:1646 */ +#line 3435 "parser.c" /* yacc.c:1646 */ break; case 132: -#line 810 "parser.y" /* yacc.c:1646 */ +#line 821 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("reduce"); + (yyval.literal) = jv_string("else"); } -#line 3414 "parser.c" /* yacc.c:1646 */ +#line 3443 "parser.c" /* yacc.c:1646 */ break; case 133: -#line 813 "parser.y" /* yacc.c:1646 */ +#line 824 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("foreach"); + (yyval.literal) = jv_string("elif"); } -#line 3422 "parser.c" /* yacc.c:1646 */ +#line 3451 "parser.c" /* yacc.c:1646 */ break; case 134: -#line 816 "parser.y" /* yacc.c:1646 */ +#line 827 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("end"); + (yyval.literal) = jv_string("reduce"); } -#line 3430 "parser.c" /* yacc.c:1646 */ +#line 3459 "parser.c" /* yacc.c:1646 */ break; case 135: -#line 819 "parser.y" /* yacc.c:1646 */ +#line 830 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("and"); + (yyval.literal) = jv_string("foreach"); } -#line 3438 "parser.c" /* yacc.c:1646 */ +#line 3467 "parser.c" /* yacc.c:1646 */ break; case 136: -#line 822 "parser.y" /* yacc.c:1646 */ +#line 833 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("or"); + (yyval.literal) = jv_string("end"); } -#line 3446 "parser.c" /* yacc.c:1646 */ +#line 3475 "parser.c" /* yacc.c:1646 */ break; case 137: -#line 825 "parser.y" /* yacc.c:1646 */ +#line 836 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("try"); + (yyval.literal) = jv_string("and"); } -#line 3454 "parser.c" /* yacc.c:1646 */ +#line 3483 "parser.c" /* yacc.c:1646 */ break; case 138: -#line 828 "parser.y" /* yacc.c:1646 */ +#line 839 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("catch"); + (yyval.literal) = jv_string("or"); } -#line 3462 "parser.c" /* yacc.c:1646 */ +#line 3491 "parser.c" /* yacc.c:1646 */ break; case 139: -#line 831 "parser.y" /* yacc.c:1646 */ +#line 842 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("label"); + (yyval.literal) = jv_string("try"); } -#line 3470 "parser.c" /* yacc.c:1646 */ +#line 3499 "parser.c" /* yacc.c:1646 */ break; case 140: -#line 834 "parser.y" /* yacc.c:1646 */ +#line 845 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("break"); + (yyval.literal) = jv_string("catch"); } -#line 3478 "parser.c" /* yacc.c:1646 */ +#line 3507 "parser.c" /* yacc.c:1646 */ break; case 141: -#line 837 "parser.y" /* yacc.c:1646 */ +#line 848 "parser.y" /* yacc.c:1646 */ { - (yyval.literal) = jv_string("__loc__"); + (yyval.literal) = jv_string("label"); } -#line 3486 "parser.c" /* yacc.c:1646 */ +#line 3515 "parser.c" /* yacc.c:1646 */ break; case 142: -#line 842 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk)=gen_noop(); +#line 851 "parser.y" /* yacc.c:1646 */ + { + (yyval.literal) = jv_string("break"); } -#line 3494 "parser.c" /* yacc.c:1646 */ +#line 3523 "parser.c" /* yacc.c:1646 */ break; case 143: -#line 845 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3500 "parser.c" /* yacc.c:1646 */ +#line 854 "parser.y" /* yacc.c:1646 */ + { + (yyval.literal) = jv_string("__loc__"); +} +#line 3531 "parser.c" /* yacc.c:1646 */ break; case 144: -#line 846 "parser.y" /* yacc.c:1646 */ - { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3506 "parser.c" /* yacc.c:1646 */ +#line 859 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk)=gen_noop(); +} +#line 3539 "parser.c" /* yacc.c:1646 */ break; case 145: -#line 847 "parser.y" /* yacc.c:1646 */ +#line 862 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3512 "parser.c" /* yacc.c:1646 */ +#line 3545 "parser.c" /* yacc.c:1646 */ break; case 146: -#line 850 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); - } -#line 3520 "parser.c" /* yacc.c:1646 */ +#line 863 "parser.y" /* yacc.c:1646 */ + { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } +#line 3551 "parser.c" /* yacc.c:1646 */ break; case 147: -#line 853 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); - } -#line 3528 "parser.c" /* yacc.c:1646 */ +#line 864 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3557 "parser.c" /* yacc.c:1646 */ break; case 148: -#line 856 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); - } -#line 3536 "parser.c" /* yacc.c:1646 */ +#line 867 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + } +#line 3565 "parser.c" /* yacc.c:1646 */ break; case 149: -#line 859 "parser.y" /* yacc.c:1646 */ +#line 870 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); + } +#line 3573 "parser.c" /* yacc.c:1646 */ + break; + + case 150: +#line 873 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); + } +#line 3581 "parser.c" /* yacc.c:1646 */ + break; + + case 151: +#line 876 "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 3545 "parser.c" /* yacc.c:1646 */ +#line 3590 "parser.c" /* yacc.c:1646 */ break; - case 150: -#line 863 "parser.y" /* yacc.c:1646 */ + case 152: +#line 880 "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 3554 "parser.c" /* yacc.c:1646 */ +#line 3599 "parser.c" /* yacc.c:1646 */ break; - case 151: -#line 867 "parser.y" /* yacc.c:1646 */ + case 153: +#line 884 "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 3563 "parser.c" /* yacc.c:1646 */ +#line 3608 "parser.c" /* yacc.c:1646 */ break; - case 152: -#line 871 "parser.y" /* yacc.c:1646 */ + case 154: +#line 888 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3571 "parser.c" /* yacc.c:1646 */ +#line 3616 "parser.c" /* yacc.c:1646 */ break; - case 153: -#line 874 "parser.y" /* yacc.c:1646 */ + case 155: +#line 891 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3577 "parser.c" /* yacc.c:1646 */ +#line 3622 "parser.c" /* yacc.c:1646 */ break; -#line 3581 "parser.c" /* yacc.c:1646 */ +#line 3626 "parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3812,7 +3857,7 @@ yyreturn: #endif return yyresult; } -#line 875 "parser.y" /* yacc.c:1906 */ +#line 892 "parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/parser.y b/parser.y index ab8854f7..ac481ed0 100644 --- a/parser.y +++ b/parser.y @@ -487,6 +487,12 @@ Import: jv_free($4); jv_free(v); } | +"import" String ';' { + jv v = block_const($2); + $$ = gen_import(jv_string_value(v), gen_noop(), NULL, 0); + block_free($2); + jv_free(v); +} | "import" String "as" IDENT Exp ';' { if (!block_is_const($5)) { FAIL(@$, "Module metadata must be constant."); @@ -499,6 +505,17 @@ Import: block_free($2); jv_free($4); } | +"import" 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."); diff --git a/tests/jq.test b/tests/jq.test index 84daddf9..2f843cf5 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1117,6 +1117,10 @@ import "c" as foo; [foo::a, foo::c] null [0,"acmehbah"] +import "c"; [a, c] +null +[0,"acmehbah"] + 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"}]}