From 8d504c4e97a0ff560208aa58b5d01e225412d821 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 16 Jul 2014 19:27:10 -0400 Subject: [PATCH] cmd/gc: implement 'for range x {' Fixes #6102. LGTM=gri R=ken, r, gri CC=golang-codereviews https://golang.org/cl/113120043 --- src/cmd/gc/esc.c | 2 +- src/cmd/gc/fmt.c | 6 +- src/cmd/gc/go.y | 5 + src/cmd/gc/range.c | 48 +- src/cmd/gc/y.tab.c | 2524 ++++++++++++------------- src/cmd/gc/yerr.h | 22 +- test/bench/shootout/chameneosredux.go | 2 +- test/chan/perm.go | 3 + test/fixedbugs/bug173.go | 2 + test/fixedbugs/bug406.go | 2 + test/range.go | 92 + test/stress/maps.go | 2 + 12 files changed, 1416 insertions(+), 1294 deletions(-) diff --git a/src/cmd/gc/esc.c b/src/cmd/gc/esc.c index 7ba1a4540a..324f24fcf8 100644 --- a/src/cmd/gc/esc.c +++ b/src/cmd/gc/esc.c @@ -495,7 +495,7 @@ esc(EscState *e, Node *n, Node *up) case ORANGE: // Everything but fixed array is a dereference. - if(isfixedarray(n->type) && n->list->next) + if(isfixedarray(n->type) && n->list && n->list->next) escassign(e, n->list->next->n, n->right); break; diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c index 4e3968588c..951170aeff 100644 --- a/src/cmd/gc/fmt.c +++ b/src/cmd/gc/fmt.c @@ -880,7 +880,11 @@ stmtfmt(Fmt *f, Node *n) fmtstrcpy(f, "for loop"); break; } - + + if(n->list == nil) { + fmtprint(f, "for range %N { %H }", n->right, n->nbody); + break; + } fmtprint(f, "for %,H = range %N { %H }", n->list, n->right, n->nbody); break; diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 5d5249ebc6..b16f64b5d6 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -613,6 +613,11 @@ range_stmt: $$->colas = 1; colasdefn($1, $$); } +| LRANGE expr + { + $$ = nod(ORANGE, N, $2); + $$->etype = 0; // := flag + } for_header: osimple_stmt ';' osimple_stmt ';' osimple_stmt diff --git a/src/cmd/gc/range.c b/src/cmd/gc/range.c index 45aa521b3a..4ed4528323 100644 --- a/src/cmd/gc/range.c +++ b/src/cmd/gc/range.c @@ -67,9 +67,11 @@ typecheckrange(Node *n) yyerror("too many variables in range"); } - v1 = n->list->n; + v1 = N; + if(n->list) + v1 = n->list->n; v2 = N; - if(n->list->next) + if(n->list && n->list->next) v2 = n->list->next->n; // this is not only a optimization but also a requirement in the spec. @@ -77,14 +79,17 @@ typecheckrange(Node *n) // clause is equivalent to the same clause with only the first variable // present." if(isblank(v2)) { - n->list = list1(v1); + if(v1 != N) + n->list = list1(v1); v2 = N; } - if(v1->defn == n) - v1->type = t1; - else if(v1->type != T && assignop(t1, v1->type, &why) == 0) - yyerror("cannot assign type %T to %lN in range%s", t1, v1, why); + if(v1) { + if(v1->defn == n) + v1->type = t1; + else if(v1->type != T && assignop(t1, v1->type, &why) == 0) + yyerror("cannot assign type %T to %lN in range%s", t1, v1, why); + } if(v2) { if(v2->defn == n) v2->type = t2; @@ -123,9 +128,11 @@ walkrange(Node *n) a = n->right; lno = setlineno(a); - v1 = n->list->n; + v1 = N; + if(n->list) + v1 = n->list->n; v2 = N; - if(n->list->next && !isblank(n->list->next->n)) + if(n->list && n->list->next && !isblank(n->list->next->n)) v2 = n->list->next->n; // n->list has no meaning anymore, clear it // to avoid erroneous processing by racewalk. @@ -154,7 +161,9 @@ walkrange(Node *n) n->ntest = nod(OLT, hv1, hn); n->nincr = nod(OAS, hv1, nod(OADD, hv1, nodintconst(1))); - if(v2 == N) + if(v1 == N) + body = nil; + else if(v2 == N) body = list1(nod(OAS, v1, hv1)); else { a = nod(OAS2, N, N); @@ -205,16 +214,18 @@ walkrange(Node *n) key = nod(ODOT, hit, keyname); key = nod(OIND, key, N); - if(v2 == N) { - a = nod(OAS, v1, key); + if(v1 == N) + body = nil; + else if(v2 == N) { + body = list1(nod(OAS, v1, key)); } else { val = nod(ODOT, hit, valname); val = nod(OIND, val, N); a = nod(OAS2, N, N); a->list = list(list1(v1), v2); a->rlist = list(list1(key), val); + body = list1(a); } - body = list1(a); break; case TCHAN: @@ -223,6 +234,7 @@ walkrange(Node *n) n->ntest = N; hv1 = temp(t->type); + hv1->typecheck = 1; if(haspointers(t->type)) init = list(init, nod(OAS, hv1, N)); hb = temp(types[TBOOL]); @@ -233,7 +245,10 @@ walkrange(Node *n) a->list = list(list1(hv1), hb); a->rlist = list1(nod(ORECV, ha, N)); n->ntest->ninit = list1(a); - body = list1(nod(OAS, v1, hv1)); + if(v1 == N) + body = nil; + else + body = list1(nod(OAS, v1, hv1)); break; case TSTRING: @@ -257,7 +272,10 @@ walkrange(Node *n) n->ntest = nod(ONE, hv1, nodintconst(0)); n->ntest->ninit = list(list1(nod(OAS, ohv1, hv1)), a); - body = list1(nod(OAS, v1, ohv1)); + + body = nil; + if(v1 != N) + body = list1(nod(OAS, v1, ohv1)); if(v2 != N) body = list(body, nod(OAS, v2, hv2)); break; diff --git a/src/cmd/gc/y.tab.c b/src/cmd/gc/y.tab.c index 7f5721d536..47beae03b6 100644 --- a/src/cmd/gc/y.tab.c +++ b/src/cmd/gc/y.tab.c @@ -440,16 +440,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2270 +#define YYLAST 2201 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 76 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 142 /* YYNRULES -- Number of rules. */ -#define YYNRULES 351 +#define YYNRULES 352 /* YYNRULES -- Number of states. */ -#define YYNSTATES 667 +#define YYNSTATES 669 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -506,35 +506,35 @@ static const yytype_uint16 yyprhs[] = 129, 132, 137, 141, 146, 150, 152, 155, 157, 159, 162, 164, 168, 172, 176, 179, 182, 186, 192, 198, 201, 202, 207, 208, 212, 213, 216, 217, 222, 227, - 232, 238, 240, 242, 245, 246, 250, 252, 256, 257, - 258, 259, 268, 269, 275, 276, 279, 280, 283, 284, - 285, 293, 294, 300, 302, 306, 310, 314, 318, 322, - 326, 330, 334, 338, 342, 346, 350, 354, 358, 362, - 366, 370, 374, 378, 382, 384, 387, 390, 393, 396, - 399, 402, 405, 408, 412, 418, 425, 427, 429, 433, - 439, 445, 450, 457, 466, 468, 474, 480, 486, 494, - 496, 497, 501, 503, 508, 510, 515, 517, 521, 523, - 525, 527, 529, 531, 533, 535, 536, 538, 540, 542, - 544, 549, 554, 556, 558, 560, 563, 565, 567, 569, - 571, 573, 577, 579, 581, 583, 586, 588, 590, 592, - 594, 598, 600, 602, 604, 606, 608, 610, 612, 614, - 616, 620, 625, 630, 633, 637, 643, 645, 647, 650, - 654, 660, 664, 670, 674, 678, 684, 693, 699, 708, - 714, 715, 719, 720, 722, 726, 728, 733, 736, 737, - 741, 743, 747, 749, 753, 755, 759, 761, 765, 767, - 771, 775, 778, 783, 787, 793, 799, 801, 805, 807, - 810, 812, 816, 821, 823, 826, 829, 831, 833, 837, - 838, 841, 842, 844, 846, 848, 850, 852, 854, 856, - 858, 860, 861, 866, 868, 871, 874, 877, 880, 883, - 886, 888, 892, 894, 898, 900, 904, 906, 910, 912, - 916, 918, 920, 924, 928, 929, 932, 933, 935, 936, - 938, 939, 941, 942, 944, 945, 947, 948, 950, 951, - 953, 954, 956, 957, 959, 964, 969, 975, 982, 987, - 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, - 1014, 1019, 1025, 1030, 1035, 1038, 1041, 1046, 1050, 1054, - 1060, 1064, 1069, 1073, 1079, 1081, 1082, 1084, 1088, 1090, - 1092, 1095, 1097, 1099, 1105, 1106, 1109, 1111, 1115, 1117, - 1121, 1123 + 232, 235, 241, 243, 245, 248, 249, 253, 255, 259, + 260, 261, 262, 271, 272, 278, 279, 282, 283, 286, + 287, 288, 296, 297, 303, 305, 309, 313, 317, 321, + 325, 329, 333, 337, 341, 345, 349, 353, 357, 361, + 365, 369, 373, 377, 381, 385, 387, 390, 393, 396, + 399, 402, 405, 408, 411, 415, 421, 428, 430, 432, + 436, 442, 448, 453, 460, 469, 471, 477, 483, 489, + 497, 499, 500, 504, 506, 511, 513, 518, 520, 524, + 526, 528, 530, 532, 534, 536, 538, 539, 541, 543, + 545, 547, 552, 557, 559, 561, 563, 566, 568, 570, + 572, 574, 576, 580, 582, 584, 586, 589, 591, 593, + 595, 597, 601, 603, 605, 607, 609, 611, 613, 615, + 617, 619, 623, 628, 633, 636, 640, 646, 648, 650, + 653, 657, 663, 667, 673, 677, 681, 687, 696, 702, + 711, 717, 718, 722, 723, 725, 729, 731, 736, 739, + 740, 744, 746, 750, 752, 756, 758, 762, 764, 768, + 770, 774, 778, 781, 786, 790, 796, 802, 804, 808, + 810, 813, 815, 819, 824, 826, 829, 832, 834, 836, + 840, 841, 844, 845, 847, 849, 851, 853, 855, 857, + 859, 861, 863, 864, 869, 871, 874, 877, 880, 883, + 886, 889, 891, 895, 897, 901, 903, 907, 909, 913, + 915, 919, 921, 923, 927, 931, 932, 935, 936, 938, + 939, 941, 942, 944, 945, 947, 948, 950, 951, 953, + 954, 956, 957, 959, 960, 962, 967, 972, 978, 985, + 990, 995, 997, 999, 1001, 1003, 1005, 1007, 1009, 1011, + 1013, 1017, 1022, 1028, 1033, 1038, 1041, 1044, 1049, 1053, + 1057, 1063, 1067, 1072, 1076, 1082, 1084, 1085, 1087, 1091, + 1093, 1095, 1098, 1100, 1102, 1108, 1109, 1112, 1114, 1118, + 1120, 1124, 1126 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -563,96 +563,96 @@ static const yytype_int16 yyrhs[] = -1, -1, 67, 101, 183, 68, -1, -1, 99, 103, 183, -1, -1, 104, 102, -1, -1, 35, 106, 183, 68, -1, 186, 65, 26, 126, -1, 186, 5, 26, - 126, -1, 194, 62, 194, 62, 194, -1, 194, -1, - 107, -1, 108, 105, -1, -1, 16, 111, 109, -1, - 194, -1, 194, 62, 194, -1, -1, -1, -1, 20, - 114, 112, 115, 105, 116, 119, 120, -1, -1, 14, - 20, 118, 112, 105, -1, -1, 119, 117, -1, -1, - 14, 100, -1, -1, -1, 30, 122, 112, 123, 35, - 104, 68, -1, -1, 28, 125, 35, 104, 68, -1, - 127, -1, 126, 47, 126, -1, 126, 33, 126, -1, - 126, 38, 126, -1, 126, 46, 126, -1, 126, 45, - 126, -1, 126, 43, 126, -1, 126, 39, 126, -1, - 126, 40, 126, -1, 126, 49, 126, -1, 126, 50, - 126, -1, 126, 51, 126, -1, 126, 52, 126, -1, - 126, 53, 126, -1, 126, 54, 126, -1, 126, 55, - 126, -1, 126, 56, 126, -1, 126, 34, 126, -1, - 126, 44, 126, -1, 126, 48, 126, -1, 126, 36, - 126, -1, 134, -1, 53, 127, -1, 56, 127, -1, - 49, 127, -1, 50, 127, -1, 69, 127, -1, 70, - 127, -1, 52, 127, -1, 36, 127, -1, 134, 59, - 60, -1, 134, 59, 187, 191, 60, -1, 134, 59, - 187, 11, 191, 60, -1, 3, -1, 143, -1, 134, - 63, 141, -1, 134, 63, 59, 135, 60, -1, 134, - 63, 59, 31, 60, -1, 134, 71, 126, 72, -1, - 134, 71, 192, 66, 192, 72, -1, 134, 71, 192, - 66, 192, 66, 192, 72, -1, 128, -1, 149, 59, - 126, 191, 60, -1, 150, 137, 130, 189, 68, -1, - 129, 67, 130, 189, 68, -1, 59, 135, 60, 67, - 130, 189, 68, -1, 165, -1, -1, 126, 66, 133, - -1, 126, -1, 67, 130, 189, 68, -1, 126, -1, - 67, 130, 189, 68, -1, 129, -1, 59, 135, 60, - -1, 126, -1, 147, -1, 146, -1, 35, -1, 67, - -1, 141, -1, 141, -1, -1, 138, -1, 24, -1, - 142, -1, 73, -1, 74, 3, 63, 24, -1, 74, - 3, 63, 73, -1, 141, -1, 138, -1, 11, -1, - 11, 146, -1, 155, -1, 161, -1, 153, -1, 154, - -1, 152, -1, 59, 146, 60, -1, 155, -1, 161, - -1, 153, -1, 53, 147, -1, 161, -1, 153, -1, - 154, -1, 152, -1, 59, 146, 60, -1, 161, -1, - 153, -1, 153, -1, 155, -1, 161, -1, 153, -1, - 154, -1, 152, -1, 143, -1, 143, 63, 141, -1, - 71, 192, 72, 146, -1, 71, 11, 72, 146, -1, - 8, 148, -1, 8, 36, 146, -1, 23, 71, 146, - 72, 146, -1, 156, -1, 157, -1, 53, 146, -1, - 36, 8, 146, -1, 29, 137, 170, 190, 68, -1, - 29, 137, 68, -1, 22, 137, 171, 190, 68, -1, - 22, 137, 68, -1, 17, 159, 162, -1, 141, 59, - 179, 60, 163, -1, 59, 179, 60, 141, 59, 179, - 60, 163, -1, 200, 59, 195, 60, 210, -1, 59, - 215, 60, 141, 59, 195, 60, 210, -1, 17, 59, - 179, 60, 163, -1, -1, 67, 183, 68, -1, -1, - 151, -1, 59, 179, 60, -1, 161, -1, 164, 137, - 183, 68, -1, 164, 1, -1, -1, 166, 90, 62, - -1, 93, -1, 167, 62, 93, -1, 95, -1, 168, - 62, 95, -1, 97, -1, 169, 62, 97, -1, 172, - -1, 170, 62, 172, -1, 175, -1, 171, 62, 175, - -1, 184, 146, 198, -1, 174, 198, -1, 59, 174, - 60, 198, -1, 53, 174, 198, -1, 59, 53, 174, - 60, 198, -1, 53, 59, 174, 60, 198, -1, 24, - -1, 24, 63, 141, -1, 173, -1, 138, 176, -1, - 173, -1, 59, 173, 60, -1, 59, 179, 60, 163, - -1, 136, -1, 141, 136, -1, 141, 145, -1, 145, - -1, 177, -1, 178, 75, 177, -1, -1, 178, 191, - -1, -1, 100, -1, 91, -1, 181, -1, 1, -1, - 98, -1, 110, -1, 121, -1, 124, -1, 113, -1, - -1, 144, 66, 182, 180, -1, 15, -1, 6, 140, - -1, 10, 140, -1, 18, 128, -1, 13, 128, -1, - 19, 138, -1, 27, 193, -1, 180, -1, 183, 62, - 180, -1, 138, -1, 184, 75, 138, -1, 139, -1, - 185, 75, 139, -1, 126, -1, 186, 75, 126, -1, - 135, -1, 187, 75, 135, -1, 131, -1, 132, -1, - 188, 75, 131, -1, 188, 75, 132, -1, -1, 188, - 191, -1, -1, 62, -1, -1, 75, -1, -1, 126, - -1, -1, 186, -1, -1, 98, -1, -1, 215, -1, - -1, 216, -1, -1, 217, -1, -1, 3, -1, 21, - 24, 3, 62, -1, 32, 200, 202, 62, -1, 9, - 200, 65, 213, 62, -1, 9, 200, 202, 65, 213, - 62, -1, 31, 201, 202, 62, -1, 17, 160, 162, - 62, -1, 142, -1, 200, -1, 204, -1, 205, -1, - 206, -1, 204, -1, 206, -1, 142, -1, 24, -1, - 71, 72, 202, -1, 71, 3, 72, 202, -1, 23, - 71, 202, 72, 202, -1, 29, 67, 196, 68, -1, - 22, 67, 197, 68, -1, 53, 202, -1, 8, 203, - -1, 8, 59, 205, 60, -1, 8, 36, 202, -1, - 36, 8, 202, -1, 17, 59, 195, 60, 210, -1, - 141, 202, 198, -1, 141, 11, 202, 198, -1, 141, - 202, 198, -1, 141, 59, 195, 60, 210, -1, 202, - -1, -1, 211, -1, 59, 195, 60, -1, 202, -1, - 3, -1, 50, 3, -1, 141, -1, 212, -1, 59, - 212, 49, 212, 60, -1, -1, 214, 199, -1, 207, - -1, 215, 75, 207, -1, 208, -1, 216, 62, 208, - -1, 209, -1, 217, 62, 209, -1 + 126, -1, 26, 126, -1, 194, 62, 194, 62, 194, + -1, 194, -1, 107, -1, 108, 105, -1, -1, 16, + 111, 109, -1, 194, -1, 194, 62, 194, -1, -1, + -1, -1, 20, 114, 112, 115, 105, 116, 119, 120, + -1, -1, 14, 20, 118, 112, 105, -1, -1, 119, + 117, -1, -1, 14, 100, -1, -1, -1, 30, 122, + 112, 123, 35, 104, 68, -1, -1, 28, 125, 35, + 104, 68, -1, 127, -1, 126, 47, 126, -1, 126, + 33, 126, -1, 126, 38, 126, -1, 126, 46, 126, + -1, 126, 45, 126, -1, 126, 43, 126, -1, 126, + 39, 126, -1, 126, 40, 126, -1, 126, 49, 126, + -1, 126, 50, 126, -1, 126, 51, 126, -1, 126, + 52, 126, -1, 126, 53, 126, -1, 126, 54, 126, + -1, 126, 55, 126, -1, 126, 56, 126, -1, 126, + 34, 126, -1, 126, 44, 126, -1, 126, 48, 126, + -1, 126, 36, 126, -1, 134, -1, 53, 127, -1, + 56, 127, -1, 49, 127, -1, 50, 127, -1, 69, + 127, -1, 70, 127, -1, 52, 127, -1, 36, 127, + -1, 134, 59, 60, -1, 134, 59, 187, 191, 60, + -1, 134, 59, 187, 11, 191, 60, -1, 3, -1, + 143, -1, 134, 63, 141, -1, 134, 63, 59, 135, + 60, -1, 134, 63, 59, 31, 60, -1, 134, 71, + 126, 72, -1, 134, 71, 192, 66, 192, 72, -1, + 134, 71, 192, 66, 192, 66, 192, 72, -1, 128, + -1, 149, 59, 126, 191, 60, -1, 150, 137, 130, + 189, 68, -1, 129, 67, 130, 189, 68, -1, 59, + 135, 60, 67, 130, 189, 68, -1, 165, -1, -1, + 126, 66, 133, -1, 126, -1, 67, 130, 189, 68, + -1, 126, -1, 67, 130, 189, 68, -1, 129, -1, + 59, 135, 60, -1, 126, -1, 147, -1, 146, -1, + 35, -1, 67, -1, 141, -1, 141, -1, -1, 138, + -1, 24, -1, 142, -1, 73, -1, 74, 3, 63, + 24, -1, 74, 3, 63, 73, -1, 141, -1, 138, + -1, 11, -1, 11, 146, -1, 155, -1, 161, -1, + 153, -1, 154, -1, 152, -1, 59, 146, 60, -1, + 155, -1, 161, -1, 153, -1, 53, 147, -1, 161, + -1, 153, -1, 154, -1, 152, -1, 59, 146, 60, + -1, 161, -1, 153, -1, 153, -1, 155, -1, 161, + -1, 153, -1, 154, -1, 152, -1, 143, -1, 143, + 63, 141, -1, 71, 192, 72, 146, -1, 71, 11, + 72, 146, -1, 8, 148, -1, 8, 36, 146, -1, + 23, 71, 146, 72, 146, -1, 156, -1, 157, -1, + 53, 146, -1, 36, 8, 146, -1, 29, 137, 170, + 190, 68, -1, 29, 137, 68, -1, 22, 137, 171, + 190, 68, -1, 22, 137, 68, -1, 17, 159, 162, + -1, 141, 59, 179, 60, 163, -1, 59, 179, 60, + 141, 59, 179, 60, 163, -1, 200, 59, 195, 60, + 210, -1, 59, 215, 60, 141, 59, 195, 60, 210, + -1, 17, 59, 179, 60, 163, -1, -1, 67, 183, + 68, -1, -1, 151, -1, 59, 179, 60, -1, 161, + -1, 164, 137, 183, 68, -1, 164, 1, -1, -1, + 166, 90, 62, -1, 93, -1, 167, 62, 93, -1, + 95, -1, 168, 62, 95, -1, 97, -1, 169, 62, + 97, -1, 172, -1, 170, 62, 172, -1, 175, -1, + 171, 62, 175, -1, 184, 146, 198, -1, 174, 198, + -1, 59, 174, 60, 198, -1, 53, 174, 198, -1, + 59, 53, 174, 60, 198, -1, 53, 59, 174, 60, + 198, -1, 24, -1, 24, 63, 141, -1, 173, -1, + 138, 176, -1, 173, -1, 59, 173, 60, -1, 59, + 179, 60, 163, -1, 136, -1, 141, 136, -1, 141, + 145, -1, 145, -1, 177, -1, 178, 75, 177, -1, + -1, 178, 191, -1, -1, 100, -1, 91, -1, 181, + -1, 1, -1, 98, -1, 110, -1, 121, -1, 124, + -1, 113, -1, -1, 144, 66, 182, 180, -1, 15, + -1, 6, 140, -1, 10, 140, -1, 18, 128, -1, + 13, 128, -1, 19, 138, -1, 27, 193, -1, 180, + -1, 183, 62, 180, -1, 138, -1, 184, 75, 138, + -1, 139, -1, 185, 75, 139, -1, 126, -1, 186, + 75, 126, -1, 135, -1, 187, 75, 135, -1, 131, + -1, 132, -1, 188, 75, 131, -1, 188, 75, 132, + -1, -1, 188, 191, -1, -1, 62, -1, -1, 75, + -1, -1, 126, -1, -1, 186, -1, -1, 98, -1, + -1, 215, -1, -1, 216, -1, -1, 217, -1, -1, + 3, -1, 21, 24, 3, 62, -1, 32, 200, 202, + 62, -1, 9, 200, 65, 213, 62, -1, 9, 200, + 202, 65, 213, 62, -1, 31, 201, 202, 62, -1, + 17, 160, 162, 62, -1, 142, -1, 200, -1, 204, + -1, 205, -1, 206, -1, 204, -1, 206, -1, 142, + -1, 24, -1, 71, 72, 202, -1, 71, 3, 72, + 202, -1, 23, 71, 202, 72, 202, -1, 29, 67, + 196, 68, -1, 22, 67, 197, 68, -1, 53, 202, + -1, 8, 203, -1, 8, 59, 205, 60, -1, 8, + 36, 202, -1, 36, 8, 202, -1, 17, 59, 195, + 60, 210, -1, 141, 202, 198, -1, 141, 11, 202, + 198, -1, 141, 202, 198, -1, 141, 59, 195, 60, + 210, -1, 202, -1, -1, 211, -1, 59, 195, 60, + -1, 202, -1, 3, -1, 50, 3, -1, 141, -1, + 212, -1, 59, 212, 49, 212, 60, -1, -1, 214, + 199, -1, 207, -1, 215, 75, 207, -1, 208, -1, + 216, 62, 208, -1, 209, -1, 217, 62, 209, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -665,35 +665,35 @@ static const yytype_uint16 yyrline[] = 359, 363, 367, 373, 377, 383, 384, 388, 394, 403, 409, 427, 432, 444, 460, 465, 472, 492, 510, 519, 538, 537, 552, 551, 583, 586, 593, 592, 603, 609, - 618, 629, 635, 638, 646, 645, 656, 662, 674, 678, - 683, 673, 704, 703, 716, 719, 725, 728, 740, 744, - 739, 762, 761, 777, 778, 782, 786, 790, 794, 798, - 802, 806, 810, 814, 818, 822, 826, 830, 834, 838, - 842, 846, 850, 855, 861, 862, 866, 877, 881, 885, - 889, 894, 898, 908, 912, 917, 925, 929, 930, 941, - 945, 949, 953, 957, 965, 966, 972, 979, 985, 992, - 995, 1002, 1008, 1025, 1032, 1033, 1040, 1041, 1060, 1061, - 1064, 1067, 1071, 1082, 1091, 1097, 1100, 1103, 1110, 1111, - 1117, 1130, 1145, 1153, 1165, 1170, 1176, 1177, 1178, 1179, - 1180, 1181, 1187, 1188, 1189, 1190, 1196, 1197, 1198, 1199, - 1200, 1206, 1207, 1210, 1213, 1214, 1215, 1216, 1217, 1220, - 1221, 1234, 1238, 1243, 1248, 1253, 1257, 1258, 1261, 1267, - 1274, 1280, 1287, 1293, 1304, 1319, 1348, 1386, 1411, 1429, - 1438, 1441, 1449, 1453, 1457, 1464, 1470, 1475, 1487, 1490, - 1501, 1502, 1508, 1509, 1515, 1519, 1525, 1526, 1532, 1536, - 1542, 1565, 1570, 1576, 1582, 1589, 1598, 1607, 1622, 1628, - 1633, 1637, 1644, 1657, 1658, 1664, 1670, 1673, 1677, 1683, - 1686, 1695, 1698, 1699, 1703, 1704, 1710, 1711, 1712, 1713, - 1714, 1716, 1715, 1730, 1736, 1740, 1744, 1748, 1752, 1757, - 1776, 1782, 1790, 1794, 1800, 1804, 1810, 1814, 1820, 1824, - 1833, 1837, 1841, 1845, 1851, 1854, 1862, 1863, 1865, 1866, - 1869, 1872, 1875, 1878, 1881, 1884, 1887, 1890, 1893, 1896, - 1899, 1902, 1905, 1908, 1914, 1918, 1922, 1926, 1930, 1934, - 1954, 1961, 1972, 1973, 1974, 1977, 1978, 1981, 1985, 1995, - 1999, 2003, 2007, 2011, 2015, 2019, 2025, 2031, 2039, 2047, - 2053, 2060, 2076, 2098, 2102, 2108, 2111, 2114, 2118, 2128, - 2132, 2151, 2159, 2160, 2172, 2173, 2176, 2180, 2186, 2190, - 2196, 2200 + 616, 623, 634, 640, 643, 651, 650, 661, 667, 679, + 683, 688, 678, 709, 708, 721, 724, 730, 733, 745, + 749, 744, 767, 766, 782, 783, 787, 791, 795, 799, + 803, 807, 811, 815, 819, 823, 827, 831, 835, 839, + 843, 847, 851, 855, 860, 866, 867, 871, 882, 886, + 890, 894, 899, 903, 913, 917, 922, 930, 934, 935, + 946, 950, 954, 958, 962, 970, 971, 977, 984, 990, + 997, 1000, 1007, 1013, 1030, 1037, 1038, 1045, 1046, 1065, + 1066, 1069, 1072, 1076, 1087, 1096, 1102, 1105, 1108, 1115, + 1116, 1122, 1135, 1150, 1158, 1170, 1175, 1181, 1182, 1183, + 1184, 1185, 1186, 1192, 1193, 1194, 1195, 1201, 1202, 1203, + 1204, 1205, 1211, 1212, 1215, 1218, 1219, 1220, 1221, 1222, + 1225, 1226, 1239, 1243, 1248, 1253, 1258, 1262, 1263, 1266, + 1272, 1279, 1285, 1292, 1298, 1309, 1324, 1353, 1391, 1416, + 1434, 1443, 1446, 1454, 1458, 1462, 1469, 1475, 1480, 1492, + 1495, 1506, 1507, 1513, 1514, 1520, 1524, 1530, 1531, 1537, + 1541, 1547, 1570, 1575, 1581, 1587, 1594, 1603, 1612, 1627, + 1633, 1638, 1642, 1649, 1662, 1663, 1669, 1675, 1678, 1682, + 1688, 1691, 1700, 1703, 1704, 1708, 1709, 1715, 1716, 1717, + 1718, 1719, 1721, 1720, 1735, 1741, 1745, 1749, 1753, 1757, + 1762, 1781, 1787, 1795, 1799, 1805, 1809, 1815, 1819, 1825, + 1829, 1838, 1842, 1846, 1850, 1856, 1859, 1867, 1868, 1870, + 1871, 1874, 1877, 1880, 1883, 1886, 1889, 1892, 1895, 1898, + 1901, 1904, 1907, 1910, 1913, 1919, 1923, 1927, 1931, 1935, + 1939, 1959, 1966, 1977, 1978, 1979, 1982, 1983, 1986, 1990, + 2000, 2004, 2008, 2012, 2016, 2020, 2024, 2030, 2036, 2044, + 2052, 2058, 2065, 2081, 2103, 2107, 2113, 2116, 2119, 2123, + 2133, 2137, 2156, 2164, 2165, 2177, 2178, 2181, 2185, 2191, + 2195, 2201, 2205 }; #endif @@ -772,35 +772,35 @@ static const yytype_uint8 yyr1[] = 93, 93, 93, 94, 94, 95, 95, 95, 96, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 101, 100, 103, 102, 104, 104, 106, 105, 107, 107, - 108, 108, 108, 109, 111, 110, 112, 112, 114, 115, - 116, 113, 118, 117, 119, 119, 120, 120, 122, 123, - 121, 125, 124, 126, 126, 126, 126, 126, 126, 126, + 107, 108, 108, 108, 109, 111, 110, 112, 112, 114, + 115, 116, 113, 118, 117, 119, 119, 120, 120, 122, + 123, 121, 125, 124, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 128, 128, 128, 129, 129, 129, 129, + 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 130, 131, 132, 132, 133, 133, 134, 134, 135, 135, - 136, 137, 137, 138, 139, 140, 140, 141, 141, 141, - 142, 142, 143, 144, 145, 145, 146, 146, 146, 146, - 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, - 148, 149, 149, 150, 151, 151, 151, 151, 151, 152, - 152, 153, 153, 153, 153, 153, 153, 153, 154, 155, - 156, 156, 157, 157, 158, 159, 159, 160, 160, 161, - 162, 162, 163, 163, 163, 164, 165, 165, 166, 166, - 167, 167, 168, 168, 169, 169, 170, 170, 171, 171, - 172, 172, 172, 172, 172, 172, 173, 173, 174, 175, - 175, 175, 176, 177, 177, 177, 177, 178, 178, 179, - 179, 180, 180, 180, 180, 180, 181, 181, 181, 181, - 181, 182, 181, 181, 181, 181, 181, 181, 181, 181, - 183, 183, 184, 184, 185, 185, 186, 186, 187, 187, - 188, 188, 188, 188, 189, 189, 190, 190, 191, 191, - 192, 192, 193, 193, 194, 194, 195, 195, 196, 196, - 197, 197, 198, 198, 199, 199, 199, 199, 199, 199, - 200, 201, 202, 202, 202, 203, 203, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 205, 206, - 207, 207, 208, 209, 209, 210, 210, 211, 211, 212, - 212, 212, 213, 213, 214, 214, 215, 215, 216, 216, - 217, 217 + 129, 130, 131, 132, 132, 133, 133, 134, 134, 135, + 135, 136, 137, 137, 138, 139, 140, 140, 141, 141, + 141, 142, 142, 143, 144, 145, 145, 146, 146, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, + 148, 148, 149, 149, 150, 151, 151, 151, 151, 151, + 152, 152, 153, 153, 153, 153, 153, 153, 153, 154, + 155, 156, 156, 157, 157, 158, 159, 159, 160, 160, + 161, 162, 162, 163, 163, 163, 164, 165, 165, 166, + 166, 167, 167, 168, 168, 169, 169, 170, 170, 171, + 171, 172, 172, 172, 172, 172, 172, 173, 173, 174, + 175, 175, 175, 176, 177, 177, 177, 177, 178, 178, + 179, 179, 180, 180, 180, 180, 180, 181, 181, 181, + 181, 181, 182, 181, 181, 181, 181, 181, 181, 181, + 181, 183, 183, 184, 184, 185, 185, 186, 186, 187, + 187, 188, 188, 188, 188, 189, 189, 190, 190, 191, + 191, 192, 192, 193, 193, 194, 194, 195, 195, 196, + 196, 197, 197, 198, 198, 199, 199, 199, 199, 199, + 199, 200, 201, 202, 202, 202, 203, 203, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, + 206, 207, 207, 208, 209, 209, 210, 210, 211, 211, + 212, 212, 212, 213, 213, 214, 214, 215, 215, 216, + 216, 217, 217 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -813,35 +813,35 @@ static const yytype_uint8 yyr2[] = 2, 4, 3, 4, 3, 1, 2, 1, 1, 2, 1, 3, 3, 3, 2, 2, 3, 5, 5, 2, 0, 4, 0, 3, 0, 2, 0, 4, 4, 4, - 5, 1, 1, 2, 0, 3, 1, 3, 0, 0, - 0, 8, 0, 5, 0, 2, 0, 2, 0, 0, - 7, 0, 5, 1, 3, 3, 3, 3, 3, 3, + 2, 5, 1, 1, 2, 0, 3, 1, 3, 0, + 0, 0, 8, 0, 5, 0, 2, 0, 2, 0, + 0, 7, 0, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 5, 6, 1, 1, 3, 5, - 5, 4, 6, 8, 1, 5, 5, 5, 7, 1, - 0, 3, 1, 4, 1, 4, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, - 4, 4, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 4, 4, 2, 3, 5, 1, 1, 2, 3, - 5, 3, 5, 3, 3, 5, 8, 5, 8, 5, - 0, 3, 0, 1, 3, 1, 4, 2, 0, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 3, 2, 4, 3, 5, 5, 1, 3, 1, 2, - 1, 3, 4, 1, 2, 2, 1, 1, 3, 0, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 1, 2, 2, 2, 2, 2, 2, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 1, 3, 3, 0, 2, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 4, 4, 5, 6, 4, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 4, 5, 4, 4, 2, 2, 4, 3, 3, 5, - 3, 4, 3, 5, 1, 0, 1, 3, 1, 1, - 2, 1, 1, 5, 0, 2, 1, 3, 1, 3, - 1, 3 + 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 5, 6, 1, 1, 3, + 5, 5, 4, 6, 8, 1, 5, 5, 5, 7, + 1, 0, 3, 1, 4, 1, 4, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 4, 4, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 4, 4, 2, 3, 5, 1, 1, 2, + 3, 5, 3, 5, 3, 3, 5, 8, 5, 8, + 5, 0, 3, 0, 1, 3, 1, 4, 2, 0, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 3, 2, 4, 3, 5, 5, 1, 3, 1, + 2, 1, 3, 4, 1, 2, 2, 1, 1, 3, + 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, + 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 1, 3, 3, 0, 2, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 4, 4, 5, 6, 4, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 4, 5, 4, 4, 2, 2, 4, 3, 3, + 5, 3, 4, 3, 5, 1, 0, 1, 3, 1, + 1, 2, 1, 1, 5, 0, 2, 1, 3, 1, + 3, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -849,656 +849,642 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 5, 0, 3, 0, 1, 0, 7, 0, 22, 157, - 159, 0, 0, 158, 218, 20, 6, 344, 0, 4, + 5, 0, 3, 0, 1, 0, 7, 0, 22, 158, + 160, 0, 0, 159, 219, 20, 6, 345, 0, 4, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, - 9, 22, 0, 8, 28, 126, 155, 0, 39, 155, - 0, 263, 74, 0, 0, 0, 78, 0, 0, 292, - 91, 0, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 290, 0, 25, 0, 256, 257, - 260, 258, 259, 50, 93, 134, 146, 114, 163, 162, - 127, 0, 0, 0, 183, 196, 197, 26, 215, 0, - 139, 27, 0, 19, 0, 0, 0, 0, 0, 0, - 345, 160, 161, 11, 14, 286, 18, 22, 13, 17, - 156, 264, 153, 0, 0, 0, 0, 162, 189, 193, - 179, 177, 178, 176, 265, 134, 0, 294, 249, 0, - 210, 134, 268, 294, 151, 152, 0, 0, 276, 293, - 269, 0, 0, 294, 0, 0, 36, 48, 0, 29, - 274, 154, 0, 122, 117, 118, 121, 115, 116, 0, - 0, 148, 0, 149, 174, 172, 173, 119, 120, 0, - 291, 0, 219, 0, 32, 0, 0, 0, 0, 0, + 9, 22, 0, 8, 28, 127, 156, 0, 39, 156, + 0, 264, 75, 0, 0, 0, 79, 0, 0, 293, + 92, 0, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 291, 0, 25, 0, 257, 258, + 261, 259, 260, 50, 94, 135, 147, 115, 164, 163, + 128, 0, 0, 0, 184, 197, 198, 26, 216, 0, + 140, 27, 0, 19, 0, 0, 0, 0, 0, 0, + 346, 161, 162, 11, 14, 287, 18, 22, 13, 17, + 157, 265, 154, 0, 0, 0, 0, 163, 190, 194, + 180, 178, 179, 177, 266, 135, 0, 295, 250, 0, + 211, 135, 269, 295, 152, 153, 0, 0, 277, 294, + 270, 0, 0, 295, 0, 0, 36, 48, 0, 29, + 275, 155, 0, 123, 118, 119, 122, 116, 117, 0, + 0, 149, 0, 150, 175, 173, 174, 120, 121, 0, + 292, 0, 220, 0, 32, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, - 0, 0, 290, 261, 0, 140, 217, 0, 0, 0, - 0, 310, 0, 0, 210, 0, 0, 311, 0, 0, - 23, 287, 0, 12, 249, 0, 0, 194, 170, 168, - 169, 166, 167, 198, 0, 0, 295, 72, 0, 75, - 0, 71, 164, 243, 162, 246, 150, 247, 288, 0, - 249, 0, 204, 79, 76, 157, 0, 203, 0, 286, - 240, 228, 0, 64, 0, 0, 201, 272, 286, 226, - 238, 302, 0, 89, 38, 224, 286, 49, 31, 220, - 286, 0, 0, 40, 0, 175, 147, 0, 0, 35, - 286, 0, 0, 51, 95, 110, 113, 96, 100, 101, - 99, 111, 98, 97, 94, 112, 102, 103, 104, 105, - 106, 107, 108, 109, 284, 123, 278, 288, 0, 128, - 291, 0, 0, 288, 284, 255, 60, 253, 252, 270, - 254, 0, 53, 52, 277, 0, 0, 0, 0, 318, - 0, 0, 0, 0, 0, 317, 0, 312, 313, 314, - 0, 346, 0, 0, 296, 0, 0, 0, 15, 10, - 0, 0, 0, 180, 190, 66, 73, 0, 0, 294, - 165, 244, 245, 289, 250, 212, 0, 0, 0, 294, - 0, 236, 0, 249, 239, 287, 0, 0, 0, 0, - 302, 0, 0, 287, 0, 303, 231, 0, 302, 0, - 287, 0, 287, 0, 42, 275, 0, 0, 0, 199, - 170, 168, 169, 167, 140, 192, 191, 287, 0, 44, - 0, 140, 142, 280, 281, 288, 0, 288, 289, 0, - 0, 0, 131, 290, 262, 289, 0, 0, 0, 0, - 216, 0, 0, 325, 315, 316, 296, 300, 0, 298, - 0, 324, 339, 0, 0, 341, 342, 0, 0, 0, - 0, 0, 302, 0, 0, 309, 0, 297, 304, 308, - 305, 212, 171, 0, 0, 0, 0, 248, 249, 162, - 213, 188, 186, 187, 184, 185, 209, 212, 211, 80, - 77, 237, 241, 0, 229, 202, 195, 0, 0, 92, - 62, 65, 0, 233, 0, 302, 227, 200, 273, 230, - 64, 225, 37, 221, 30, 41, 0, 284, 45, 222, - 286, 47, 33, 43, 284, 0, 289, 285, 137, 0, - 279, 124, 130, 129, 0, 135, 136, 0, 271, 327, - 0, 0, 318, 0, 317, 0, 334, 350, 301, 0, - 0, 0, 348, 299, 328, 340, 0, 306, 0, 319, - 0, 302, 330, 0, 347, 335, 0, 69, 68, 294, - 0, 249, 205, 84, 212, 0, 59, 0, 302, 302, - 232, 0, 171, 0, 287, 0, 46, 0, 140, 144, - 141, 282, 283, 125, 290, 132, 61, 326, 335, 296, - 323, 0, 0, 302, 322, 0, 0, 320, 307, 331, - 296, 296, 338, 207, 336, 67, 70, 214, 0, 86, - 242, 0, 0, 56, 0, 63, 235, 234, 90, 138, - 223, 34, 143, 284, 0, 329, 0, 351, 321, 332, - 349, 0, 0, 0, 212, 0, 85, 81, 0, 0, - 0, 133, 335, 343, 335, 337, 206, 82, 87, 58, - 57, 145, 333, 208, 294, 0, 83 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, + 0, 0, 291, 262, 0, 141, 218, 0, 0, 0, + 0, 311, 0, 0, 211, 0, 0, 312, 0, 0, + 23, 288, 0, 12, 250, 0, 0, 195, 171, 169, + 170, 167, 168, 199, 0, 0, 0, 296, 73, 0, + 76, 0, 72, 165, 244, 163, 247, 151, 248, 289, + 0, 250, 0, 205, 80, 77, 158, 0, 204, 0, + 287, 241, 229, 0, 64, 0, 0, 202, 273, 287, + 227, 239, 303, 0, 90, 38, 225, 287, 49, 31, + 221, 287, 0, 0, 40, 0, 176, 148, 0, 0, + 35, 287, 0, 0, 51, 96, 111, 114, 97, 101, + 102, 100, 112, 99, 98, 95, 113, 103, 104, 105, + 106, 107, 108, 109, 110, 285, 124, 279, 289, 0, + 129, 292, 0, 0, 289, 285, 256, 60, 254, 253, + 271, 255, 0, 53, 52, 278, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 318, 0, 313, 314, + 315, 0, 347, 0, 0, 297, 0, 0, 0, 15, + 10, 0, 0, 0, 181, 191, 70, 66, 74, 0, + 0, 295, 166, 245, 246, 290, 251, 213, 0, 0, + 0, 295, 0, 237, 0, 250, 240, 288, 0, 0, + 0, 0, 303, 0, 0, 288, 0, 304, 232, 0, + 303, 0, 288, 0, 288, 0, 42, 276, 0, 0, + 0, 200, 171, 169, 170, 168, 141, 193, 192, 288, + 0, 44, 0, 141, 143, 281, 282, 289, 0, 289, + 290, 0, 0, 0, 132, 291, 263, 290, 0, 0, + 0, 0, 217, 0, 0, 326, 316, 317, 297, 301, + 0, 299, 0, 325, 340, 0, 0, 342, 343, 0, + 0, 0, 0, 0, 303, 0, 0, 310, 0, 298, + 305, 309, 306, 213, 172, 0, 0, 0, 0, 249, + 250, 163, 214, 189, 187, 188, 185, 186, 210, 213, + 212, 81, 78, 238, 242, 0, 230, 203, 196, 0, + 0, 93, 62, 65, 0, 234, 0, 303, 228, 201, + 274, 231, 64, 226, 37, 222, 30, 41, 0, 285, + 45, 223, 287, 47, 33, 43, 285, 0, 290, 286, + 138, 0, 280, 125, 131, 130, 0, 136, 137, 0, + 272, 328, 0, 0, 319, 0, 318, 0, 335, 351, + 302, 0, 0, 0, 349, 300, 329, 341, 0, 307, + 0, 320, 0, 303, 331, 0, 348, 336, 0, 69, + 68, 295, 0, 250, 206, 85, 213, 0, 59, 0, + 303, 303, 233, 0, 172, 0, 288, 0, 46, 0, + 141, 145, 142, 283, 284, 126, 291, 133, 61, 327, + 336, 297, 324, 0, 0, 303, 323, 0, 0, 321, + 308, 332, 297, 297, 339, 208, 337, 67, 71, 215, + 0, 87, 243, 0, 0, 56, 0, 63, 236, 235, + 91, 139, 224, 34, 144, 285, 0, 330, 0, 352, + 322, 333, 350, 0, 0, 0, 213, 0, 86, 82, + 0, 0, 0, 134, 336, 344, 336, 338, 207, 83, + 88, 58, 57, 146, 334, 209, 295, 0, 84 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 6, 2, 3, 14, 21, 30, 105, 31, - 8, 24, 16, 17, 65, 327, 67, 149, 518, 519, - 145, 146, 68, 500, 328, 438, 501, 577, 388, 366, - 473, 237, 238, 239, 69, 127, 253, 70, 133, 378, - 573, 646, 664, 619, 647, 71, 143, 399, 72, 141, - 73, 74, 75, 76, 314, 423, 424, 590, 77, 316, - 243, 136, 78, 150, 111, 117, 13, 80, 81, 245, - 246, 163, 119, 82, 83, 480, 228, 84, 230, 231, - 85, 86, 87, 130, 214, 88, 252, 486, 89, 90, - 22, 280, 520, 276, 268, 259, 269, 270, 271, 261, - 384, 247, 248, 249, 329, 330, 322, 331, 272, 152, - 92, 317, 425, 426, 222, 374, 171, 140, 254, 466, - 551, 545, 396, 100, 212, 218, 612, 443, 347, 348, - 349, 351, 552, 547, 613, 614, 456, 457, 25, 467, - 553, 548 + 8, 24, 16, 17, 65, 328, 67, 149, 520, 521, + 145, 146, 68, 502, 329, 440, 503, 579, 390, 368, + 475, 238, 239, 240, 69, 127, 254, 70, 133, 380, + 575, 648, 666, 621, 649, 71, 143, 401, 72, 141, + 73, 74, 75, 76, 315, 425, 426, 592, 77, 317, + 244, 136, 78, 150, 111, 117, 13, 80, 81, 246, + 247, 163, 119, 82, 83, 482, 228, 84, 230, 231, + 85, 86, 87, 130, 214, 88, 253, 488, 89, 90, + 22, 281, 522, 277, 269, 260, 270, 271, 272, 262, + 386, 248, 249, 250, 330, 331, 323, 332, 273, 152, + 92, 318, 427, 428, 222, 376, 171, 140, 255, 468, + 553, 547, 398, 100, 212, 218, 614, 445, 348, 349, + 350, 352, 554, 549, 615, 616, 458, 459, 25, 469, + 555, 550 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -474 +#define YYPACT_NINF -473 static const yytype_int16 yypact[] = { - -474, 48, 28, 35, -474, 258, -474, 37, -474, -474, - -474, 61, 12, -474, 85, 107, -474, -474, 70, -474, - 156, 82, 1059, -474, 122, 328, 22, -474, 56, 199, - -474, 35, 211, -474, -474, -474, 258, 767, -474, 258, - 459, -474, -474, 152, 459, 258, -474, 23, 145, 1650, - -474, 23, -474, 294, 359, 1650, 1650, 1650, 1650, 1650, - 1650, 1693, 1650, 1650, 1289, 159, -474, 412, -474, -474, - -474, -474, -474, 939, -474, -474, 157, 302, -474, 168, - -474, 175, 184, 23, 204, -474, -474, -474, 219, 54, - -474, -474, 47, -474, 227, -12, 269, 227, 227, 239, - -474, -474, -474, -474, -474, 240, -474, -474, -474, -474, - -474, -474, -474, 250, 1813, 1813, 1813, -474, 259, -474, - -474, -474, -474, -474, -474, 64, 302, 1650, 1805, 262, - 260, 174, -474, 1650, -474, -474, 221, 1813, 2166, 255, - -474, 290, 237, 1650, 304, 1813, -474, -474, 420, -474, - -474, -474, 580, -474, -474, -474, -474, -474, -474, 1736, - 1693, 2166, 280, -474, 253, -474, 50, -474, -474, 275, - 2166, 285, -474, 430, -474, 612, 1650, 1650, 1650, 1650, - -474, 1650, 1650, 1650, -474, 1650, 1650, 1650, 1650, 1650, - 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, -474, - 1332, 428, 1650, -474, 1650, -474, -474, 1234, 1650, 1650, - 1650, -474, 763, 258, 260, 293, 369, -474, 1992, 1992, - -474, 51, 326, -474, 1805, 392, 1813, -474, -474, -474, - -474, -474, -474, -474, 341, 258, -474, -474, 371, -474, - 89, 342, 1813, -474, 1805, -474, -474, -474, 335, 360, - 1805, 1234, -474, -474, 357, 99, 399, -474, 365, 380, - -474, -474, 377, -474, 173, 151, -474, -474, 381, -474, - -474, 456, 1779, -474, -474, -474, 401, -474, -474, -474, - 404, 1650, 258, 366, 1838, -474, 405, 1813, 1813, -474, - 407, 1650, 410, 2166, 650, -474, 2190, 877, 877, 877, - 877, -474, 877, 877, 2214, -474, 461, 461, 461, 461, - -474, -474, -474, -474, 1387, -474, -474, 52, 1442, -474, - 2064, 411, 1160, 2031, 1387, -474, -474, -474, -474, -474, - -474, 19, 255, 255, 2166, 1905, 447, 441, 439, -474, - 444, 505, 1992, 225, 27, -474, 454, -474, -474, -474, - 1931, -474, 125, 458, 258, 460, 465, 466, -474, -474, - 463, 1813, 480, -474, -474, -474, -474, 1497, 1552, 1650, - -474, -474, -474, 1805, -474, 1872, 484, 24, 371, 1650, - 258, 485, 487, 1805, -474, 472, 481, 1813, 81, 399, - 456, 399, 490, 289, 483, -474, -474, 258, 456, 519, - 258, 495, 258, 496, 255, -474, 1650, 1897, 1813, -474, - 321, 349, 350, 354, -474, -474, -474, 258, 497, 255, - 1650, -474, 2094, -474, -474, 488, 491, 489, 1693, 498, - 500, 502, -474, 1650, -474, -474, 506, 503, 1234, 1160, - -474, 1992, 534, -474, -474, -474, 258, 1958, 1992, 258, - 1992, -474, -474, 565, 149, -474, -474, 510, 504, 1992, - 225, 1992, 456, 258, 258, -474, 514, 507, -474, -474, - -474, 1872, -474, 1234, 1650, 1650, 515, -474, 1805, 520, - -474, -474, -474, -474, -474, -474, -474, 1872, -474, -474, - -474, -474, -474, 518, -474, -474, -474, 1693, 517, -474, - -474, -474, 524, -474, 525, 456, -474, -474, -474, -474, - -474, -474, -474, -474, -474, 255, 526, 1387, -474, -474, - 527, 612, -474, 255, 1387, 1595, 1387, -474, -474, 530, - -474, -474, -474, -474, 116, -474, -474, 141, -474, -474, - 539, 540, 521, 542, 546, 538, -474, -474, 548, 543, - 1992, 549, -474, 552, -474, -474, 562, -474, 1992, -474, - 556, 456, -474, 560, -474, 1984, 238, 2166, 2166, 1650, - 561, 1805, -474, -474, 1872, 32, -474, 1160, 456, 456, - -474, 186, 370, 554, 258, 563, 410, 557, -474, 2166, - -474, -474, -474, -474, 1650, -474, -474, -474, 1984, 258, - -474, 1958, 1992, 456, -474, 258, 149, -474, -474, -474, - 258, 258, -474, -474, -474, -474, -474, -474, 564, 613, - -474, 1650, 1650, -474, 1693, 566, -474, -474, -474, -474, - -474, -474, -474, 1387, 558, -474, 571, -474, -474, -474, - -474, 577, 582, 583, 1872, 36, -474, -474, 2118, 2142, - 572, -474, 1984, -474, 1984, -474, -474, -474, -474, -474, - -474, -474, -474, -474, 1650, 371, -474 + -473, 65, 22, 49, -473, 261, -473, 64, -473, -473, + -473, 95, 52, -473, 143, 145, -473, -473, 104, -473, + 68, 128, 1049, -473, 142, 305, 16, -473, 56, 204, + -473, 49, 220, -473, -473, -473, 261, 974, -473, 261, + 562, -473, -473, 288, 562, 261, -473, 14, 147, 1615, + -473, 14, -473, 395, 401, 1615, 1615, 1615, 1615, 1615, + 1615, 1658, 1615, 1615, 737, 168, -473, 414, -473, -473, + -473, -473, -473, 649, -473, -473, 165, 122, -473, 169, + -473, 177, 218, 14, 219, -473, -473, -473, 235, 89, + -473, -473, 34, -473, 206, 124, 286, 206, 206, 260, + -473, -473, -473, -473, -473, 265, -473, -473, -473, -473, + -473, -473, -473, 270, 1803, 1803, 1803, -473, 269, -473, + -473, -473, -473, -473, -473, 39, 122, 882, 1777, 283, + 277, 230, -473, 1615, -473, -473, 292, 1803, 2097, 280, + -473, 332, 315, 1615, 215, 1803, -473, -473, 244, -473, + -473, -473, 949, -473, -473, -473, -473, -473, -473, 1701, + 1658, 2097, 298, -473, 9, -473, 59, -473, -473, 303, + 2097, 319, -473, 330, -473, 1744, 1615, 1615, 1615, 1615, + -473, 1615, 1615, 1615, -473, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, -473, + 1297, 455, 1615, -473, 1615, -473, -473, 1225, 1615, 1615, + 1615, -473, 594, 261, 277, 328, 403, -473, 1308, 1308, + -473, 152, 352, -473, 1777, 405, 1803, -473, -473, -473, + -473, -473, -473, -473, 354, 261, 1615, -473, -473, 382, + -473, 47, 360, 1803, -473, 1777, -473, -473, -473, 351, + 367, 1777, 1225, -473, -473, 366, 84, 407, -473, 374, + 373, -473, -473, 372, -473, 138, 42, -473, -473, 377, + -473, -473, 442, 1769, -473, -473, -473, 384, -473, -473, + -473, 389, 1615, 261, 391, 1830, -473, 394, 1803, 1803, + -473, 409, 1615, 411, 2097, 1935, -473, 2121, 1080, 1080, + 1080, 1080, -473, 1080, 1080, 2145, -473, 503, 503, 503, + 503, -473, -473, -473, -473, 1352, -473, -473, 27, 1407, + -473, 1995, 412, 1147, 1962, 1352, -473, -473, -473, -473, + -473, -473, 7, 280, 280, 2097, 698, 418, 415, 413, + -473, 416, 477, 1308, 188, 31, -473, 425, -473, -473, + -473, 1897, -473, 221, 433, 261, 434, 436, 439, -473, + -473, 432, 1803, 452, -473, -473, 2097, -473, -473, 1462, + 1517, 1615, -473, -473, -473, 1777, -473, 1856, 453, 91, + 382, 1615, 261, 454, 456, 1777, -473, 475, 451, 1803, + 133, 407, 442, 407, 460, 326, 462, -473, -473, 261, + 442, 467, 261, 478, 261, 486, 280, -473, 1615, 1864, + 1803, -473, 26, 248, 264, 430, -473, -473, -473, 261, + 492, 280, 1615, -473, 2025, -473, -473, 485, 493, 487, + 1658, 504, 506, 508, -473, 1615, -473, -473, 512, 505, + 1225, 1147, -473, 1308, 517, -473, -473, -473, 261, 1889, + 1308, 261, 1308, -473, -473, 571, 155, -473, -473, 514, + 509, 1308, 188, 1308, 442, 261, 261, -473, 518, 507, + -473, -473, -473, 1856, -473, 1225, 1615, 1615, 521, -473, + 1777, 528, -473, -473, -473, -473, -473, -473, -473, 1856, + -473, -473, -473, -473, -473, 520, -473, -473, -473, 1658, + 522, -473, -473, -473, 530, -473, 532, 442, -473, -473, + -473, -473, -473, -473, -473, -473, -473, 280, 535, 1352, + -473, -473, 536, 1744, -473, 280, 1352, 1560, 1352, -473, + -473, 539, -473, -473, -473, -473, 247, -473, -473, 308, + -473, -473, 541, 543, 545, 546, 547, 544, -473, -473, + 551, 548, 1308, 554, -473, 557, -473, -473, 576, -473, + 1308, -473, 564, 442, -473, 568, -473, 1923, 318, 2097, + 2097, 1615, 569, 1777, -473, -473, 1856, 156, -473, 1147, + 442, 442, -473, 243, 483, 563, 261, 577, 411, 570, + -473, 2097, -473, -473, -473, -473, 1615, -473, -473, -473, + 1923, 261, -473, 1889, 1308, 442, -473, 261, 155, -473, + -473, -473, 261, 261, -473, -473, -473, -473, -473, -473, + 579, 627, -473, 1615, 1615, -473, 1658, 580, -473, -473, + -473, -473, -473, -473, -473, 1352, 572, -473, 583, -473, + -473, -473, -473, 585, 586, 590, 1856, 77, -473, -473, + 2049, 2073, 584, -473, 1923, -473, 1923, -473, -473, -473, + -473, -473, -473, -473, -473, -473, 1615, 382, -473 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -474, -474, -474, -474, -474, -474, -474, -15, -474, -474, - 616, -474, -3, -474, -474, 622, -474, -125, -27, 66, - -474, -124, -112, -474, 11, -474, -474, -474, 147, -368, - -474, -474, -474, -474, -474, -474, -140, -474, -474, -474, - -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, - 532, 10, 247, -474, -194, 132, 135, -474, 279, -59, - 418, 67, 5, 384, 624, 425, 317, 20, -474, 424, - 636, 509, -474, -474, -474, -474, -36, -37, -31, -49, - -474, -474, -474, -474, -474, -32, 464, -473, -474, -474, - -474, -474, -474, -474, -474, -474, 277, -119, -231, 287, - -474, 300, -474, -205, -300, 652, -474, -242, -474, -63, - 106, 182, -474, -316, -241, -285, -195, -474, -111, -420, - -474, -474, -245, -474, 402, -474, -176, -474, 345, 249, - 346, 218, 87, 96, -415, -474, -429, 252, -474, 522, - -474, -474 + -473, -473, -473, -473, -473, -473, -473, -12, -473, -473, + 624, -473, -1, -473, -473, 635, -473, -137, -48, 74, + -473, -130, -112, -473, 11, -473, -473, -473, 149, -372, + -473, -473, -473, -473, -473, -473, -140, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + 662, 448, 257, -473, -196, 135, 139, -473, 262, -59, + 424, -16, -3, 387, 632, 427, 313, 20, -473, 428, + -89, 524, -473, -473, -473, -473, -36, -37, -31, -49, + -473, -473, -473, -473, -473, -32, 458, -472, -473, -473, + -473, -473, -473, -473, -473, -473, 279, -108, -211, 290, + -473, 306, -473, -214, -291, 658, -473, -230, -473, -63, + -6, 191, -473, -302, -219, -254, -195, -473, -107, -435, + -473, -473, -347, -473, 323, -473, 72, -473, 371, 268, + 380, 242, 102, 110, -468, -473, -438, 255, -473, 515, + -473, -473 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -277 +#define YYTABLE_NINF -278 static const yytype_int16 yytable[] = { - 121, 120, 162, 273, 175, 123, 122, 321, 437, 377, - 489, 324, 165, 104, 572, 236, 241, 260, 386, 360, - 275, 236, 434, 279, 164, 556, 541, 394, 108, 166, - 458, 236, 429, 390, 392, 401, 346, 621, 436, 403, - 174, 110, 356, 357, 110, 376, 101, 213, 4, 418, - 132, -215, 208, 5, 27, 206, 657, 118, 134, 27, - 7, 15, 11, 427, 18, 153, 154, 155, 156, 157, - 158, -267, 167, 168, 19, 9, -267, 229, 229, 229, - 9, 439, 232, 232, 232, -215, 439, 440, 497, 134, - 135, 229, 488, 498, 367, 102, 232, 622, 623, 459, - 229, 620, -236, 326, 223, 232, 20, 624, 229, -181, - 175, 165, 209, 232, 29, 229, 103, -215, 142, 29, - 232, 135, 210, 164, 10, 11, -267, 428, 166, 10, - 11, 23, -267, 26, 118, 118, 118, 382, 229, 538, - 527, 258, 529, 232, 33, 503, 290, 267, 118, 499, - 205, 165, 452, 509, 368, 139, 207, 118, 502, 27, - 504, -236, 380, 164, 210, 118, 451, -236, 166, 153, - 157, 656, 118, 9, 462, 381, 9, 641, 493, 636, - 9, -266, 594, 635, 93, 463, -266, 229, 595, 229, - 642, 643, 232, 497, 232, 118, 537, 381, 498, 453, - 464, 583, 106, 439, 391, 229, 358, 229, 587, 596, - 232, 128, 232, 229, 109, 28, 137, 562, 232, 29, - 517, 172, 10, 11, 199, 10, 11, 524, 452, 10, - 11, 566, 389, 240, -153, 229, -266, 662, 534, 663, - 232, 203, -266, 204, 118, 255, 118, 411, 410, 9, - 229, 229, 413, 412, 628, 232, 232, 236, 476, 431, - 580, 255, 118, -182, 118, 539, 260, 236, 490, 165, - 118, 546, 549, 570, 554, 453, 511, 513, -181, 585, - 256, 164, 9, 559, 454, 561, 166, 125, -183, 257, - 264, 131, 118, 216, 10, 11, 265, 666, 10, 11, - 439, 11, 221, 220, 118, 266, 615, 118, 118, 224, - 10, 11, -182, 255, 332, 333, 609, 650, 9, 126, - -183, 250, 235, 126, 229, 263, 484, 251, 9, 232, - 210, 10, 11, 626, 627, 625, 229, 94, 482, 481, - 286, 232, 264, 485, 483, 95, 229, 287, 265, 96, - 229, 232, 354, 144, 521, 232, -179, 288, 639, 97, - 98, 200, 10, 11, 274, 201, 618, 10, 11, 530, - 229, 229, 355, 202, 603, 232, 232, 10, 11, 165, - -179, 118, 607, 9, -177, -178, 359, 404, -179, -176, - 258, 164, 99, 118, 633, 118, 166, 419, 267, 634, - 361, 363, 508, 118, 369, -180, 365, 118, -177, -178, - 373, 211, 211, -176, 211, 211, -177, -178, 148, 379, - 375, -176, 484, 381, 383, 546, 638, 118, 118, -180, - 12, 406, 10, 11, 482, 481, 9, -180, 484, 485, - 483, 229, 385, 393, 9, 32, 232, 79, 165, 387, - 482, 481, 9, 32, 9, 485, 483, 236, 616, 395, - 164, 112, 35, 400, 112, 166, 402, 37, 129, 417, - 112, 173, 414, 332, 333, 420, 113, 433, 147, 151, - 278, 47, 48, 9, 229, 10, 11, 318, 51, 232, - 289, 118, 151, 10, 11, 178, 255, 215, 118, 217, - 219, 10, 11, 10, 11, 186, 446, 118, 447, 190, - 448, 449, 515, 450, 195, 196, 197, 198, 61, 460, - 465, 521, 468, 471, 665, 484, 523, 469, 470, 345, - 64, 256, 10, 11, 229, 345, 345, 482, 481, 232, - 472, 118, 485, 483, 487, 10, 11, 492, 380, 495, - 505, 507, 236, 244, 510, 512, 514, 522, 531, 528, - 532, 112, 533, 526, 435, 530, 535, 112, 555, 147, - 341, 536, 557, 151, 565, 165, 558, 569, 574, 571, - -157, 138, 464, 576, 578, 579, 582, 164, 37, 584, - 593, 118, 166, 161, 118, 484, 170, 113, 151, 597, - 598, 599, 47, 48, 9, -158, 600, 482, 481, 51, - 601, 606, 485, 483, 605, 602, 225, 604, 608, 610, - 37, 617, 629, 631, 644, 632, 319, 645, 439, 113, - 651, 652, 79, 115, 47, 48, 9, 653, 350, 226, - 661, 51, 654, 655, 66, 281, 32, 107, 225, 244, - 630, 64, 345, 10, 11, 282, 658, 581, 591, 345, - 364, 592, 371, 124, 118, 115, 405, 345, 372, 285, - 506, 226, 494, 477, 91, 244, 79, 291, 353, 575, - 444, 445, 564, 64, 178, 10, 11, 282, 181, 182, - 183, 540, 640, 185, 186, 187, 188, 637, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 151, 293, 294, - 295, 296, 560, 297, 298, 299, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 161, 0, 320, 352, 323, 0, 0, 0, - 138, 138, 334, 0, 0, 0, 0, 79, 0, 0, - 227, 233, 234, 0, 0, 0, 0, 0, 345, 0, - 0, 0, 0, 0, 544, 345, 0, 345, 455, 0, - 0, 335, 0, 262, 0, 37, 345, 0, 345, 350, - 336, 277, 0, 0, 113, 337, 338, 339, 283, 47, - 48, 9, 340, 0, 0, 0, 51, 0, 244, 341, - 479, 0, 0, 114, 0, 491, 0, 0, 244, 0, - 112, 292, 0, 138, 0, 0, 342, 0, 112, 0, - 115, 0, 112, 138, 0, 147, 116, 151, 343, 0, - 0, 0, 0, 0, 344, 0, 0, 11, 64, 0, - 10, 11, 151, 0, 0, 0, 422, 0, 0, 0, - 161, 0, 0, 0, 0, 0, 422, 0, 0, 0, - 0, 0, 362, 79, 79, 0, 0, 345, 0, 0, - 0, 350, 543, 0, 550, 345, 0, 0, 370, 455, - 0, 0, 345, 0, 0, 455, 0, 0, 563, 350, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 138, - 138, 0, 0, 244, 0, 0, 0, 0, 398, 0, - 0, 178, 0, 0, 0, 345, 0, 0, 544, 345, - 409, 186, 0, 415, 416, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 0, 0, 0, 0, 138, 0, - 0, 0, 0, 176, -276, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, - 161, 0, 0, 0, 0, 170, 0, 0, 0, 345, - 0, 345, 177, 178, 0, 179, 180, 181, 182, 183, - 0, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 244, 409, 0, 0, - 0, 0, 79, 0, -276, 0, 567, 568, 0, 151, - 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, - 0, 0, 0, 496, 350, 0, 543, 0, 0, 161, - 550, 455, 0, 0, 0, 350, 350, 0, 0, 0, - 0, 0, 0, 227, 516, 0, 0, 0, 0, 422, - 0, 0, 0, 0, 0, 0, 422, 589, 422, -2, + 121, 120, 162, 274, 175, 123, 122, 322, 491, 325, + 361, 280, 165, 543, 276, 237, 104, 574, 558, 174, + 242, 237, 379, 439, 164, 227, 233, 234, 261, 166, + 108, 237, 436, 110, 460, 142, 110, 378, 429, 208, + 101, 388, 132, 139, -184, 505, -268, 5, 263, 134, + 396, -268, 369, 511, 392, 394, 278, 118, 403, 27, + -216, -180, 405, 284, 431, 4, 383, 205, -183, 441, + 438, 27, 420, 207, 7, 442, -184, 229, 229, 229, + 9, 135, 232, 232, 232, -180, 293, -237, 15, 102, + 206, 229, 9, -180, -216, 393, 232, 659, 18, 209, + 229, -268, 430, 461, 622, 232, 223, -268, 229, 210, + 175, 165, 370, 232, 19, 229, 103, 564, -182, 29, + 232, 241, 210, 164, 134, 291, -216, 28, 166, 10, + 11, 29, 637, 259, 118, 118, 118, 363, 229, 268, + 499, 10, 11, 232, 327, 500, -237, 382, 118, 384, + 540, 165, -237, 441, 372, 27, 135, 118, 454, 490, + 582, 623, 383, 164, 20, 118, 638, 26, 166, 23, + 643, 495, 118, 529, 658, 531, 9, 644, 645, 9, + 504, 200, 506, 213, 400, 201, 664, 229, 665, 229, + 33, 454, 232, 202, 232, 118, 411, 391, 11, 417, + 418, 501, 333, 334, 93, 455, 229, 106, 229, 359, + 539, 232, 9, 232, 229, 29, 611, 585, 137, 232, + 519, 624, 625, 109, 589, 10, 11, 526, 10, 11, + 172, 626, 199, 628, 629, -154, 229, -267, 455, 9, + 536, 232, -267, 203, 118, 568, 118, 456, 413, 412, + 499, 229, 229, 415, 414, 500, 232, 232, 641, 237, + 433, 10, 11, 118, 478, 118, 572, 515, 9, 237, + 165, 118, 513, 411, 492, 275, 406, 204, -183, 261, + 11, 465, 164, -178, 347, 9, 421, 166, 10, 11, + 357, 358, -267, 118, -182, 668, 466, 125, -267, -179, + 498, 131, 126, 587, 279, 118, 126, -178, 118, 118, + 216, 630, 9, 596, 94, -178, 256, 10, 11, 597, + 227, 518, 95, -179, 220, 229, 96, 221, 486, 224, + 232, -179, 235, 652, 10, 11, 97, 98, 229, 256, + 484, 483, 251, 232, 252, 487, 485, 128, 229, 627, + 256, 257, 229, 232, 9, 210, 523, 232, 287, 620, + 258, 10, 11, 333, 334, 10, 11, 264, 265, 99, + 441, 532, 229, 229, 266, 288, 598, 232, 232, 265, + 441, 165, 118, 267, 259, 266, 617, 355, 10, 11, + 290, 289, 268, 164, 635, 118, 510, 118, 166, 10, + 11, 636, 517, 10, 11, 118, 356, 211, 211, 118, + 211, 211, 360, 362, 364, 453, 525, 367, 215, 9, + 217, 219, 371, 464, 486, 9, 375, 377, 381, 118, + 118, 383, 12, 385, 588, 387, 484, 483, 9, 395, + 486, 487, 485, 229, 389, 397, 402, 32, 232, 79, + 165, 404, 484, 483, 144, 32, 408, 487, 485, 237, + 148, 416, 164, 112, 618, -177, 112, 166, 10, 11, + 129, 419, 112, 173, 10, 11, 422, 448, 435, 9, + 147, 151, 449, 451, 450, 452, 229, 10, 11, -177, + 462, 232, 473, 118, 151, 467, 470, -177, 471, 256, + 118, 472, 512, 153, 154, 155, 156, 157, 158, 118, + 167, 168, 474, 489, 319, 541, 494, 382, -181, 497, + 507, 548, 551, 523, 556, 346, 667, 486, 10, 11, + 509, 346, 346, 561, 257, 563, 229, 178, 514, 484, + 483, 232, -181, 118, 487, 485, 516, 186, 10, 11, + -181, 190, 524, 342, 237, 245, 195, 196, 197, 198, + 528, 530, 437, 112, 533, 35, 534, 532, 535, 112, + 37, 147, 537, 538, 557, 151, 559, 165, 567, 113, + 576, 560, 466, 571, 47, 48, 9, 573, 578, 164, + 580, 51, 581, 118, 166, 584, 118, 486, 586, 595, + 151, 599, 336, 600, -158, 601, -159, 153, 157, 484, + 483, 337, 602, 603, 487, 485, 338, 339, 340, 607, + 604, 61, 606, 341, 605, 608, 610, 612, 320, 619, + 342, 631, 609, 64, 79, 10, 11, 633, 634, 646, + 351, 647, 441, 654, 653, 655, 656, 343, 32, 346, + 657, 245, 663, 176, -277, 107, 346, 66, 660, 344, + 632, 583, 365, 593, 346, 345, 118, 594, 11, 373, + 407, 124, 354, 374, 508, 548, 640, 496, 245, 79, + 91, 479, 177, 178, 286, 179, 180, 181, 182, 183, + 577, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 336, 446, 566, 642, + 151, 138, 542, 639, -277, 337, 447, 562, 0, 0, + 338, 339, 340, 161, -277, 0, 170, 341, 353, 0, + 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 37, 0, 0, 169, 0, + 79, 343, 0, 0, 113, 0, 346, 444, 0, 47, + 48, 9, 546, 346, 0, 346, 51, 0, 0, 345, + 0, 457, 11, 55, 346, 0, 346, 0, 0, 0, + 0, 0, 351, 0, 0, 0, 56, 57, 0, 58, + 59, 0, 0, 60, 0, 0, 61, 0, 0, 0, + 0, 0, 245, 0, 481, 0, 62, 63, 64, 493, + 10, 11, 245, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 112, 0, 0, 0, 112, 0, 0, 147, + 0, 151, 0, 0, 0, 0, 0, 0, 294, 295, + 296, 297, 0, 298, 299, 300, 151, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 161, 0, 321, 346, 324, 79, 79, 0, + 138, 138, 335, 346, 0, 351, 545, 0, 552, 0, + 346, 0, 0, 457, 0, 35, 0, 0, 0, 457, + 37, 0, 565, 351, 0, 0, 0, 0, 366, 113, + 0, 0, 79, 0, 47, 48, 9, 245, 236, 0, + 0, 51, 0, 346, 0, 0, 546, 346, 55, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, + 0, 61, 0, 0, 138, 0, 0, 0, 0, 0, + 0, 62, 63, 64, 138, 10, 11, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 113, 346, 0, 346, + 0, 47, 48, 9, 0, 0, 0, 424, 51, 0, + 0, 161, 37, 0, 0, 225, 0, 424, 0, 0, + 0, 113, 0, 0, 0, 0, 47, 48, 9, 0, + 245, 0, 115, 51, 0, 0, 79, 0, 226, 0, + 114, 0, 0, 151, 282, 0, 0, 0, 0, 0, + 64, 0, 10, 11, 283, 0, 0, 115, 351, 0, + 545, 138, 138, 116, 552, 457, 0, 0, 0, 351, + 351, 0, 0, 0, 0, 64, 0, 10, 11, -2, 34, 0, 35, 0, 0, 36, 0, 37, 38, 39, 0, 0, 40, 0, 41, 42, 43, 44, 45, 46, - 0, 47, 48, 9, 0, 0, 49, 50, 51, 52, - 53, 54, 0, 0, 0, 55, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, + 138, 47, 48, 9, 0, 0, 49, 50, 51, 52, + 53, 54, 0, 0, 138, 55, 0, 0, 0, 0, + 0, 0, 161, 0, 0, 0, 0, 170, 56, 57, 0, 58, 59, 0, 0, 60, 0, 0, 61, 0, - 0, -24, 0, 0, 0, 0, 170, 0, 62, 63, - 64, 0, 10, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 648, 649, 0, 161, 586, 0, 0, - 0, 325, 0, 35, 0, 422, 36, -251, 37, 38, - 39, 0, -251, 40, 0, 41, 42, 113, 44, 45, - 46, 0, 47, 48, 9, 0, 0, 49, 50, 51, - 52, 53, 54, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 57, 0, 58, 59, 0, 0, 60, 0, 0, 61, - 0, 0, -251, 0, 0, 0, 0, 326, -251, 62, - 63, 64, 0, 10, 11, 325, 0, 35, 0, 0, - 36, 0, 37, 38, 39, 0, 0, 40, 0, 41, - 42, 113, 44, 45, 46, 0, 47, 48, 9, 0, - 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, - 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, - 60, 0, 35, 61, 0, 0, -251, 37, 0, 0, - 169, 326, -251, 62, 63, 64, 113, 10, 11, 0, - 0, 47, 48, 9, 0, 0, 0, 0, 51, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 56, 57, - 37, 58, 59, 0, 0, 60, 0, 0, 61, 113, - 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, - 64, 51, 10, 11, 0, 0, 0, 0, 159, 0, + 0, -24, 0, 0, 178, 0, 0, 0, 62, 63, + 64, 0, 10, 11, 186, 0, 0, 0, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 0, 569, 570, + 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, + 35, 0, 0, 36, -252, 37, 38, 39, 0, -252, + 40, 161, 41, 42, 113, 44, 45, 46, 0, 47, + 48, 9, 0, 0, 49, 50, 51, 52, 53, 54, + 0, 424, 0, 55, 0, 0, 0, 0, 424, 591, + 424, 0, 0, 0, 0, 0, 56, 57, 0, 58, + 59, 0, 0, 60, 0, 0, 61, 0, 0, -252, + 0, 0, 0, 0, 327, -252, 62, 63, 64, 0, + 10, 11, 0, 0, 0, 0, 326, 0, 35, 0, + 0, 36, 0, 37, 38, 39, 0, 0, 40, 0, + 41, 42, 113, 44, 45, 46, 0, 47, 48, 9, + 0, 0, 49, 50, 51, 52, 53, 54, 170, 0, + 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, + 0, 60, 0, 0, 61, 650, 651, -252, 161, 0, + 0, 0, 327, -252, 62, 63, 64, 424, 10, 11, + 35, 0, 0, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 336, 0, 0, 47, + 48, 9, 0, 0, 0, 337, 51, 0, 0, 0, + 338, 339, 340, 159, 0, 0, 0, 341, 0, 0, + 0, 0, 0, 0, 342, 0, 56, 57, 0, 58, + 160, 0, 0, 60, 0, 35, 61, 316, 0, 0, + 37, 343, 0, 0, 0, 0, 62, 63, 64, 113, + 10, 11, 0, 0, 47, 48, 9, 0, 0, 345, + 0, 51, 11, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 57, 0, 58, 160, 0, 0, 60, 0, - 35, 61, 315, 0, 0, 37, 0, 0, 0, 0, + 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, + 35, 61, 0, 0, 0, 37, 0, 0, 0, 423, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, - 48, 9, 0, 0, 0, 0, 51, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, + 48, 9, 0, 0, 0, 0, 51, 0, 432, 0, + 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, - 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, - 37, 0, 0, 0, 421, 0, 62, 63, 64, 113, - 10, 11, 0, 0, 47, 48, 9, 0, 0, 0, - 0, 51, 0, 430, 0, 0, 0, 0, 159, 0, + 160, 0, 0, 60, 0, 35, 61, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, + 10, 11, 0, 0, 47, 48, 9, 0, 476, 0, + 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 57, 0, 58, 160, 0, 0, 60, 0, + 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, - 48, 9, 0, 474, 0, 0, 51, 0, 0, 0, + 48, 9, 0, 477, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, - 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, - 10, 11, 0, 0, 47, 48, 9, 0, 475, 0, - 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, - 0, 56, 57, 37, 58, 59, 0, 0, 60, 0, - 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, - 0, 62, 63, 64, 51, 10, 11, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 56, 57, 37, 58, + 59, 0, 0, 60, 0, 0, 61, 113, 0, 0, + 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, + 10, 11, 0, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, + 0, 0, 0, 37, 0, 0, 0, 590, 0, 62, + 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, + 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, - 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, - 0, 0, 588, 0, 62, 63, 64, 113, 10, 11, - 0, 0, 47, 48, 9, 0, 0, 0, 0, 51, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 56, - 57, 37, 58, 59, 0, 0, 60, 0, 0, 61, - 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, - 63, 64, 51, 10, 11, 0, 0, 0, 0, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 0, 56, 57, 284, 58, 160, 0, 0, 60, - 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, - 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 57, 37, 58, 59, - 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, - 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, - 11, 0, 0, 37, 0, 225, 242, 0, 0, 0, - 0, 37, 113, 0, 0, 0, 0, 47, 48, 9, - 113, 0, 115, 0, 51, 47, 48, 9, 226, 0, - 0, 225, 51, 0, 0, 0, 37, 0, 0, 225, - 64, 0, 10, 11, 397, 113, 0, 0, 115, 0, - 47, 48, 9, 0, 226, 0, 115, 51, 0, 0, - 0, 0, 226, 0, 407, 0, 64, 0, 10, 11, - 37, 0, 0, 0, 64, 0, 10, 11, 0, 113, - 0, 115, 0, 0, 47, 48, 9, 408, 0, 0, - 0, 51, 0, 0, 0, 284, 0, 0, 225, 64, - 0, 10, 11, 335, 113, 0, 0, 0, 0, 47, - 48, 9, 336, 0, 0, 115, 51, 337, 338, 339, - 0, 478, 0, 225, 340, 0, 0, 0, 0, 335, - 0, 441, 461, 64, 0, 10, 11, 0, 336, 0, - 115, 0, 0, 337, 338, 339, 226, 0, 342, 0, - 340, 0, 0, 0, 442, 0, 335, 341, 64, 0, - 10, 11, 0, 0, 0, 336, 344, 0, 0, 11, - 337, 338, 542, 0, 342, 0, 0, 340, 0, 0, - 0, 0, 335, 0, 341, 0, 0, 0, 0, 0, - 335, 336, 344, 0, 0, 11, 337, 338, 339, 336, - 0, 342, 0, 340, 337, 338, 339, 0, 0, 0, - 341, 340, 0, 0, 0, 0, 0, 0, 341, 344, - 0, 10, 11, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 611, 0, 342, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 344, 0, 0, 11, 0, - 0, 0, 0, 344, 177, 178, 11, 179, 0, 181, + 0, 35, 0, 0, 56, 57, 37, 58, 59, 0, + 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, + 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, + 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 56, 57, 285, + 58, 160, 0, 0, 60, 0, 0, 61, 113, 0, + 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, + 51, 10, 11, 0, 0, 0, 0, 55, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 57, 37, 58, 59, 0, 0, 60, 0, 0, + 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, + 62, 63, 64, 51, 10, 11, 0, 37, 0, 0, + 225, 0, 0, 0, 0, 37, 113, 0, 243, 0, + 0, 47, 48, 9, 113, 0, 0, 115, 51, 47, + 48, 9, 0, 226, 0, 225, 51, 0, 0, 292, + 0, 37, 0, 225, 0, 64, 0, 10, 11, 283, + 113, 0, 115, 0, 0, 47, 48, 9, 226, 0, + 115, 0, 51, 0, 0, 0, 226, 0, 37, 225, + 64, 0, 10, 11, 399, 0, 0, 113, 64, 0, + 10, 11, 47, 48, 9, 0, 115, 0, 0, 51, + 0, 0, 226, 0, 37, 0, 409, 0, 0, 0, + 0, 0, 285, 113, 64, 0, 10, 11, 47, 48, + 9, 113, 0, 115, 0, 51, 47, 48, 9, 410, + 0, 0, 225, 51, 0, 0, 0, 336, 0, 0, + 225, 64, 0, 10, 11, 336, 337, 0, 463, 115, + 0, 338, 339, 544, 337, 480, 0, 115, 341, 338, + 339, 340, 0, 226, 0, 342, 341, 64, 0, 10, + 11, 336, 0, 342, 0, 64, 0, 10, 11, 0, + 337, 0, 343, 0, 0, 338, 339, 340, 0, 0, + 343, 0, 341, 0, 0, 0, 0, 0, 0, 342, + 345, 0, 10, 11, 0, 0, 0, 0, 345, 178, + 0, 11, 0, 181, 182, 183, 343, 0, 185, 186, + 187, 188, 613, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 0, 0, 345, 177, 178, 11, 179, 0, + 181, 182, 183, 0, 0, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, + 0, 179, 0, 181, 182, 183, 0, 437, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 0, 0, 0, 0, 0, 0, 177, 178, + 0, 179, 0, 181, 182, 183, 0, 434, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 177, 178, 0, 179, 0, 181, 182, 183, + 0, 527, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 177, 178, 0, 179, + 0, 181, 182, 183, 0, 661, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 177, 178, 0, 179, 0, 181, 182, 183, 0, 662, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 177, 178, 0, 0, 0, 181, 182, 183, 0, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 178, 0, - 179, 0, 181, 182, 183, 0, 435, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 0, 0, 0, 0, 0, 0, 177, 178, 0, - 179, 0, 181, 182, 183, 0, 432, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 177, 178, 0, 179, 0, 181, 182, 183, 0, - 525, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 177, 178, 0, 179, 0, - 181, 182, 183, 0, 659, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, - 178, 0, 179, 0, 181, 182, 183, 0, 660, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 177, 178, 0, 0, 0, 181, 182, - 183, 0, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, - 0, 0, 181, 182, 183, 0, 0, 185, 186, 187, - 188, 0, 190, 191, 192, 193, 194, 195, 196, 197, - 198 + 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, + 0, 0, 0, 181, 182, 183, 0, 0, 185, 186, + 187, 188, 0, 190, 191, 192, 193, 194, 195, 196, + 197, 198 }; static const yytype_int16 yycheck[] = { - 37, 37, 61, 143, 67, 37, 37, 202, 324, 251, - 378, 205, 61, 28, 487, 127, 127, 136, 259, 224, - 144, 133, 322, 148, 61, 454, 446, 268, 31, 61, - 3, 143, 317, 264, 265, 276, 212, 5, 323, 280, - 67, 36, 218, 219, 39, 250, 24, 59, 0, 290, - 45, 1, 5, 25, 3, 1, 20, 37, 35, 3, - 25, 24, 74, 11, 3, 55, 56, 57, 58, 59, - 60, 7, 62, 63, 62, 24, 12, 114, 115, 116, - 24, 62, 114, 115, 116, 35, 62, 68, 7, 35, - 67, 128, 68, 12, 5, 73, 128, 65, 66, 72, - 137, 574, 3, 67, 107, 137, 21, 75, 145, 59, - 173, 160, 65, 145, 63, 152, 60, 67, 51, 63, - 152, 67, 75, 160, 73, 74, 62, 75, 160, 73, - 74, 24, 68, 63, 114, 115, 116, 256, 175, 439, - 425, 136, 427, 175, 62, 390, 173, 142, 128, 68, - 83, 200, 3, 398, 65, 49, 89, 137, 389, 3, - 391, 62, 63, 200, 75, 145, 342, 68, 200, 159, - 160, 644, 152, 24, 350, 24, 24, 606, 383, 599, - 24, 7, 66, 598, 62, 60, 12, 224, 72, 226, - 610, 611, 224, 7, 226, 175, 438, 24, 12, 50, - 75, 517, 3, 62, 53, 242, 221, 244, 524, 68, - 242, 59, 244, 250, 3, 59, 71, 462, 250, 63, - 414, 62, 73, 74, 67, 73, 74, 421, 3, 73, - 74, 473, 59, 127, 66, 272, 62, 652, 433, 654, - 272, 66, 68, 59, 224, 24, 226, 284, 284, 24, - 287, 288, 284, 284, 68, 287, 288, 369, 369, 318, - 505, 24, 242, 59, 244, 441, 385, 379, 379, 318, - 250, 447, 448, 478, 450, 50, 400, 402, 59, 520, - 59, 318, 24, 459, 59, 461, 318, 40, 35, 68, - 53, 44, 272, 24, 73, 74, 59, 665, 73, 74, - 62, 74, 62, 64, 284, 68, 68, 287, 288, 59, - 73, 74, 59, 24, 208, 209, 561, 633, 24, 40, - 67, 59, 63, 44, 361, 35, 375, 67, 24, 361, - 75, 73, 74, 578, 579, 577, 373, 9, 375, 375, - 60, 373, 53, 375, 375, 17, 383, 72, 59, 21, - 387, 383, 59, 59, 417, 387, 35, 72, 603, 31, - 32, 59, 73, 74, 60, 63, 571, 73, 74, 428, - 407, 408, 3, 71, 550, 407, 408, 73, 74, 428, - 59, 361, 558, 24, 35, 35, 60, 281, 67, 35, - 385, 428, 64, 373, 588, 375, 428, 291, 393, 594, - 8, 60, 397, 383, 62, 35, 35, 387, 59, 59, - 75, 94, 95, 59, 97, 98, 67, 67, 59, 62, - 60, 67, 471, 24, 59, 601, 602, 407, 408, 59, - 5, 65, 73, 74, 471, 471, 24, 67, 487, 471, - 471, 478, 62, 62, 24, 20, 478, 22, 497, 72, - 487, 487, 24, 28, 24, 487, 487, 569, 569, 3, - 497, 36, 3, 62, 39, 497, 62, 8, 43, 62, - 45, 59, 67, 367, 368, 65, 17, 66, 53, 54, - 60, 22, 23, 24, 521, 73, 74, 59, 29, 521, - 60, 471, 67, 73, 74, 34, 24, 95, 478, 97, - 98, 73, 74, 73, 74, 44, 59, 487, 67, 48, - 71, 67, 406, 8, 53, 54, 55, 56, 59, 65, - 62, 584, 62, 60, 664, 574, 420, 62, 62, 212, - 71, 59, 73, 74, 571, 218, 219, 574, 574, 571, - 60, 521, 574, 574, 60, 73, 74, 60, 63, 68, - 60, 68, 664, 128, 35, 60, 60, 60, 60, 68, - 60, 136, 60, 75, 75, 624, 60, 142, 3, 144, - 36, 68, 62, 148, 60, 624, 72, 62, 60, 59, - 59, 49, 75, 66, 60, 60, 60, 624, 8, 62, - 60, 571, 624, 61, 574, 644, 64, 17, 173, 60, - 60, 59, 22, 23, 24, 59, 68, 644, 644, 29, - 62, 49, 644, 644, 62, 72, 36, 68, 62, 59, - 8, 60, 68, 60, 60, 68, 201, 14, 62, 17, - 72, 60, 207, 53, 22, 23, 24, 60, 213, 59, - 68, 29, 60, 60, 22, 65, 221, 31, 36, 224, - 584, 71, 335, 73, 74, 75, 645, 510, 526, 342, - 235, 526, 244, 39, 644, 53, 282, 350, 244, 160, - 393, 59, 385, 373, 22, 250, 251, 65, 214, 497, - 335, 335, 464, 71, 34, 73, 74, 75, 38, 39, - 40, 442, 605, 43, 44, 45, 46, 601, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 282, 176, 177, - 178, 179, 460, 181, 182, 183, -1, 185, 186, 187, + 37, 37, 61, 143, 67, 37, 37, 202, 380, 205, + 224, 148, 61, 448, 144, 127, 28, 489, 456, 67, + 127, 133, 252, 325, 61, 114, 115, 116, 136, 61, + 31, 143, 323, 36, 3, 51, 39, 251, 11, 5, + 24, 260, 45, 49, 35, 392, 7, 25, 137, 35, + 269, 12, 5, 400, 265, 266, 145, 37, 277, 3, + 1, 35, 281, 152, 318, 0, 24, 83, 59, 62, + 324, 3, 291, 89, 25, 68, 67, 114, 115, 116, + 24, 67, 114, 115, 116, 59, 175, 3, 24, 73, + 1, 128, 24, 67, 35, 53, 128, 20, 3, 65, + 137, 62, 75, 72, 576, 137, 107, 68, 145, 75, + 173, 160, 65, 145, 62, 152, 60, 464, 59, 63, + 152, 127, 75, 160, 35, 173, 67, 59, 160, 73, + 74, 63, 600, 136, 114, 115, 116, 226, 175, 142, + 7, 73, 74, 175, 67, 12, 62, 63, 128, 257, + 441, 200, 68, 62, 243, 3, 67, 137, 3, 68, + 507, 5, 24, 200, 21, 145, 601, 63, 200, 24, + 608, 385, 152, 427, 646, 429, 24, 612, 613, 24, + 391, 59, 393, 59, 273, 63, 654, 224, 656, 226, + 62, 3, 224, 71, 226, 175, 285, 59, 74, 288, + 289, 68, 208, 209, 62, 50, 243, 3, 245, 221, + 440, 243, 24, 245, 251, 63, 563, 519, 71, 251, + 416, 65, 66, 3, 526, 73, 74, 423, 73, 74, + 62, 75, 67, 580, 581, 66, 273, 7, 50, 24, + 435, 273, 12, 66, 224, 475, 226, 59, 285, 285, + 7, 288, 289, 285, 285, 12, 288, 289, 605, 371, + 319, 73, 74, 243, 371, 245, 480, 404, 24, 381, + 319, 251, 402, 362, 381, 60, 282, 59, 59, 387, + 74, 60, 319, 35, 212, 24, 292, 319, 73, 74, + 218, 219, 62, 273, 59, 667, 75, 40, 68, 35, + 389, 44, 40, 522, 60, 285, 44, 59, 288, 289, + 24, 68, 24, 66, 9, 67, 24, 73, 74, 72, + 409, 410, 17, 59, 64, 362, 21, 62, 377, 59, + 362, 67, 63, 635, 73, 74, 31, 32, 375, 24, + 377, 377, 59, 375, 67, 377, 377, 59, 385, 579, + 24, 59, 389, 385, 24, 75, 419, 389, 60, 573, + 68, 73, 74, 369, 370, 73, 74, 35, 53, 64, + 62, 430, 409, 410, 59, 72, 68, 409, 410, 53, + 62, 430, 362, 68, 387, 59, 68, 59, 73, 74, + 60, 72, 395, 430, 590, 375, 399, 377, 430, 73, + 74, 596, 408, 73, 74, 385, 3, 94, 95, 389, + 97, 98, 60, 8, 60, 343, 422, 35, 95, 24, + 97, 98, 62, 351, 473, 24, 75, 60, 62, 409, + 410, 24, 5, 59, 523, 62, 473, 473, 24, 62, + 489, 473, 473, 480, 72, 3, 62, 20, 480, 22, + 499, 62, 489, 489, 59, 28, 65, 489, 489, 571, + 59, 67, 499, 36, 571, 35, 39, 499, 73, 74, + 43, 62, 45, 59, 73, 74, 65, 59, 66, 24, + 53, 54, 67, 67, 71, 8, 523, 73, 74, 59, + 65, 523, 60, 473, 67, 62, 62, 67, 62, 24, + 480, 62, 35, 55, 56, 57, 58, 59, 60, 489, + 62, 63, 60, 60, 59, 443, 60, 63, 35, 68, + 60, 449, 450, 586, 452, 212, 666, 576, 73, 74, + 68, 218, 219, 461, 59, 463, 573, 34, 60, 576, + 576, 573, 59, 523, 576, 576, 60, 44, 73, 74, + 67, 48, 60, 36, 666, 128, 53, 54, 55, 56, + 75, 68, 75, 136, 60, 3, 60, 626, 60, 142, + 8, 144, 60, 68, 3, 148, 62, 626, 60, 17, + 60, 72, 75, 62, 22, 23, 24, 59, 66, 626, + 60, 29, 60, 573, 626, 60, 576, 646, 62, 60, + 173, 60, 8, 60, 59, 59, 59, 159, 160, 646, + 646, 17, 68, 62, 646, 646, 22, 23, 24, 62, + 72, 59, 68, 29, 552, 49, 62, 59, 201, 60, + 36, 68, 560, 71, 207, 73, 74, 60, 68, 60, + 213, 14, 62, 60, 72, 60, 60, 53, 221, 336, + 60, 224, 68, 4, 5, 31, 343, 22, 647, 65, + 586, 512, 235, 528, 351, 71, 646, 528, 74, 245, + 283, 39, 214, 245, 395, 603, 604, 387, 251, 252, + 22, 375, 33, 34, 160, 36, 37, 38, 39, 40, + 499, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 8, 336, 466, 607, + 283, 49, 444, 603, 65, 17, 336, 462, -1, -1, + 22, 23, 24, 61, 75, -1, 64, 29, 213, -1, + -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, + 3, -1, -1, -1, -1, 8, -1, -1, 11, -1, + 323, 53, -1, -1, 17, -1, 443, 59, -1, 22, + 23, 24, 449, 450, -1, 452, 29, -1, -1, 71, + -1, 344, 74, 36, 461, -1, 463, -1, -1, -1, + -1, -1, 355, -1, -1, -1, 49, 50, -1, 52, + 53, -1, -1, 56, -1, -1, 59, -1, -1, -1, + -1, -1, 375, -1, 377, -1, 69, 70, 71, 382, + 73, 74, 385, -1, 387, -1, -1, -1, -1, -1, + -1, -1, 395, -1, -1, -1, 399, -1, -1, 402, + -1, 404, -1, -1, -1, -1, -1, -1, 176, 177, + 178, 179, -1, 181, 182, 183, 419, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, -1, 200, -1, 202, 213, 204, -1, -1, -1, - 208, 209, 210, -1, -1, -1, -1, 322, -1, -1, - 114, 115, 116, -1, -1, -1, -1, -1, 441, -1, - -1, -1, -1, -1, 447, 448, -1, 450, 343, -1, - -1, 8, -1, 137, -1, 8, 459, -1, 461, 354, - 17, 145, -1, -1, 17, 22, 23, 24, 152, 22, - 23, 24, 29, -1, -1, -1, 29, -1, 373, 36, - 375, -1, -1, 36, -1, 380, -1, -1, 383, -1, - 385, 175, -1, 281, -1, -1, 53, -1, 393, -1, - 53, -1, 397, 291, -1, 400, 59, 402, 65, -1, - -1, -1, -1, -1, 71, -1, -1, 74, 71, -1, - 73, 74, 417, -1, -1, -1, 314, -1, -1, -1, - 318, -1, -1, -1, -1, -1, 324, -1, -1, -1, - -1, -1, 226, 438, 439, -1, -1, 550, -1, -1, - -1, 446, 447, -1, 449, 558, -1, -1, 242, 454, - -1, -1, 565, -1, -1, 460, -1, -1, 463, 464, - -1, -1, -1, -1, -1, -1, -1, -1, 473, 367, - 368, -1, -1, 478, -1, -1, -1, -1, 272, -1, - -1, 34, -1, -1, -1, 598, -1, -1, 601, 602, - 284, 44, -1, 287, 288, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, -1, -1, -1, 406, -1, - -1, -1, -1, 4, 5, -1, -1, -1, -1, -1, - -1, -1, 420, -1, -1, -1, -1, -1, -1, -1, - 428, -1, -1, -1, -1, 433, -1, -1, -1, 652, - -1, 654, 33, 34, -1, 36, 37, 38, 39, 40, - -1, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 571, 361, -1, -1, - -1, -1, 577, -1, 65, -1, 474, 475, -1, 584, - -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, - -1, -1, -1, 387, 599, -1, 601, -1, -1, 497, - 605, 606, -1, -1, -1, 610, 611, -1, -1, -1, - -1, -1, -1, 407, 408, -1, -1, -1, -1, 517, - -1, -1, -1, -1, -1, -1, 524, 525, 526, 0, + 198, -1, 200, -1, 202, 552, 204, 440, 441, -1, + 208, 209, 210, 560, -1, 448, 449, -1, 451, -1, + 567, -1, -1, 456, -1, 3, -1, -1, -1, 462, + 8, -1, 465, 466, -1, -1, -1, -1, 236, 17, + -1, -1, 475, -1, 22, 23, 24, 480, 26, -1, + -1, 29, -1, 600, -1, -1, 603, 604, 36, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, + -1, 59, -1, -1, 282, -1, -1, -1, -1, -1, + -1, 69, 70, 71, 292, 73, 74, 8, -1, -1, + -1, -1, -1, -1, -1, -1, 17, 654, -1, 656, + -1, 22, 23, 24, -1, -1, -1, 315, 29, -1, + -1, 319, 8, -1, -1, 36, -1, 325, -1, -1, + -1, 17, -1, -1, -1, -1, 22, 23, 24, -1, + 573, -1, 53, 29, -1, -1, 579, -1, 59, -1, + 36, -1, -1, 586, 65, -1, -1, -1, -1, -1, + 71, -1, 73, 74, 75, -1, -1, 53, 601, -1, + 603, 369, 370, 59, 607, 608, -1, -1, -1, 612, + 613, -1, -1, -1, -1, 71, -1, 73, 74, 0, 1, -1, 3, -1, -1, 6, -1, 8, 9, 10, -1, -1, 13, -1, 15, 16, 17, 18, 19, 20, - -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, - 31, 32, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, + 408, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, -1, -1, 422, 36, -1, -1, -1, -1, + -1, -1, 430, -1, -1, -1, -1, 435, 49, 50, -1, 52, 53, -1, -1, 56, -1, -1, 59, -1, - -1, 62, -1, -1, -1, -1, 594, -1, 69, 70, - 71, -1, 73, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 621, 622, -1, 624, 521, -1, -1, - -1, 1, -1, 3, -1, 633, 6, 7, 8, 9, - 10, -1, 12, 13, -1, 15, 16, 17, 18, 19, - 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, - 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - 50, -1, 52, 53, -1, -1, 56, -1, -1, 59, - -1, -1, 62, -1, -1, -1, -1, 67, 68, 69, - 70, 71, -1, 73, 74, 1, -1, 3, -1, -1, - 6, -1, 8, 9, 10, -1, -1, 13, -1, 15, - 16, 17, 18, 19, 20, -1, 22, 23, 24, -1, - -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, - 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, - 56, -1, 3, 59, -1, -1, 62, 8, -1, -1, - 11, 67, 68, 69, 70, 71, 17, 73, 74, -1, - -1, 22, 23, 24, -1, -1, -1, -1, 29, -1, - -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3, -1, -1, 49, 50, - 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, - -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, - 71, 29, 73, 74, -1, -1, -1, -1, 36, -1, + -1, 62, -1, -1, 34, -1, -1, -1, 69, 70, + 71, -1, 73, 74, 44, -1, -1, -1, 48, 49, + 50, 51, 52, 53, 54, 55, 56, -1, 476, 477, + -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, + 3, -1, -1, 6, 7, 8, 9, 10, -1, 12, + 13, 499, 15, 16, 17, 18, 19, 20, -1, 22, + 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, + -1, 519, -1, 36, -1, -1, -1, -1, 526, 527, + 528, -1, -1, -1, -1, -1, 49, 50, -1, 52, + 53, -1, -1, 56, -1, -1, 59, -1, -1, 62, + -1, -1, -1, -1, 67, 68, 69, 70, 71, -1, + 73, 74, -1, -1, -1, -1, 1, -1, 3, -1, + -1, 6, -1, 8, 9, 10, -1, -1, 13, -1, + 15, 16, 17, 18, 19, 20, -1, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 596, -1, + -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, + -1, 56, -1, -1, 59, 623, 624, 62, 626, -1, + -1, -1, 67, 68, 69, 70, 71, 635, 73, 74, + 3, -1, -1, -1, -1, 8, -1, -1, -1, -1, + -1, -1, -1, -1, 17, -1, 8, -1, -1, 22, + 23, 24, -1, -1, -1, 17, 29, -1, -1, -1, + 22, 23, 24, 36, -1, -1, -1, 29, -1, -1, + -1, -1, -1, -1, 36, -1, 49, 50, -1, 52, + 53, -1, -1, 56, -1, 3, 59, 60, -1, -1, + 8, 53, -1, -1, -1, -1, 69, 70, 71, 17, + 73, 74, -1, -1, 22, 23, 24, -1, -1, 71, + -1, 29, 74, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, - 3, 59, 60, -1, -1, 8, -1, -1, -1, -1, + 3, 59, -1, -1, -1, 8, -1, -1, -1, 67, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, - 23, 24, -1, -1, -1, -1, 29, -1, -1, -1, + 23, 24, -1, -1, -1, -1, 29, -1, 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, - 8, -1, -1, -1, 67, -1, 69, 70, 71, 17, - 73, 74, -1, -1, 22, 23, 24, -1, -1, -1, - -1, 29, -1, 31, -1, -1, -1, -1, 36, -1, + 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, + 73, 74, -1, -1, 22, 23, 24, -1, 26, -1, + -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, 26, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, - 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, - 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, - 73, 74, -1, -1, 22, 23, 24, -1, 26, -1, - -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, - -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, - -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, - -1, 69, 70, 71, 29, 73, 74, -1, -1, -1, + -1, -1, -1, 3, -1, -1, 49, 50, 8, 52, + 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, + -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, + 73, 74, -1, -1, -1, -1, 36, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, + -1, -1, -1, 8, -1, -1, -1, 67, -1, 69, + 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, + -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, - -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, - -1, -1, 67, -1, 69, 70, 71, 17, 73, 74, - -1, -1, 22, 23, 24, -1, -1, -1, -1, 29, - -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3, -1, -1, 49, - 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, - 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, - 70, 71, 29, 73, 74, -1, -1, -1, -1, 36, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, - -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, - 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, - -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 49, 50, 8, 52, 53, - -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, - -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, - 74, -1, -1, 8, -1, 36, 11, -1, -1, -1, - -1, 8, 17, -1, -1, -1, -1, 22, 23, 24, - 17, -1, 53, -1, 29, 22, 23, 24, 59, -1, - -1, 36, 29, -1, -1, -1, 8, -1, -1, 36, - 71, -1, 73, 74, 75, 17, -1, -1, 53, -1, - 22, 23, 24, -1, 59, -1, 53, 29, -1, -1, - -1, -1, 59, -1, 36, -1, 71, -1, 73, 74, - 8, -1, -1, -1, 71, -1, 73, 74, -1, 17, - -1, 53, -1, -1, 22, 23, 24, 59, -1, -1, - -1, 29, -1, -1, -1, 8, -1, -1, 36, 71, - -1, 73, 74, 8, 17, -1, -1, -1, -1, 22, - 23, 24, 17, -1, -1, 53, 29, 22, 23, 24, - -1, 59, -1, 36, 29, -1, -1, -1, -1, 8, - -1, 36, 11, 71, -1, 73, 74, -1, 17, -1, - 53, -1, -1, 22, 23, 24, 59, -1, 53, -1, - 29, -1, -1, -1, 59, -1, 8, 36, 71, -1, - 73, 74, -1, -1, -1, 17, 71, -1, -1, 74, - 22, 23, 24, -1, 53, -1, -1, 29, -1, -1, - -1, -1, 8, -1, 36, -1, -1, -1, -1, -1, - 8, 17, 71, -1, -1, 74, 22, 23, 24, 17, - -1, 53, -1, 29, 22, 23, 24, -1, -1, -1, - 36, 29, -1, -1, -1, -1, -1, -1, 36, 71, - -1, 73, 74, -1, -1, -1, -1, 53, -1, -1, - -1, -1, -1, 59, -1, 53, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 71, -1, -1, 74, -1, - -1, -1, -1, 71, 33, 34, 74, 36, -1, 38, + -1, 3, -1, -1, 49, 50, 8, 52, 53, -1, + -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, + 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, + -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3, -1, -1, 49, 50, 8, + 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, + -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, + 29, 73, 74, -1, -1, -1, -1, 36, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, + 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, + 69, 70, 71, 29, 73, 74, -1, 8, -1, -1, + 36, -1, -1, -1, -1, 8, 17, -1, 11, -1, + -1, 22, 23, 24, 17, -1, -1, 53, 29, 22, + 23, 24, -1, 59, -1, 36, 29, -1, -1, 65, + -1, 8, -1, 36, -1, 71, -1, 73, 74, 75, + 17, -1, 53, -1, -1, 22, 23, 24, 59, -1, + 53, -1, 29, -1, -1, -1, 59, -1, 8, 36, + 71, -1, 73, 74, 75, -1, -1, 17, 71, -1, + 73, 74, 22, 23, 24, -1, 53, -1, -1, 29, + -1, -1, 59, -1, 8, -1, 36, -1, -1, -1, + -1, -1, 8, 17, 71, -1, 73, 74, 22, 23, + 24, 17, -1, 53, -1, 29, 22, 23, 24, 59, + -1, -1, 36, 29, -1, -1, -1, 8, -1, -1, + 36, 71, -1, 73, 74, 8, 17, -1, 11, 53, + -1, 22, 23, 24, 17, 59, -1, 53, 29, 22, + 23, 24, -1, 59, -1, 36, 29, 71, -1, 73, + 74, 8, -1, 36, -1, 71, -1, 73, 74, -1, + 17, -1, 53, -1, -1, 22, 23, 24, -1, -1, + 53, -1, 29, -1, -1, -1, -1, -1, -1, 36, + 71, -1, 73, 74, -1, -1, -1, -1, 71, 34, + -1, 74, -1, 38, 39, 40, 53, -1, 43, 44, + 45, 46, 59, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, -1, 71, 33, 34, 74, 36, -1, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 33, 34, + -1, 36, -1, 38, 39, 40, -1, 75, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, -1, -1, -1, -1, -1, 33, 34, + -1, 36, -1, 38, 39, 40, -1, 72, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 33, 34, -1, 36, -1, 38, 39, 40, + -1, 66, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 33, 34, -1, 36, + -1, 38, 39, 40, -1, 66, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 33, 34, -1, 36, -1, 38, 39, 40, -1, 66, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 33, 34, -1, -1, -1, 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 34, -1, - 36, -1, 38, 39, 40, -1, 75, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, -1, -1, -1, -1, -1, 33, 34, -1, - 36, -1, 38, 39, 40, -1, 72, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 33, 34, -1, 36, -1, 38, 39, 40, -1, - 66, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 33, 34, -1, 36, -1, - 38, 39, 40, -1, 66, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, - 34, -1, 36, -1, 38, 39, 40, -1, 66, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 33, 34, -1, -1, -1, 38, 39, - 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, - -1, -1, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56 + 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, + -1, -1, -1, 38, 39, 40, -1, -1, 43, 44, + 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1528,50 +1514,50 @@ static const yytype_uint8 yystos[] = 59, 63, 71, 66, 59, 137, 1, 137, 5, 65, 75, 142, 200, 59, 160, 200, 24, 200, 201, 200, 64, 62, 190, 88, 59, 36, 59, 146, 152, 153, - 154, 155, 161, 146, 146, 63, 98, 107, 108, 109, - 186, 194, 11, 136, 141, 145, 146, 177, 178, 179, - 59, 67, 162, 112, 194, 24, 59, 68, 138, 171, - 173, 175, 146, 35, 53, 59, 68, 138, 170, 172, - 173, 174, 184, 112, 60, 97, 169, 146, 60, 93, - 167, 65, 75, 146, 8, 147, 60, 72, 72, 60, - 94, 65, 146, 126, 126, 126, 126, 126, 126, 126, + 154, 155, 161, 146, 146, 63, 26, 98, 107, 108, + 109, 186, 194, 11, 136, 141, 145, 146, 177, 178, + 179, 59, 67, 162, 112, 194, 24, 59, 68, 138, + 171, 173, 175, 146, 35, 53, 59, 68, 138, 170, + 172, 173, 174, 184, 112, 60, 97, 169, 146, 60, + 93, 167, 65, 75, 146, 8, 147, 60, 72, 72, + 60, 94, 65, 146, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 130, 60, 135, 187, 59, 141, - 126, 192, 182, 126, 130, 1, 67, 91, 100, 180, - 181, 183, 186, 186, 126, 8, 17, 22, 23, 24, - 29, 36, 53, 65, 71, 142, 202, 204, 205, 206, - 141, 207, 215, 162, 59, 3, 202, 202, 83, 60, - 179, 8, 146, 60, 141, 35, 105, 5, 65, 62, - 146, 136, 145, 75, 191, 60, 179, 183, 115, 62, - 63, 24, 173, 59, 176, 62, 190, 72, 104, 59, - 174, 53, 174, 62, 190, 3, 198, 75, 146, 123, - 62, 190, 62, 190, 186, 139, 65, 36, 59, 146, - 152, 153, 154, 161, 67, 146, 146, 62, 190, 186, - 65, 67, 126, 131, 132, 188, 189, 11, 75, 191, - 31, 135, 72, 66, 180, 75, 191, 189, 101, 62, - 68, 36, 59, 203, 204, 206, 59, 67, 71, 67, - 8, 202, 3, 50, 59, 141, 212, 213, 3, 72, - 65, 11, 202, 60, 75, 62, 195, 215, 62, 62, - 62, 60, 60, 106, 26, 26, 194, 177, 59, 141, - 151, 152, 153, 154, 155, 161, 163, 60, 68, 105, - 194, 141, 60, 179, 175, 68, 146, 7, 12, 68, - 99, 102, 174, 198, 174, 60, 172, 68, 138, 198, - 35, 97, 60, 93, 60, 186, 146, 130, 94, 95, - 168, 185, 60, 186, 130, 66, 75, 191, 68, 191, - 135, 60, 60, 60, 192, 60, 68, 183, 180, 202, - 205, 195, 24, 141, 142, 197, 202, 209, 217, 202, - 141, 196, 208, 216, 202, 3, 212, 62, 72, 202, - 213, 202, 198, 141, 207, 60, 183, 126, 126, 62, - 179, 59, 163, 116, 60, 187, 66, 103, 60, 60, - 198, 104, 60, 189, 62, 190, 146, 189, 67, 126, - 133, 131, 132, 60, 66, 72, 68, 60, 60, 59, - 68, 62, 72, 202, 68, 62, 49, 202, 62, 198, - 59, 59, 202, 210, 211, 68, 194, 60, 179, 119, - 163, 5, 65, 66, 75, 183, 198, 198, 68, 68, - 95, 60, 68, 130, 192, 210, 195, 209, 202, 198, - 208, 212, 195, 195, 60, 14, 117, 120, 126, 126, - 189, 72, 60, 60, 60, 60, 163, 20, 100, 66, - 66, 68, 210, 210, 118, 112, 105 + 126, 126, 126, 126, 126, 130, 60, 135, 187, 59, + 141, 126, 192, 182, 126, 130, 1, 67, 91, 100, + 180, 181, 183, 186, 186, 126, 8, 17, 22, 23, + 24, 29, 36, 53, 65, 71, 142, 202, 204, 205, + 206, 141, 207, 215, 162, 59, 3, 202, 202, 83, + 60, 179, 8, 146, 60, 141, 126, 35, 105, 5, + 65, 62, 146, 136, 145, 75, 191, 60, 179, 183, + 115, 62, 63, 24, 173, 59, 176, 62, 190, 72, + 104, 59, 174, 53, 174, 62, 190, 3, 198, 75, + 146, 123, 62, 190, 62, 190, 186, 139, 65, 36, + 59, 146, 152, 153, 154, 161, 67, 146, 146, 62, + 190, 186, 65, 67, 126, 131, 132, 188, 189, 11, + 75, 191, 31, 135, 72, 66, 180, 75, 191, 189, + 101, 62, 68, 36, 59, 203, 204, 206, 59, 67, + 71, 67, 8, 202, 3, 50, 59, 141, 212, 213, + 3, 72, 65, 11, 202, 60, 75, 62, 195, 215, + 62, 62, 62, 60, 60, 106, 26, 26, 194, 177, + 59, 141, 151, 152, 153, 154, 155, 161, 163, 60, + 68, 105, 194, 141, 60, 179, 175, 68, 146, 7, + 12, 68, 99, 102, 174, 198, 174, 60, 172, 68, + 138, 198, 35, 97, 60, 93, 60, 186, 146, 130, + 94, 95, 168, 185, 60, 186, 130, 66, 75, 191, + 68, 191, 135, 60, 60, 60, 192, 60, 68, 183, + 180, 202, 205, 195, 24, 141, 142, 197, 202, 209, + 217, 202, 141, 196, 208, 216, 202, 3, 212, 62, + 72, 202, 213, 202, 198, 141, 207, 60, 183, 126, + 126, 62, 179, 59, 163, 116, 60, 187, 66, 103, + 60, 60, 198, 104, 60, 189, 62, 190, 146, 189, + 67, 126, 133, 131, 132, 60, 66, 72, 68, 60, + 60, 59, 68, 62, 72, 202, 68, 62, 49, 202, + 62, 198, 59, 59, 202, 210, 211, 68, 194, 60, + 179, 119, 163, 5, 65, 66, 75, 183, 198, 198, + 68, 68, 95, 60, 68, 130, 192, 210, 195, 209, + 202, 198, 208, 212, 195, 195, 60, 14, 117, 120, + 126, 126, 189, 72, 60, 60, 60, 60, 163, 20, + 100, 66, 66, 68, 210, 210, 118, 112, 105 }; #define yyerrok (yyerrstatus = 0) @@ -2985,7 +2971,15 @@ yyparse () break; case 70: -#line 619 "go.y" +#line 617 "go.y" + { + (yyval.node) = nod(ORANGE, N, (yyvsp[(2) - (2)].node)); + (yyval.node)->etype = 0; // := flag + } + break; + + case 71: +#line 624 "go.y" { // init ; test ; incr if((yyvsp[(5) - (5)].node) != N && (yyvsp[(5) - (5)].node)->colas != 0) @@ -2998,8 +2992,8 @@ yyparse () } break; - case 71: -#line 630 "go.y" + case 72: +#line 635 "go.y" { // normal test (yyval.node) = nod(OFOR, N, N); @@ -3007,31 +3001,31 @@ yyparse () } break; - case 73: -#line 639 "go.y" + case 74: +#line 644 "go.y" { (yyval.node) = (yyvsp[(1) - (2)].node); (yyval.node)->nbody = concat((yyval.node)->nbody, (yyvsp[(2) - (2)].list)); } break; - case 74: -#line 646 "go.y" + case 75: +#line 651 "go.y" { markdcl(); } break; - case 75: -#line 650 "go.y" + case 76: +#line 655 "go.y" { (yyval.node) = (yyvsp[(3) - (3)].node); popdcl(); } break; - case 76: -#line 657 "go.y" + case 77: +#line 662 "go.y" { // test (yyval.node) = nod(OIF, N, N); @@ -3039,8 +3033,8 @@ yyparse () } break; - case 77: -#line 663 "go.y" + case 78: +#line 668 "go.y" { // init ; test (yyval.node) = nod(OIF, N, N); @@ -3050,30 +3044,30 @@ yyparse () } break; - case 78: -#line 674 "go.y" + case 79: +#line 679 "go.y" { markdcl(); } break; - case 79: -#line 678 "go.y" + case 80: +#line 683 "go.y" { if((yyvsp[(3) - (3)].node)->ntest == N) yyerror("missing condition in if statement"); } break; - case 80: -#line 683 "go.y" + case 81: +#line 688 "go.y" { (yyvsp[(3) - (5)].node)->nbody = (yyvsp[(5) - (5)].list); } break; - case 81: -#line 687 "go.y" + case 82: +#line 692 "go.y" { Node *n; NodeList *nn; @@ -3090,15 +3084,15 @@ yyparse () } break; - case 82: -#line 704 "go.y" + case 83: +#line 709 "go.y" { markdcl(); } break; - case 83: -#line 708 "go.y" + case 84: +#line 713 "go.y" { if((yyvsp[(4) - (5)].node)->ntest == N) yyerror("missing condition in if statement"); @@ -3107,29 +3101,29 @@ yyparse () } break; - case 84: -#line 716 "go.y" + case 85: +#line 721 "go.y" { (yyval.list) = nil; } break; - case 85: -#line 720 "go.y" + case 86: +#line 725 "go.y" { (yyval.list) = concat((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); } break; - case 86: -#line 725 "go.y" + case 87: +#line 730 "go.y" { (yyval.list) = nil; } break; - case 87: -#line 729 "go.y" + case 88: +#line 734 "go.y" { NodeList *node; @@ -3140,15 +3134,15 @@ yyparse () } break; - case 88: -#line 740 "go.y" + case 89: +#line 745 "go.y" { markdcl(); } break; - case 89: -#line 744 "go.y" + case 90: +#line 749 "go.y" { Node *n; n = (yyvsp[(3) - (3)].node)->ntest; @@ -3158,8 +3152,8 @@ yyparse () } break; - case 90: -#line 752 "go.y" + case 91: +#line 757 "go.y" { (yyval.node) = (yyvsp[(3) - (7)].node); (yyval.node)->op = OSWITCH; @@ -3169,15 +3163,15 @@ yyparse () } break; - case 91: -#line 762 "go.y" + case 92: +#line 767 "go.y" { typesw = nod(OXXX, typesw, N); } break; - case 92: -#line 766 "go.y" + case 93: +#line 771 "go.y" { (yyval.node) = nod(OSELECT, N, N); (yyval.node)->lineno = typesw->lineno; @@ -3186,155 +3180,155 @@ yyparse () } break; - case 94: -#line 779 "go.y" + case 95: +#line 784 "go.y" { (yyval.node) = nod(OOROR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 95: -#line 783 "go.y" + case 96: +#line 788 "go.y" { (yyval.node) = nod(OANDAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 96: -#line 787 "go.y" + case 97: +#line 792 "go.y" { (yyval.node) = nod(OEQ, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 97: -#line 791 "go.y" + case 98: +#line 796 "go.y" { (yyval.node) = nod(ONE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 98: -#line 795 "go.y" + case 99: +#line 800 "go.y" { (yyval.node) = nod(OLT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 99: -#line 799 "go.y" + case 100: +#line 804 "go.y" { (yyval.node) = nod(OLE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 100: -#line 803 "go.y" + case 101: +#line 808 "go.y" { (yyval.node) = nod(OGE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 101: -#line 807 "go.y" + case 102: +#line 812 "go.y" { (yyval.node) = nod(OGT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 102: -#line 811 "go.y" + case 103: +#line 816 "go.y" { (yyval.node) = nod(OADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 103: -#line 815 "go.y" + case 104: +#line 820 "go.y" { (yyval.node) = nod(OSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 104: -#line 819 "go.y" + case 105: +#line 824 "go.y" { (yyval.node) = nod(OOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 105: -#line 823 "go.y" + case 106: +#line 828 "go.y" { (yyval.node) = nod(OXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 106: -#line 827 "go.y" + case 107: +#line 832 "go.y" { (yyval.node) = nod(OMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 107: -#line 831 "go.y" + case 108: +#line 836 "go.y" { (yyval.node) = nod(ODIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 108: -#line 835 "go.y" + case 109: +#line 840 "go.y" { (yyval.node) = nod(OMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 109: -#line 839 "go.y" + case 110: +#line 844 "go.y" { (yyval.node) = nod(OAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 110: -#line 843 "go.y" + case 111: +#line 848 "go.y" { (yyval.node) = nod(OANDNOT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 111: -#line 847 "go.y" + case 112: +#line 852 "go.y" { (yyval.node) = nod(OLSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 112: -#line 851 "go.y" + case 113: +#line 856 "go.y" { (yyval.node) = nod(ORSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 113: -#line 856 "go.y" + case 114: +#line 861 "go.y" { (yyval.node) = nod(OSEND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 115: -#line 863 "go.y" + case 116: +#line 868 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; - case 116: -#line 867 "go.y" + case 117: +#line 872 "go.y" { if((yyvsp[(2) - (2)].node)->op == OCOMPLIT) { // Special case for &T{...}: turn into (*T){...}. @@ -3347,66 +3341,66 @@ yyparse () } break; - case 117: -#line 878 "go.y" + case 118: +#line 883 "go.y" { (yyval.node) = nod(OPLUS, (yyvsp[(2) - (2)].node), N); } break; - case 118: -#line 882 "go.y" + case 119: +#line 887 "go.y" { (yyval.node) = nod(OMINUS, (yyvsp[(2) - (2)].node), N); } break; - case 119: -#line 886 "go.y" + case 120: +#line 891 "go.y" { (yyval.node) = nod(ONOT, (yyvsp[(2) - (2)].node), N); } break; - case 120: -#line 890 "go.y" + case 121: +#line 895 "go.y" { yyerror("the bitwise complement operator is ^"); (yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N); } break; - case 121: -#line 895 "go.y" + case 122: +#line 900 "go.y" { (yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N); } break; - case 122: -#line 899 "go.y" + case 123: +#line 904 "go.y" { (yyval.node) = nod(ORECV, (yyvsp[(2) - (2)].node), N); } break; - case 123: -#line 909 "go.y" + case 124: +#line 914 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (3)].node), N); } break; - case 124: -#line 913 "go.y" + case 125: +#line 918 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N); (yyval.node)->list = (yyvsp[(3) - (5)].list); } break; - case 125: -#line 918 "go.y" + case 126: +#line 923 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (6)].node), N); (yyval.node)->list = (yyvsp[(3) - (6)].list); @@ -3414,15 +3408,15 @@ yyparse () } break; - case 126: -#line 926 "go.y" + case 127: +#line 931 "go.y" { (yyval.node) = nodlit((yyvsp[(1) - (1)].val)); } break; - case 128: -#line 931 "go.y" + case 129: +#line 936 "go.y" { if((yyvsp[(1) - (3)].node)->op == OPACK) { Sym *s; @@ -3435,36 +3429,36 @@ yyparse () } break; - case 129: -#line 942 "go.y" + case 130: +#line 947 "go.y" { (yyval.node) = nod(ODOTTYPE, (yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node)); } break; - case 130: -#line 946 "go.y" + case 131: +#line 951 "go.y" { (yyval.node) = nod(OTYPESW, N, (yyvsp[(1) - (5)].node)); } break; - case 131: -#line 950 "go.y" + case 132: +#line 955 "go.y" { (yyval.node) = nod(OINDEX, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; - case 132: -#line 954 "go.y" + case 133: +#line 959 "go.y" { (yyval.node) = nod(OSLICE, (yyvsp[(1) - (6)].node), nod(OKEY, (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node))); } break; - case 133: -#line 958 "go.y" + case 134: +#line 963 "go.y" { if((yyvsp[(5) - (8)].node) == N) yyerror("middle index required in 3-index slice"); @@ -3474,8 +3468,8 @@ yyparse () } break; - case 135: -#line 967 "go.y" + case 136: +#line 972 "go.y" { // conversion (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N); @@ -3483,8 +3477,8 @@ yyparse () } break; - case 136: -#line 973 "go.y" + case 137: +#line 978 "go.y" { (yyval.node) = (yyvsp[(3) - (5)].node); (yyval.node)->right = (yyvsp[(1) - (5)].node); @@ -3493,8 +3487,8 @@ yyparse () } break; - case 137: -#line 980 "go.y" + case 138: +#line 985 "go.y" { (yyval.node) = (yyvsp[(3) - (5)].node); (yyval.node)->right = (yyvsp[(1) - (5)].node); @@ -3502,8 +3496,8 @@ yyparse () } break; - case 138: -#line 986 "go.y" + case 139: +#line 991 "go.y" { yyerror("cannot parenthesize type in composite literal"); (yyval.node) = (yyvsp[(5) - (7)].node); @@ -3512,8 +3506,8 @@ yyparse () } break; - case 140: -#line 995 "go.y" + case 141: +#line 1000 "go.y" { // composite expression. // make node early so we get the right line number. @@ -3521,15 +3515,15 @@ yyparse () } break; - case 141: -#line 1003 "go.y" + case 142: +#line 1008 "go.y" { (yyval.node) = nod(OKEY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; - case 142: -#line 1009 "go.y" + case 143: +#line 1014 "go.y" { // These nodes do not carry line numbers. // Since a composite literal commonly spans several lines, @@ -3548,24 +3542,24 @@ yyparse () } break; - case 143: -#line 1026 "go.y" + case 144: +#line 1031 "go.y" { (yyval.node) = (yyvsp[(2) - (4)].node); (yyval.node)->list = (yyvsp[(3) - (4)].list); } break; - case 145: -#line 1034 "go.y" + case 146: +#line 1039 "go.y" { (yyval.node) = (yyvsp[(2) - (4)].node); (yyval.node)->list = (yyvsp[(3) - (4)].list); } break; - case 147: -#line 1042 "go.y" + case 148: +#line 1047 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); @@ -3584,22 +3578,22 @@ yyparse () } break; - case 151: -#line 1068 "go.y" + case 152: +#line 1073 "go.y" { (yyval.i) = LBODY; } break; - case 152: -#line 1072 "go.y" + case 153: +#line 1077 "go.y" { (yyval.i) = '{'; } break; - case 153: -#line 1083 "go.y" + case 154: +#line 1088 "go.y" { if((yyvsp[(1) - (1)].sym) == S) (yyval.node) = N; @@ -3608,22 +3602,22 @@ yyparse () } break; - case 154: -#line 1092 "go.y" + case 155: +#line 1097 "go.y" { (yyval.node) = dclname((yyvsp[(1) - (1)].sym)); } break; - case 155: -#line 1097 "go.y" + case 156: +#line 1102 "go.y" { (yyval.node) = N; } break; - case 157: -#line 1104 "go.y" + case 158: +#line 1109 "go.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); // during imports, unqualified non-exported identifiers are from builtinpkg @@ -3632,15 +3626,15 @@ yyparse () } break; - case 159: -#line 1112 "go.y" + case 160: +#line 1117 "go.y" { (yyval.sym) = S; } break; - case 160: -#line 1118 "go.y" + case 161: +#line 1123 "go.y" { Pkg *p; @@ -3655,8 +3649,8 @@ yyparse () } break; - case 161: -#line 1131 "go.y" + case 162: +#line 1136 "go.y" { Pkg *p; @@ -3671,8 +3665,8 @@ yyparse () } break; - case 162: -#line 1146 "go.y" + case 163: +#line 1151 "go.y" { (yyval.node) = oldname((yyvsp[(1) - (1)].sym)); if((yyval.node)->pack != N) @@ -3680,44 +3674,44 @@ yyparse () } break; - case 164: -#line 1166 "go.y" + case 165: +#line 1171 "go.y" { yyerror("final argument in variadic function missing type"); (yyval.node) = nod(ODDD, typenod(typ(TINTER)), N); } break; - case 165: -#line 1171 "go.y" + case 166: +#line 1176 "go.y" { (yyval.node) = nod(ODDD, (yyvsp[(2) - (2)].node), N); } break; - case 171: -#line 1182 "go.y" + case 172: +#line 1187 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 175: -#line 1191 "go.y" + case 176: +#line 1196 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; - case 180: -#line 1201 "go.y" + case 181: +#line 1206 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; - case 190: -#line 1222 "go.y" + case 191: +#line 1227 "go.y" { if((yyvsp[(1) - (3)].node)->op == OPACK) { Sym *s; @@ -3730,61 +3724,61 @@ yyparse () } break; - case 191: -#line 1235 "go.y" + case 192: +#line 1240 "go.y" { (yyval.node) = nod(OTARRAY, (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node)); } break; - case 192: -#line 1239 "go.y" + case 193: +#line 1244 "go.y" { // array literal of nelem (yyval.node) = nod(OTARRAY, nod(ODDD, N, N), (yyvsp[(4) - (4)].node)); } break; - case 193: -#line 1244 "go.y" + case 194: +#line 1249 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(2) - (2)].node), N); (yyval.node)->etype = Cboth; } break; - case 194: -#line 1249 "go.y" + case 195: +#line 1254 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N); (yyval.node)->etype = Csend; } break; - case 195: -#line 1254 "go.y" + case 196: +#line 1259 "go.y" { (yyval.node) = nod(OTMAP, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); } break; - case 198: -#line 1262 "go.y" + case 199: +#line 1267 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; - case 199: -#line 1268 "go.y" + case 200: +#line 1273 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N); (yyval.node)->etype = Crecv; } break; - case 200: -#line 1275 "go.y" + case 201: +#line 1280 "go.y" { (yyval.node) = nod(OTSTRUCT, N, N); (yyval.node)->list = (yyvsp[(3) - (5)].list); @@ -3792,16 +3786,16 @@ yyparse () } break; - case 201: -#line 1281 "go.y" + case 202: +#line 1286 "go.y" { (yyval.node) = nod(OTSTRUCT, N, N); fixlbrace((yyvsp[(2) - (3)].i)); } break; - case 202: -#line 1288 "go.y" + case 203: +#line 1293 "go.y" { (yyval.node) = nod(OTINTER, N, N); (yyval.node)->list = (yyvsp[(3) - (5)].list); @@ -3809,16 +3803,16 @@ yyparse () } break; - case 203: -#line 1294 "go.y" + case 204: +#line 1299 "go.y" { (yyval.node) = nod(OTINTER, N, N); fixlbrace((yyvsp[(2) - (3)].i)); } break; - case 204: -#line 1305 "go.y" + case 205: +#line 1310 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); if((yyval.node) == N) @@ -3833,8 +3827,8 @@ yyparse () } break; - case 205: -#line 1320 "go.y" + case 206: +#line 1325 "go.y" { Node *t; @@ -3865,8 +3859,8 @@ yyparse () } break; - case 206: -#line 1349 "go.y" + case 207: +#line 1354 "go.y" { Node *rcvr, *t; @@ -3904,8 +3898,8 @@ yyparse () } break; - case 207: -#line 1387 "go.y" + case 208: +#line 1392 "go.y" { Sym *s; Type *t; @@ -3932,8 +3926,8 @@ yyparse () } break; - case 208: -#line 1412 "go.y" + case 209: +#line 1417 "go.y" { (yyval.node) = methodname1(newname((yyvsp[(4) - (8)].sym)), (yyvsp[(2) - (8)].list)->n->right); (yyval.node)->type = functype((yyvsp[(2) - (8)].list)->n, (yyvsp[(6) - (8)].list), (yyvsp[(8) - (8)].list)); @@ -3951,8 +3945,8 @@ yyparse () } break; - case 209: -#line 1430 "go.y" + case 210: +#line 1435 "go.y" { (yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1); (yyval.node) = nod(OTFUNC, N, N); @@ -3961,15 +3955,15 @@ yyparse () } break; - case 210: -#line 1438 "go.y" + case 211: +#line 1443 "go.y" { (yyval.list) = nil; } break; - case 211: -#line 1442 "go.y" + case 212: +#line 1447 "go.y" { (yyval.list) = (yyvsp[(2) - (3)].list); if((yyval.list) == nil) @@ -3977,59 +3971,59 @@ yyparse () } break; - case 212: -#line 1450 "go.y" + case 213: +#line 1455 "go.y" { (yyval.list) = nil; } break; - case 213: -#line 1454 "go.y" + case 214: +#line 1459 "go.y" { (yyval.list) = list1(nod(ODCLFIELD, N, (yyvsp[(1) - (1)].node))); } break; - case 214: -#line 1458 "go.y" + case 215: +#line 1463 "go.y" { (yyvsp[(2) - (3)].list) = checkarglist((yyvsp[(2) - (3)].list), 0); (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 215: -#line 1465 "go.y" + case 216: +#line 1470 "go.y" { closurehdr((yyvsp[(1) - (1)].node)); } break; - case 216: -#line 1471 "go.y" + case 217: +#line 1476 "go.y" { (yyval.node) = closurebody((yyvsp[(3) - (4)].list)); fixlbrace((yyvsp[(2) - (4)].i)); } break; - case 217: -#line 1476 "go.y" + case 218: +#line 1481 "go.y" { (yyval.node) = closurebody(nil); } break; - case 218: -#line 1487 "go.y" + case 219: +#line 1492 "go.y" { (yyval.list) = nil; } break; - case 219: -#line 1491 "go.y" + case 220: +#line 1496 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list)); if(nsyntaxerrors == 0) @@ -4040,57 +4034,57 @@ yyparse () } break; - case 221: -#line 1503 "go.y" + case 222: +#line 1508 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 223: -#line 1510 "go.y" + case 224: +#line 1515 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 224: -#line 1516 "go.y" + case 225: +#line 1521 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 225: -#line 1520 "go.y" + case 226: +#line 1525 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 227: -#line 1527 "go.y" + case 228: +#line 1532 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; - case 228: -#line 1533 "go.y" + case 229: +#line 1538 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 229: -#line 1537 "go.y" + case 230: +#line 1542 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 230: -#line 1543 "go.y" + case 231: +#line 1548 "go.y" { NodeList *l; @@ -4115,16 +4109,16 @@ yyparse () } break; - case 231: -#line 1566 "go.y" + case 232: +#line 1571 "go.y" { (yyvsp[(1) - (2)].node)->val = (yyvsp[(2) - (2)].val); (yyval.list) = list1((yyvsp[(1) - (2)].node)); } break; - case 232: -#line 1571 "go.y" + case 233: +#line 1576 "go.y" { (yyvsp[(2) - (4)].node)->val = (yyvsp[(4) - (4)].val); (yyval.list) = list1((yyvsp[(2) - (4)].node)); @@ -4132,8 +4126,8 @@ yyparse () } break; - case 233: -#line 1577 "go.y" + case 234: +#line 1582 "go.y" { (yyvsp[(2) - (3)].node)->right = nod(OIND, (yyvsp[(2) - (3)].node)->right, N); (yyvsp[(2) - (3)].node)->val = (yyvsp[(3) - (3)].val); @@ -4141,8 +4135,8 @@ yyparse () } break; - case 234: -#line 1583 "go.y" + case 235: +#line 1588 "go.y" { (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N); (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val); @@ -4151,8 +4145,8 @@ yyparse () } break; - case 235: -#line 1590 "go.y" + case 236: +#line 1595 "go.y" { (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N); (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val); @@ -4161,8 +4155,8 @@ yyparse () } break; - case 236: -#line 1599 "go.y" + case 237: +#line 1604 "go.y" { Node *n; @@ -4173,8 +4167,8 @@ yyparse () } break; - case 237: -#line 1608 "go.y" + case 238: +#line 1613 "go.y" { Pkg *pkg; @@ -4189,38 +4183,38 @@ yyparse () } break; - case 238: -#line 1623 "go.y" + case 239: +#line 1628 "go.y" { (yyval.node) = embedded((yyvsp[(1) - (1)].sym), localpkg); } break; - case 239: -#line 1629 "go.y" + case 240: +#line 1634 "go.y" { (yyval.node) = nod(ODCLFIELD, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ifacedcl((yyval.node)); } break; - case 240: -#line 1634 "go.y" + case 241: +#line 1639 "go.y" { (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(1) - (1)].sym))); } break; - case 241: -#line 1638 "go.y" + case 242: +#line 1643 "go.y" { (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(2) - (3)].sym))); yyerror("cannot parenthesize embedded type"); } break; - case 242: -#line 1645 "go.y" + case 243: +#line 1650 "go.y" { // without func keyword (yyvsp[(2) - (4)].list) = checkarglist((yyvsp[(2) - (4)].list), 1); @@ -4230,8 +4224,8 @@ yyparse () } break; - case 244: -#line 1659 "go.y" + case 245: +#line 1664 "go.y" { (yyval.node) = nod(ONONAME, N, N); (yyval.node)->sym = (yyvsp[(1) - (2)].sym); @@ -4239,8 +4233,8 @@ yyparse () } break; - case 245: -#line 1665 "go.y" + case 246: +#line 1670 "go.y" { (yyval.node) = nod(ONONAME, N, N); (yyval.node)->sym = (yyvsp[(1) - (2)].sym); @@ -4248,65 +4242,65 @@ yyparse () } break; - case 247: -#line 1674 "go.y" + case 248: +#line 1679 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 248: -#line 1678 "go.y" + case 249: +#line 1683 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 249: -#line 1683 "go.y" + case 250: +#line 1688 "go.y" { (yyval.list) = nil; } break; - case 250: -#line 1687 "go.y" + case 251: +#line 1692 "go.y" { (yyval.list) = (yyvsp[(1) - (2)].list); } break; - case 251: -#line 1695 "go.y" + case 252: +#line 1700 "go.y" { (yyval.node) = N; } break; - case 253: -#line 1700 "go.y" + case 254: +#line 1705 "go.y" { (yyval.node) = liststmt((yyvsp[(1) - (1)].list)); } break; - case 255: -#line 1705 "go.y" + case 256: +#line 1710 "go.y" { (yyval.node) = N; } break; - case 261: -#line 1716 "go.y" + case 262: +#line 1721 "go.y" { (yyvsp[(1) - (2)].node) = nod(OLABEL, (yyvsp[(1) - (2)].node), N); (yyvsp[(1) - (2)].node)->sym = dclstack; // context, for goto restrictions } break; - case 262: -#line 1721 "go.y" + case 263: +#line 1726 "go.y" { NodeList *l; @@ -4318,8 +4312,8 @@ yyparse () } break; - case 263: -#line 1731 "go.y" + case 264: +#line 1736 "go.y" { // will be converted to OFALL (yyval.node) = nod(OXFALL, N, N); @@ -4327,44 +4321,44 @@ yyparse () } break; - case 264: -#line 1737 "go.y" + case 265: +#line 1742 "go.y" { (yyval.node) = nod(OBREAK, (yyvsp[(2) - (2)].node), N); } break; - case 265: -#line 1741 "go.y" + case 266: +#line 1746 "go.y" { (yyval.node) = nod(OCONTINUE, (yyvsp[(2) - (2)].node), N); } break; - case 266: -#line 1745 "go.y" + case 267: +#line 1750 "go.y" { (yyval.node) = nod(OPROC, (yyvsp[(2) - (2)].node), N); } break; - case 267: -#line 1749 "go.y" + case 268: +#line 1754 "go.y" { (yyval.node) = nod(ODEFER, (yyvsp[(2) - (2)].node), N); } break; - case 268: -#line 1753 "go.y" + case 269: +#line 1758 "go.y" { (yyval.node) = nod(OGOTO, (yyvsp[(2) - (2)].node), N); (yyval.node)->sym = dclstack; // context, for goto restrictions } break; - case 269: -#line 1758 "go.y" + case 270: +#line 1763 "go.y" { (yyval.node) = nod(ORETURN, N, N); (yyval.node)->list = (yyvsp[(2) - (2)].list); @@ -4383,8 +4377,8 @@ yyparse () } break; - case 270: -#line 1777 "go.y" + case 271: +#line 1782 "go.y" { (yyval.list) = nil; if((yyvsp[(1) - (1)].node) != N) @@ -4392,8 +4386,8 @@ yyparse () } break; - case 271: -#line 1783 "go.y" + case 272: +#line 1788 "go.y" { (yyval.list) = (yyvsp[(1) - (3)].list); if((yyvsp[(3) - (3)].node) != N) @@ -4401,190 +4395,190 @@ yyparse () } break; - case 272: -#line 1791 "go.y" + case 273: +#line 1796 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 273: -#line 1795 "go.y" + case 274: +#line 1800 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 274: -#line 1801 "go.y" + case 275: +#line 1806 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 275: -#line 1805 "go.y" + case 276: +#line 1810 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 276: -#line 1811 "go.y" + case 277: +#line 1816 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 277: -#line 1815 "go.y" + case 278: +#line 1820 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 278: -#line 1821 "go.y" + case 279: +#line 1826 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 279: -#line 1825 "go.y" + case 280: +#line 1830 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 280: -#line 1834 "go.y" + case 281: +#line 1839 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 281: -#line 1838 "go.y" + case 282: +#line 1843 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 282: -#line 1842 "go.y" + case 283: +#line 1847 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 283: -#line 1846 "go.y" + case 284: +#line 1851 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 284: -#line 1851 "go.y" + case 285: +#line 1856 "go.y" { (yyval.list) = nil; } break; - case 285: -#line 1855 "go.y" + case 286: +#line 1860 "go.y" { (yyval.list) = (yyvsp[(1) - (2)].list); } break; - case 290: -#line 1869 "go.y" + case 291: +#line 1874 "go.y" { (yyval.node) = N; } break; - case 292: -#line 1875 "go.y" + case 293: +#line 1880 "go.y" { (yyval.list) = nil; } break; - case 294: -#line 1881 "go.y" + case 295: +#line 1886 "go.y" { (yyval.node) = N; } break; - case 296: -#line 1887 "go.y" + case 297: +#line 1892 "go.y" { (yyval.list) = nil; } break; - case 298: -#line 1893 "go.y" + case 299: +#line 1898 "go.y" { (yyval.list) = nil; } break; - case 300: -#line 1899 "go.y" + case 301: +#line 1904 "go.y" { (yyval.list) = nil; } break; - case 302: -#line 1905 "go.y" + case 303: +#line 1910 "go.y" { (yyval.val).ctype = CTxxx; } break; - case 304: -#line 1915 "go.y" + case 305: +#line 1920 "go.y" { importimport((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].val).u.sval); } break; - case 305: -#line 1919 "go.y" + case 306: +#line 1924 "go.y" { importvar((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].type)); } break; - case 306: -#line 1923 "go.y" + case 307: +#line 1928 "go.y" { importconst((yyvsp[(2) - (5)].sym), types[TIDEAL], (yyvsp[(4) - (5)].node)); } break; - case 307: -#line 1927 "go.y" + case 308: +#line 1932 "go.y" { importconst((yyvsp[(2) - (6)].sym), (yyvsp[(3) - (6)].type), (yyvsp[(5) - (6)].node)); } break; - case 308: -#line 1931 "go.y" + case 309: +#line 1936 "go.y" { importtype((yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].type)); } break; - case 309: -#line 1935 "go.y" + case 310: +#line 1940 "go.y" { if((yyvsp[(2) - (4)].node) == N) { dclcontext = PEXTERN; // since we skip the funcbody below @@ -4604,31 +4598,31 @@ yyparse () } break; - case 310: -#line 1955 "go.y" + case 311: +#line 1960 "go.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); structpkg = (yyval.sym)->pkg; } break; - case 311: -#line 1962 "go.y" + case 312: +#line 1967 "go.y" { (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym)); importsym((yyvsp[(1) - (1)].sym), OTYPE); } break; - case 317: -#line 1982 "go.y" + case 318: +#line 1987 "go.y" { (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym)); } break; - case 318: -#line 1986 "go.y" + case 319: +#line 1991 "go.y" { // predefined name like uint8 (yyvsp[(1) - (1)].sym) = pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg); @@ -4640,50 +4634,50 @@ yyparse () } break; - case 319: -#line 1996 "go.y" + case 320: +#line 2001 "go.y" { (yyval.type) = aindex(N, (yyvsp[(3) - (3)].type)); } break; - case 320: -#line 2000 "go.y" + case 321: +#line 2005 "go.y" { (yyval.type) = aindex(nodlit((yyvsp[(2) - (4)].val)), (yyvsp[(4) - (4)].type)); } break; - case 321: -#line 2004 "go.y" + case 322: +#line 2009 "go.y" { (yyval.type) = maptype((yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].type)); } break; - case 322: -#line 2008 "go.y" + case 323: +#line 2013 "go.y" { (yyval.type) = tostruct((yyvsp[(3) - (4)].list)); } break; - case 323: -#line 2012 "go.y" + case 324: +#line 2017 "go.y" { (yyval.type) = tointerface((yyvsp[(3) - (4)].list)); } break; - case 324: -#line 2016 "go.y" + case 325: +#line 2021 "go.y" { (yyval.type) = ptrto((yyvsp[(2) - (2)].type)); } break; - case 325: -#line 2020 "go.y" + case 326: +#line 2025 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(2) - (2)].type); @@ -4691,8 +4685,8 @@ yyparse () } break; - case 326: -#line 2026 "go.y" + case 327: +#line 2031 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (4)].type); @@ -4700,8 +4694,8 @@ yyparse () } break; - case 327: -#line 2032 "go.y" + case 328: +#line 2037 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (3)].type); @@ -4709,8 +4703,8 @@ yyparse () } break; - case 328: -#line 2040 "go.y" + case 329: +#line 2045 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (3)].type); @@ -4718,15 +4712,15 @@ yyparse () } break; - case 329: -#line 2048 "go.y" + case 330: +#line 2053 "go.y" { (yyval.type) = functype(nil, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list)); } break; - case 330: -#line 2054 "go.y" + case 331: +#line 2059 "go.y" { (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(2) - (3)].type))); if((yyvsp[(1) - (3)].sym)) @@ -4735,8 +4729,8 @@ yyparse () } break; - case 331: -#line 2061 "go.y" + case 332: +#line 2066 "go.y" { Type *t; @@ -4752,8 +4746,8 @@ yyparse () } break; - case 332: -#line 2077 "go.y" + case 333: +#line 2082 "go.y" { Sym *s; Pkg *p; @@ -4775,50 +4769,50 @@ yyparse () } break; - case 333: -#line 2099 "go.y" + case 334: +#line 2104 "go.y" { (yyval.node) = nod(ODCLFIELD, newname((yyvsp[(1) - (5)].sym)), typenod(functype(fakethis(), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list)))); } break; - case 334: -#line 2103 "go.y" + case 335: +#line 2108 "go.y" { (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type))); } break; - case 335: -#line 2108 "go.y" + case 336: +#line 2113 "go.y" { (yyval.list) = nil; } break; - case 337: -#line 2115 "go.y" + case 338: +#line 2120 "go.y" { (yyval.list) = (yyvsp[(2) - (3)].list); } break; - case 338: -#line 2119 "go.y" + case 339: +#line 2124 "go.y" { (yyval.list) = list1(nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type)))); } break; - case 339: -#line 2129 "go.y" + case 340: +#line 2134 "go.y" { (yyval.node) = nodlit((yyvsp[(1) - (1)].val)); } break; - case 340: -#line 2133 "go.y" + case 341: +#line 2138 "go.y" { (yyval.node) = nodlit((yyvsp[(2) - (2)].val)); switch((yyval.node)->val.ctype){ @@ -4839,8 +4833,8 @@ yyparse () } break; - case 341: -#line 2152 "go.y" + case 342: +#line 2157 "go.y" { (yyval.node) = oldname(pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg)); if((yyval.node)->op != OLITERAL) @@ -4848,8 +4842,8 @@ yyparse () } break; - case 343: -#line 2161 "go.y" + case 344: +#line 2166 "go.y" { if((yyvsp[(2) - (5)].node)->val.ctype == CTRUNE && (yyvsp[(4) - (5)].node)->val.ctype == CTINT) { (yyval.node) = (yyvsp[(2) - (5)].node); @@ -4862,43 +4856,43 @@ yyparse () } break; - case 346: -#line 2177 "go.y" + case 347: +#line 2182 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 347: -#line 2181 "go.y" + case 348: +#line 2186 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 348: -#line 2187 "go.y" + case 349: +#line 2192 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 349: -#line 2191 "go.y" + case 350: +#line 2196 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; - case 350: -#line 2197 "go.y" + case 351: +#line 2202 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; - case 351: -#line 2201 "go.y" + case 352: +#line 2206 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } @@ -4906,7 +4900,7 @@ yyparse () /* Line 1267 of yacc.c. */ -#line 4911 "y.tab.c" +#line 4905 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -5120,7 +5114,7 @@ yyparse () } -#line 2205 "go.y" +#line 2210 "go.y" static void diff --git a/src/cmd/gc/yerr.h b/src/cmd/gc/yerr.h index fa3e9f27cc..d0dd639ff3 100644 --- a/src/cmd/gc/yerr.h +++ b/src/cmd/gc/yerr.h @@ -20,16 +20,16 @@ static struct { {32, ';', "missing import path; require quoted string"}, - {378, ';', + {380, ';', "missing { after if clause"}, - {399, ';', + {401, ';', "missing { after switch clause"}, - {238, ';', + {239, ';', "missing { after for clause"}, - {476, LBODY, + {478, LBODY, "missing { after for clause"}, {22, '{', @@ -47,33 +47,33 @@ static struct { {37, ',', "unexpected comma in channel type"}, - {439, LELSE, + {441, LELSE, "unexpected semicolon or newline before else"}, - {258, ',', + {259, ',', "name list not allowed in interface type"}, - {238, LVAR, + {239, LVAR, "var declaration not allowed in for initializer"}, {65, '{', "unexpected { at end of statement"}, - {377, '{', + {379, '{', "unexpected { at end of statement"}, {126, ';', "argument to go/defer must be function call"}, - {426, ';', + {428, ';', "need trailing comma before newline in composite literal"}, - {437, ';', + {439, ';', "need trailing comma before newline in composite literal"}, {113, LNAME, "nested func not allowed"}, - {645, ';', + {647, ';', "else must be followed by if or statement block"} }; diff --git a/test/bench/shootout/chameneosredux.go b/test/bench/shootout/chameneosredux.go index 3395798620..72ce7dd138 100644 --- a/test/bench/shootout/chameneosredux.go +++ b/test/bench/shootout/chameneosredux.go @@ -123,7 +123,7 @@ func pallmall(cols []int) { fmt.Println(msg) tot := 0 // wait for all results - for _ = range cols { + for range cols { result := <-ended tot += result.met fmt.Printf("%v%v\n", result.met, spell(result.same, true)) diff --git a/test/chan/perm.go b/test/chan/perm.go index 7e152c5eb5..919fa30fbf 100644 --- a/test/chan/perm.go +++ b/test/chan/perm.go @@ -56,6 +56,9 @@ func main() { for _ = range cs {// ERROR "receive" } + for range cs {// ERROR "receive" + } + close(c) close(cs) close(cr) // ERROR "receive" diff --git a/test/fixedbugs/bug173.go b/test/fixedbugs/bug173.go index 6479bb2531..3515c649bb 100644 --- a/test/fixedbugs/bug173.go +++ b/test/fixedbugs/bug173.go @@ -18,4 +18,6 @@ func main() { } for _ = range t { } + for range t { + } } diff --git a/test/fixedbugs/bug406.go b/test/fixedbugs/bug406.go index c6f8534c9b..6df3c5cae6 100644 --- a/test/fixedbugs/bug406.go +++ b/test/fixedbugs/bug406.go @@ -14,6 +14,8 @@ type matrix struct { func (a matrix) equal() bool { for _ = range a.e { } + for range a.e { + } return true } diff --git a/test/range.go b/test/range.go index 8effbe9c53..af89edac54 100644 --- a/test/range.go +++ b/test/range.go @@ -32,6 +32,13 @@ func testchan() { println("Wanted lowercase alphabet; got", s) panic("fail") } + n := 0 + for range seq('a', 'z') { + n++ + } + if n != 26 { + println("testchan wrong count", n, "want 26") + } } // test that range over slice only evaluates @@ -87,6 +94,22 @@ func testslice1() { } } +func testslice2() { + n := 0 + nmake = 0 + for range makeslice() { + n++ + } + if nmake != 1 { + println("range called makeslice", nmake, "times") + panic("fail") + } + if n != 5 { + println("wrong count ranging over makeslice", n) + panic("fail") + } +} + // test that range over array only evaluates // the expression after "range" once. @@ -127,6 +150,22 @@ func testarray1() { } } +func testarray2() { + n := 0 + nmake = 0 + for range makearray() { + n++ + } + if nmake != 1 { + println("range called makearray", nmake, "times") + panic("fail") + } + if n != 5 { + println("wrong count ranging over makearray", n) + panic("fail") + } +} + func makearrayptr() *[5]int { nmake++ return &[5]int{1, 2, 3, 4, 5} @@ -176,6 +215,22 @@ func testarrayptr1() { } } +func testarrayptr2() { + n := 0 + nmake = 0 + for range makearrayptr() { + n++ + } + if nmake != 1 { + println("range called makearrayptr", nmake, "times") + panic("fail") + } + if n != 5 { + println("wrong count ranging over makearrayptr", n) + panic("fail") + } +} + // test that range over string only evaluates // the expression after "range" once. @@ -216,6 +271,22 @@ func teststring1() { } } +func teststring2() { + n := 0 + nmake = 0 + for range makestring() { + n++ + } + if nmake != 1 { + println("range called makestring", nmake, "times") + panic("fail") + } + if n != 5 { + println("wrong count ranging over makestring", n) + panic("fail") + } +} + // test that range over map only evaluates // the expression after "range" once. @@ -256,6 +327,22 @@ func testmap1() { } } +func testmap2() { + n := 0 + nmake = 0 + for range makemap() { + n++ + } + if nmake != 1 { + println("range called makemap", nmake, "times") + panic("fail") + } + if n != 5 { + println("wrong count ranging over makemap", n) + panic("fail") + } +} + // test that range evaluates the index and value expressions // exactly once per iteration. @@ -298,13 +385,18 @@ func main() { testchan() testarray() testarray1() + testarray2() testarrayptr() testarrayptr1() + testarrayptr2() testslice() testslice1() + testslice2() teststring() teststring1() + teststring2() testmap() testmap1() + testmap2() testcalls() } diff --git a/test/stress/maps.go b/test/stress/maps.go index d022e19ade..fc5ab05a2c 100644 --- a/test/stress/maps.go +++ b/test/stress/maps.go @@ -97,6 +97,8 @@ func (m intMap) Len() int { return len(m) } func (m intMap) RangeAll() { for _ = range m { } + for range m { + } } func stressMaps() {