cmd/gc: support x[i:j:k]
Design doc at golang.org/s/go12slice.
This is an experimental feature and may not be included in the release.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/10743046
diff --git a/src/cmd/5g/cgen.c b/src/cmd/5g/cgen.c
index 1620f41..997eae7 100644
--- a/src/cmd/5g/cgen.c
+++ b/src/cmd/5g/cgen.c
@@ -34,6 +34,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
if (res->op != ONAME || !res->addable) {
tempname(&n1, n->type);
cgen_slice(n, &n1);
@@ -629,6 +631,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
tempname(&n1, n->type);
cgen_slice(n, &n1);
agen(&n1, res);
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index 884ccff..d2b51f0 100644
--- a/src/cmd/6g/cgen.c
+++ b/src/cmd/6g/cgen.c
@@ -37,6 +37,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
if (res->op != ONAME || !res->addable) {
tempname(&n1, n->type);
cgen_slice(n, &n1);
@@ -841,6 +843,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
tempname(&n1, n->type);
cgen_slice(n, &n1);
agen(&n1, res);
diff --git a/src/cmd/8g/cgen.c b/src/cmd/8g/cgen.c
index 0294a42..9e79771 100644
--- a/src/cmd/8g/cgen.c
+++ b/src/cmd/8g/cgen.c
@@ -67,6 +67,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
if (res->op != ONAME || !res->addable) {
tempname(&n1, n->type);
cgen_slice(n, &n1);
@@ -547,6 +549,8 @@
case OSLICE:
case OSLICEARR:
case OSLICESTR:
+ case OSLICE3:
+ case OSLICE3ARR:
tempname(&n1, n->type);
cgen_slice(n, &n1);
agen(&n1, res);
diff --git a/src/cmd/gc/esc.c b/src/cmd/gc/esc.c
index 497645a..b84b66e 100644
--- a/src/cmd/gc/esc.c
+++ b/src/cmd/gc/esc.c
@@ -749,6 +749,8 @@
case ODOTTYPE2:
case OSLICE:
case OSLICEARR:
+ case OSLICE3:
+ case OSLICE3ARR:
// Conversions, field access, slice all preserve the input value.
escassign(e, dst, src->left);
break;
diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c
index c7519c9..cf9c353 100644
--- a/src/cmd/gc/fmt.c
+++ b/src/cmd/gc/fmt.c
@@ -1022,6 +1022,8 @@
[OSLICE] = 8,
[OSLICESTR] = 8,
[OSLICEARR] = 8,
+ [OSLICE3] = 8,
+ [OSLICE3ARR] = 8,
[ODOTINTER] = 8,
[ODOTMETH] = 8,
[ODOTPTR] = 8,
@@ -1295,6 +1297,8 @@
case OSLICE:
case OSLICESTR:
case OSLICEARR:
+ case OSLICE3:
+ case OSLICE3ARR:
exprfmt(f, n->left, nprec);
return fmtprint(f, "[%N]", n->right);
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 518b992..db25013 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -520,6 +520,8 @@
OSLICE, // v[1:2], typechecking may convert to a more specfic OSLICEXXX.
OSLICEARR, // a[1:2]
OSLICESTR, // s[1:2]
+ OSLICE3, // v[1:2:3], typechecking may convert to OSLICE3ARR.
+ OSLICE3ARR, // a[1:2:3]
ORECOVER, // recover
ORECV, // <-c
ORUNESTR, // string(i)
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 29cd370..ad192ac 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -23,6 +23,8 @@
#include <libc.h>
#include "go.h"
+static int isrelease = -1;
+
static void fixlbrace(int);
%}
%union {
@@ -950,6 +952,21 @@
{
$$ = nod(OSLICE, $1, nod(OKEY, $3, $5));
}
+| pexpr '[' oexpr ':' oexpr ':' oexpr ']'
+ {
+ // Make sure we don't accidentally release this experimental feature.
+ // http://golang.org/s/go12slice.
+ if(isrelease < 0)
+ isrelease = strstr(getgoversion(), "release") != nil;
+ if(isrelease)
+ yyerror("3-index slice not available in release");
+
+ if($5 == N)
+ yyerror("middle index required in 3-index slice");
+ if($7 == N)
+ yyerror("final index required in 3-index slice");
+ $$ = nod(OSLICE3, $1, nod(OKEY, $3, nod(OKEY, $5, $7)));
+ }
| pseudocall
| convtype '(' expr ocomma ')'
{
diff --git a/src/cmd/gc/racewalk.c b/src/cmd/gc/racewalk.c
index 7d5196b..dbb11d7 100644
--- a/src/cmd/gc/racewalk.c
+++ b/src/cmd/gc/racewalk.c
@@ -304,6 +304,8 @@
case OSLICE:
case OSLICEARR:
+ case OSLICE3:
+ case OSLICE3ARR:
// Seems to only lead to double instrumentation.
//racewalknode(&n->left, init, 0, 0);
goto ret;
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c
index 29fc430..d4dc081 100644
--- a/src/cmd/gc/typecheck.c
+++ b/src/cmd/gc/typecheck.c
@@ -33,6 +33,8 @@
static Node* resolve(Node*);
static void checkdefergo(Node*);
static int checkmake(Type*, char*, Node*);
+static int checksliceindex(Node*, Type*);
+static int checksliceconst(Node*, Node*);
static NodeList* typecheckdefstack;
@@ -303,7 +305,7 @@
typecheck1(Node **np, int top)
{
int et, aop, op, ptr;
- Node *n, *l, *r;
+ Node *n, *l, *r, *lo, *mid, *hi;
NodeList *args;
int ok, ntop;
Type *t, *tp, *missing, *have, *badtype;
@@ -993,54 +995,63 @@
yyerror("cannot slice %N (type %T)", l, t);
goto error;
}
- if(n->right->left != N) {
- if((t = n->right->left->type) == T)
- goto error;
- if(!isint[t->etype]) {
- yyerror("invalid slice index %N (type %T)", n->right->left, t);
+ if((lo = n->right->left) != N && checksliceindex(lo, tp) < 0)
+ goto error;
+ if((hi = n->right->right) != N && checksliceindex(hi, tp) < 0)
+ goto error;
+ if(checksliceconst(lo, hi) < 0)
+ goto error;
+ goto ret;
+
+ case OSLICE3:
+ ok |= Erv;
+ typecheck(&n->left, top);
+ typecheck(&n->right->left, Erv);
+ typecheck(&n->right->right->left, Erv);
+ typecheck(&n->right->right->right, Erv);
+ defaultlit(&n->left, T);
+ indexlit(&n->right->left);
+ indexlit(&n->right->right->left);
+ indexlit(&n->right->right->right);
+ l = n->left;
+ if(isfixedarray(l->type)) {
+ if(!islvalue(n->left)) {
+ yyerror("invalid operation %N (slice of unaddressable value)", n);
goto error;
}
- if(n->right->left->op == OLITERAL) {
- if(mpgetfix(n->right->left->val.u.xval) < 0) {
- yyerror("invalid slice index %N (index must be non-negative)", n->right->left);
- goto error;
- } else if(tp != nil && tp->bound > 0 && mpgetfix(n->right->left->val.u.xval) > tp->bound) {
- yyerror("invalid slice index %N (out of bounds for %d-element array)", n->right->left, tp->bound);
- goto error;
- } else if(mpcmpfixfix(n->right->left->val.u.xval, maxintval[TINT]) > 0) {
- yyerror("invalid slice index %N (index too large)", n->right->left);
- goto error;
- }
- }
+ n->left = nod(OADDR, n->left, N);
+ n->left->implicit = 1;
+ typecheck(&n->left, Erv);
+ l = n->left;
}
- if(n->right->right != N) {
- if((t = n->right->right->type) == T)
- goto error;
- if(!isint[t->etype]) {
- yyerror("invalid slice index %N (type %T)", n->right->right, t);
- goto error;
- }
- if(n->right->right->op == OLITERAL) {
- if(mpgetfix(n->right->right->val.u.xval) < 0) {
- yyerror("invalid slice index %N (index must be non-negative)", n->right->right);
- goto error;
- } else if(tp != nil && tp->bound > 0 && mpgetfix(n->right->right->val.u.xval) > tp->bound) {
- yyerror("invalid slice index %N (out of bounds for %d-element array)", n->right->right, tp->bound);
- goto error;
- } else if(mpcmpfixfix(n->right->right->val.u.xval, maxintval[TINT]) > 0) {
- yyerror("invalid slice index %N (index too large)", n->right->right);
- goto error;
- }
- }
- }
- if(n->right->left != N
- && n->right->right != N
- && n->right->left->op == OLITERAL
- && n->right->right->op == OLITERAL
- && mpcmpfixfix(n->right->left->val.u.xval, n->right->right->val.u.xval) > 0) {
- yyerror("inverted slice index %N > %N", n->right->left, n->right->right);
+ if((t = l->type) == T)
+ goto error;
+ tp = nil;
+ if(istype(t, TSTRING)) {
+ yyerror("invalid operation %N (3-index slice of string)", n);
goto error;
}
+ if(isptr[t->etype] && isfixedarray(t->type)) {
+ tp = t->type;
+ n->type = typ(TARRAY);
+ n->type->type = tp->type;
+ n->type->bound = -1;
+ dowidth(n->type);
+ n->op = OSLICE3ARR;
+ } else if(isslice(t)) {
+ n->type = t;
+ } else {
+ yyerror("cannot slice %N (type %T)", l, t);
+ goto error;
+ }
+ if((lo = n->right->left) != N && checksliceindex(lo, tp) < 0)
+ goto error;
+ if((mid = n->right->right->left) != N && checksliceindex(mid, tp) < 0)
+ goto error;
+ if((hi = n->right->right->right) != N && checksliceindex(hi, tp) < 0)
+ goto error;
+ if(checksliceconst(lo, hi) < 0 || checksliceconst(lo, mid) < 0 || checksliceconst(mid, hi) < 0)
+ goto error;
goto ret;
/*
@@ -1757,6 +1768,43 @@
*np = n;
}
+static int
+checksliceindex(Node *r, Type *tp)
+{
+ Type *t;
+
+ if((t = r->type) == T)
+ return -1;
+ if(!isint[t->etype]) {
+ yyerror("invalid slice index %N (type %T)", r, t);
+ return -1;
+ }
+ if(r->op == OLITERAL) {
+ if(mpgetfix(r->val.u.xval) < 0) {
+ yyerror("invalid slice index %N (index must be non-negative)", r);
+ return -1;
+ } else if(tp != nil && tp->bound > 0 && mpgetfix(r->val.u.xval) > tp->bound) {
+ yyerror("invalid slice index %N (out of bounds for %d-element array)", r, tp->bound);
+ return -1;
+ } else if(mpcmpfixfix(r->val.u.xval, maxintval[TINT]) > 0) {
+ yyerror("invalid slice index %N (index too large)", r);
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static int
+checksliceconst(Node *lo, Node *hi)
+{
+ if(lo != N && hi != N && lo->op == OLITERAL && hi->op == OLITERAL
+ && mpcmpfixfix(lo->val.u.xval, hi->val.u.xval) > 0) {
+ yyerror("invalid slice index: %N > %N", lo, hi);
+ return -1;
+ }
+ return 0;
+}
+
static void
checkdefergo(Node *n)
{
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index 893c77e..c5a5874 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -1116,6 +1116,27 @@
n->right->right = safeexpr(n->right->right, init);
n = sliceany(n, init); // chops n->right, sets n->list
goto ret;
+
+ case OSLICE3:
+ case OSLICE3ARR:
+ if(n->right == N) // already processed
+ goto ret;
+
+ walkexpr(&n->left, init);
+ // TODO the OINDEX case is a bug elsewhere that needs to be traced. it causes a crash on ([2][]int{ ... })[1][lo:hi]
+ // TODO the comment on the previous line was copied from case OSLICE. it might not even be true.
+ if(n->left->op == OINDEX)
+ n->left = copyexpr(n->left, n->left->type, init);
+ else
+ n->left = safeexpr(n->left, init);
+ walkexpr(&n->right->left, init);
+ n->right->left = safeexpr(n->right->left, init);
+ walkexpr(&n->right->right->left, init);
+ n->right->right->left = safeexpr(n->right->right->left, init);
+ walkexpr(&n->right->right->right, init);
+ n->right->right->right = safeexpr(n->right->right->right, init);
+ n = sliceany(n, init); // chops n->right, sets n->list
+ goto ret;
case OADDR:
walkexpr(&n->left, init);
@@ -2575,21 +2596,28 @@
}
-// Generate frontend part for OSLICE[ARR|STR]
+// Generate frontend part for OSLICE[3][ARR|STR]
//
static Node*
sliceany(Node* n, NodeList **init)
{
- int bounded;
- Node *src, *lb, *hb, *bound, *chk, *chk1, *chk2;
- int64 lbv, hbv, bv, w;
+ int bounded, slice3;
+ Node *src, *lb, *hb, *cb, *bound, *chk, *chk0, *chk1, *chk2;
+ int64 lbv, hbv, cbv, bv, w;
Type *bt;
// print("before sliceany: %+N\n", n);
src = n->left;
lb = n->right->left;
- hb = n->right->right;
+ slice3 = n->op == OSLICE3 || n->op == OSLICE3ARR;
+ if(slice3) {
+ hb = n->right->right->left;
+ cb = n->right->right->right;
+ } else {
+ hb = n->right->right;
+ cb = hb;
+ }
bounded = n->etype;
@@ -2610,6 +2638,13 @@
bv = mpgetfix(bound->val.u.xval);
}
+ if(isconst(cb, CTINT)) {
+ cbv = mpgetfix(cb->val.u.xval);
+ if(cbv < 0 || cbv > bv) {
+ yyerror("slice index out of bounds");
+ cbv = -1;
+ }
+ }
if(isconst(hb, CTINT)) {
hbv = mpgetfix(hb->val.u.xval);
if(hbv < 0 || hbv > bv) {
@@ -2631,10 +2666,13 @@
// generate
// if hb > bound || lb > hb { panicslice() }
chk = N;
+ chk0 = N;
chk1 = N;
chk2 = N;
bt = types[simtype[TUINT]];
+ if(cb != N && cb->type->width > 4)
+ bt = types[TUINT64];
if(hb != N && hb->type->width > 4)
bt = types[TUINT64];
if(lb != N && lb->type->width > 4)
@@ -2642,10 +2680,26 @@
bound = cheapexpr(conv(bound, bt), init);
+ if(cb != N) {
+ cb = cheapexpr(conv(cb, bt), init);
+ if(!bounded)
+ chk0 = nod(OLT, bound, cb);
+ } else if(slice3) {
+ // When we figure out what this means, implement it.
+ fatal("slice3 with cb == N"); // rejected by parser
+ }
+
if(hb != N) {
hb = cheapexpr(conv(hb, bt), init);
- if(!bounded)
- chk1 = nod(OLT, bound, hb);
+ if(!bounded) {
+ if(cb != N)
+ chk1 = nod(OLT, cb, hb);
+ else
+ chk1 = nod(OLT, bound, hb);
+ }
+ } else if(slice3) {
+ // When we figure out what this means, implement it.
+ fatal("slice3 with hb == N"); // rejected by parser
} else if(n->op == OSLICEARR) {
hb = bound;
} else {
@@ -2661,11 +2715,17 @@
chk2 = nod(OLT, hb, lb);
}
- if(chk1 != N || chk2 != N) {
+ if(chk0 != N || chk1 != N || chk2 != N) {
chk = nod(OIF, N, N);
chk->nbody = list1(mkcall("panicslice", T, init));
- if(chk1 != N)
- chk->ntest = chk1;
+ if(chk0 != N)
+ chk->ntest = chk0;
+ if(chk1 != N) {
+ if(chk->ntest == N)
+ chk->ntest = chk1;
+ else
+ chk->ntest = nod(OOROR, chk->ntest, chk1);
+ }
if(chk2 != N) {
if(chk->ntest == N)
chk->ntest = chk2;
@@ -2683,10 +2743,12 @@
// cap = bound [ - lo ]
n->right = N;
n->list = nil;
+ if(!slice3)
+ cb = bound;
if(lb == N)
- bound = conv(bound, types[simtype[TUINT]]);
+ bound = conv(cb, types[simtype[TUINT]]);
else
- bound = nod(OSUB, conv(bound, types[simtype[TUINT]]), conv(lb, types[simtype[TUINT]]));
+ bound = nod(OSUB, conv(cb, types[simtype[TUINT]]), conv(lb, types[simtype[TUINT]]));
typecheck(&bound, Erv);
walkexpr(&bound, init);
n->list = list(n->list, bound);
diff --git a/src/cmd/gc/y.tab.c b/src/cmd/gc/y.tab.c
index 21c67e8..ef1c2c6 100644
--- a/src/cmd/gc/y.tab.c
+++ b/src/cmd/gc/y.tab.c
@@ -440,16 +440,16 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 4
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2194
+#define YYLAST 2198
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 76
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 142
/* YYNRULES -- Number of rules. */
-#define YYNRULES 349
+#define YYNRULES 350
/* YYNRULES -- Number of states. */
-#define YYNSTATES 663
+#define YYNSTATES 666
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -512,28 +512,29 @@
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, 459, 465, 471, 477, 485, 487,
- 488, 492, 494, 499, 501, 506, 508, 512, 514, 516,
- 518, 520, 522, 524, 526, 527, 529, 531, 533, 535,
- 540, 542, 544, 546, 549, 551, 553, 555, 557, 559,
- 563, 565, 567, 569, 572, 574, 576, 578, 580, 584,
- 586, 588, 590, 592, 594, 596, 598, 600, 602, 606,
- 611, 616, 619, 623, 629, 631, 633, 636, 640, 646,
- 650, 656, 660, 664, 670, 679, 685, 694, 700, 701,
- 705, 706, 708, 712, 714, 719, 722, 723, 727, 729,
- 733, 735, 739, 741, 745, 747, 751, 753, 757, 761,
- 764, 769, 773, 779, 785, 787, 791, 793, 796, 798,
- 802, 807, 809, 812, 815, 817, 819, 823, 824, 827,
- 828, 830, 832, 834, 836, 838, 840, 842, 844, 846,
- 847, 852, 854, 857, 860, 863, 866, 869, 872, 874,
- 878, 880, 884, 886, 890, 892, 896, 898, 902, 904,
- 906, 910, 914, 915, 918, 919, 921, 922, 924, 925,
- 927, 928, 930, 931, 933, 934, 936, 937, 939, 940,
- 942, 943, 945, 950, 955, 961, 968, 973, 978, 980,
- 982, 984, 986, 988, 990, 992, 994, 996, 1000, 1005,
- 1011, 1016, 1021, 1024, 1027, 1032, 1036, 1040, 1046, 1050,
- 1055, 1059, 1065, 1067, 1068, 1070, 1074, 1076, 1078, 1081,
- 1083, 1085, 1091, 1092, 1095, 1097, 1101, 1103, 1107, 1109
+ 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, 551, 553, 555, 558, 560, 562, 564, 566,
+ 568, 572, 574, 576, 578, 581, 583, 585, 587, 589,
+ 593, 595, 597, 599, 601, 603, 605, 607, 609, 611,
+ 615, 620, 625, 628, 632, 638, 640, 642, 645, 649,
+ 655, 659, 665, 669, 673, 679, 688, 694, 703, 709,
+ 710, 714, 715, 717, 721, 723, 728, 731, 732, 736,
+ 738, 742, 744, 748, 750, 754, 756, 760, 762, 766,
+ 770, 773, 778, 782, 788, 794, 796, 800, 802, 805,
+ 807, 811, 816, 818, 821, 824, 826, 828, 832, 833,
+ 836, 837, 839, 841, 843, 845, 847, 849, 851, 853,
+ 855, 856, 861, 863, 866, 869, 872, 875, 878, 881,
+ 883, 887, 889, 893, 895, 899, 901, 905, 907, 911,
+ 913, 915, 919, 923, 924, 927, 928, 930, 931, 933,
+ 934, 936, 937, 939, 940, 942, 943, 945, 946, 948,
+ 949, 951, 952, 954, 959, 964, 970, 977, 982, 987,
+ 989, 991, 993, 995, 997, 999, 1001, 1003, 1005, 1009,
+ 1014, 1020, 1025, 1030, 1033, 1036, 1041, 1045, 1049, 1055,
+ 1059, 1064, 1068, 1074, 1076, 1077, 1079, 1083, 1085, 1087,
+ 1090, 1092, 1094, 1100, 1101, 1104, 1106, 1110, 1112, 1116,
+ 1118
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -584,73 +585,74 @@
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, 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,
- 141, -1, 138, -1, 11, -1, 11, 146, -1, 155,
+ 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, 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, 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
+ 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. */
@@ -669,28 +671,29 @@
798, 802, 806, 810, 814, 818, 822, 826, 830, 834,
838, 842, 846, 851, 857, 858, 862, 873, 877, 881,
885, 890, 894, 904, 908, 913, 921, 925, 926, 937,
- 941, 945, 949, 953, 954, 960, 967, 973, 980, 983,
- 990, 996, 1013, 1020, 1021, 1028, 1029, 1048, 1049, 1052,
- 1055, 1059, 1070, 1079, 1085, 1088, 1091, 1098, 1099, 1105,
- 1120, 1128, 1140, 1145, 1151, 1152, 1153, 1154, 1155, 1156,
- 1162, 1163, 1164, 1165, 1171, 1172, 1173, 1174, 1175, 1181,
- 1182, 1185, 1188, 1189, 1190, 1191, 1192, 1195, 1196, 1209,
- 1213, 1218, 1223, 1228, 1232, 1233, 1236, 1242, 1249, 1255,
- 1262, 1268, 1279, 1293, 1322, 1362, 1387, 1405, 1414, 1417,
- 1425, 1429, 1433, 1440, 1446, 1451, 1463, 1466, 1476, 1477,
- 1483, 1484, 1490, 1494, 1500, 1501, 1507, 1511, 1517, 1540,
- 1545, 1551, 1557, 1564, 1573, 1582, 1597, 1603, 1608, 1612,
- 1619, 1632, 1633, 1639, 1645, 1648, 1652, 1658, 1661, 1670,
- 1673, 1674, 1678, 1679, 1685, 1686, 1687, 1688, 1689, 1691,
- 1690, 1705, 1710, 1714, 1718, 1722, 1726, 1731, 1750, 1756,
- 1764, 1768, 1774, 1778, 1784, 1788, 1794, 1798, 1807, 1811,
- 1815, 1819, 1825, 1828, 1836, 1837, 1839, 1840, 1843, 1846,
- 1849, 1852, 1855, 1858, 1861, 1864, 1867, 1870, 1873, 1876,
- 1879, 1882, 1888, 1892, 1896, 1900, 1904, 1908, 1928, 1935,
- 1946, 1947, 1948, 1951, 1952, 1955, 1959, 1969, 1973, 1977,
- 1981, 1985, 1989, 1993, 1999, 2005, 2013, 2021, 2027, 2034,
- 2050, 2068, 2072, 2078, 2081, 2084, 2088, 2098, 2102, 2117,
- 2125, 2126, 2138, 2139, 2142, 2146, 2152, 2156, 2162, 2166
+ 941, 945, 949, 953, 961, 962, 968, 975, 981, 988,
+ 991, 998, 1004, 1021, 1028, 1029, 1036, 1037, 1056, 1057,
+ 1060, 1063, 1067, 1078, 1087, 1093, 1096, 1099, 1106, 1107,
+ 1113, 1128, 1136, 1148, 1153, 1159, 1160, 1161, 1162, 1163,
+ 1164, 1170, 1171, 1172, 1173, 1179, 1180, 1181, 1182, 1183,
+ 1189, 1190, 1193, 1196, 1197, 1198, 1199, 1200, 1203, 1204,
+ 1217, 1221, 1226, 1231, 1236, 1240, 1241, 1244, 1250, 1257,
+ 1263, 1270, 1276, 1287, 1301, 1330, 1370, 1395, 1413, 1422,
+ 1425, 1433, 1437, 1441, 1448, 1454, 1459, 1471, 1474, 1484,
+ 1485, 1491, 1492, 1498, 1502, 1508, 1509, 1515, 1519, 1525,
+ 1548, 1553, 1559, 1565, 1572, 1581, 1590, 1605, 1611, 1616,
+ 1620, 1627, 1640, 1641, 1647, 1653, 1656, 1660, 1666, 1669,
+ 1678, 1681, 1682, 1686, 1687, 1693, 1694, 1695, 1696, 1697,
+ 1699, 1698, 1713, 1718, 1722, 1726, 1730, 1734, 1739, 1758,
+ 1764, 1772, 1776, 1782, 1786, 1792, 1796, 1802, 1806, 1815,
+ 1819, 1823, 1827, 1833, 1836, 1844, 1845, 1847, 1848, 1851,
+ 1854, 1857, 1860, 1863, 1866, 1869, 1872, 1875, 1878, 1881,
+ 1884, 1887, 1890, 1896, 1900, 1904, 1908, 1912, 1916, 1936,
+ 1943, 1954, 1955, 1956, 1959, 1960, 1963, 1967, 1977, 1981,
+ 1985, 1989, 1993, 1997, 2001, 2007, 2013, 2021, 2029, 2035,
+ 2042, 2058, 2076, 2080, 2086, 2089, 2092, 2096, 2106, 2110,
+ 2125, 2133, 2134, 2146, 2147, 2150, 2154, 2160, 2164, 2170,
+ 2174
};
#endif
@@ -775,28 +778,29 @@
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,
- 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,
- 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, 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, 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. */
@@ -815,28 +819,29 @@
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, 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,
- 1, 1, 1, 2, 1, 1, 1, 1, 1, 3,
- 1, 1, 1, 2, 1, 1, 1, 1, 3, 1,
+ 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, 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,
- 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
+ 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
@@ -844,73 +849,73 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 5, 0, 3, 0, 1, 0, 7, 0, 22, 156,
- 158, 0, 0, 157, 216, 20, 6, 342, 0, 4,
+ 5, 0, 3, 0, 1, 0, 7, 0, 22, 157,
+ 159, 0, 0, 158, 217, 20, 6, 343, 0, 4,
0, 0, 0, 21, 0, 0, 0, 16, 0, 0,
- 9, 22, 0, 8, 28, 126, 154, 0, 39, 154,
- 0, 261, 74, 0, 0, 0, 78, 0, 0, 290,
+ 9, 22, 0, 8, 28, 126, 155, 0, 39, 155,
+ 0, 262, 74, 0, 0, 0, 78, 0, 0, 291,
91, 0, 88, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 288, 0, 25, 0, 254, 255,
- 258, 256, 257, 50, 93, 133, 145, 114, 161, 160,
- 127, 0, 0, 0, 181, 194, 195, 26, 213, 0,
- 138, 27, 0, 19, 0, 0, 0, 0, 0, 0,
- 343, 159, 11, 14, 284, 18, 22, 13, 17, 155,
- 262, 152, 0, 0, 0, 0, 160, 187, 191, 177,
- 175, 176, 174, 263, 133, 0, 292, 247, 0, 208,
- 133, 266, 292, 150, 151, 0, 0, 274, 291, 267,
- 0, 0, 292, 0, 0, 36, 48, 0, 29, 272,
- 153, 0, 122, 117, 118, 121, 115, 116, 0, 0,
- 147, 0, 148, 172, 170, 171, 119, 120, 0, 289,
- 0, 217, 0, 32, 0, 0, 0, 0, 0, 55,
+ 0, 0, 0, 0, 289, 0, 25, 0, 255, 256,
+ 259, 257, 258, 50, 93, 134, 146, 114, 162, 161,
+ 127, 0, 0, 0, 182, 195, 196, 26, 214, 0,
+ 139, 27, 0, 19, 0, 0, 0, 0, 0, 0,
+ 344, 160, 11, 14, 285, 18, 22, 13, 17, 156,
+ 263, 153, 0, 0, 0, 0, 161, 188, 192, 178,
+ 176, 177, 175, 264, 134, 0, 293, 248, 0, 209,
+ 134, 267, 293, 151, 152, 0, 0, 275, 292, 268,
+ 0, 0, 293, 0, 0, 36, 48, 0, 29, 273,
+ 154, 0, 122, 117, 118, 121, 115, 116, 0, 0,
+ 148, 0, 149, 173, 171, 172, 119, 120, 0, 290,
+ 0, 218, 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, 139, 0,
- 0, 288, 259, 0, 139, 215, 0, 0, 0, 0,
- 308, 0, 0, 208, 0, 0, 309, 0, 0, 23,
- 285, 0, 12, 247, 0, 0, 192, 168, 166, 167,
- 164, 165, 196, 0, 0, 293, 72, 0, 75, 0,
- 71, 162, 241, 160, 244, 149, 245, 286, 0, 247,
- 0, 202, 79, 76, 156, 0, 201, 0, 284, 238,
- 226, 0, 64, 0, 0, 199, 270, 284, 224, 236,
- 300, 0, 89, 38, 222, 284, 49, 31, 218, 284,
- 0, 0, 40, 0, 173, 146, 0, 0, 35, 284,
+ 0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
+ 0, 289, 260, 0, 140, 216, 0, 0, 0, 0,
+ 309, 0, 0, 209, 0, 0, 310, 0, 0, 23,
+ 286, 0, 12, 248, 0, 0, 193, 169, 167, 168,
+ 165, 166, 197, 0, 0, 294, 72, 0, 75, 0,
+ 71, 163, 242, 161, 245, 150, 246, 287, 0, 248,
+ 0, 203, 79, 76, 157, 0, 202, 0, 285, 239,
+ 227, 0, 64, 0, 0, 200, 271, 285, 225, 237,
+ 301, 0, 89, 38, 223, 285, 49, 31, 219, 285,
+ 0, 0, 40, 0, 174, 147, 0, 0, 35, 285,
0, 0, 51, 95, 110, 113, 96, 100, 101, 99,
111, 98, 97, 94, 112, 102, 103, 104, 105, 106,
- 107, 108, 109, 282, 123, 276, 286, 0, 128, 289,
- 0, 0, 286, 282, 253, 60, 251, 250, 268, 252,
- 0, 53, 52, 275, 0, 0, 0, 0, 316, 0,
- 0, 0, 0, 0, 315, 0, 310, 311, 312, 0,
- 344, 0, 0, 294, 0, 0, 0, 15, 10, 0,
- 0, 0, 178, 188, 66, 73, 0, 0, 292, 163,
- 242, 243, 287, 248, 210, 0, 0, 0, 292, 0,
- 234, 0, 247, 237, 285, 0, 0, 0, 0, 300,
- 0, 0, 285, 0, 301, 229, 0, 300, 0, 285,
- 0, 285, 0, 42, 273, 0, 0, 0, 197, 168,
- 166, 167, 165, 139, 190, 189, 285, 0, 44, 0,
- 139, 141, 278, 279, 286, 0, 286, 287, 0, 0,
- 0, 131, 288, 260, 287, 0, 0, 0, 0, 214,
- 0, 0, 323, 313, 314, 294, 298, 0, 296, 0,
- 322, 337, 0, 0, 339, 340, 0, 0, 0, 0,
- 0, 300, 0, 0, 307, 0, 295, 302, 306, 303,
- 210, 169, 0, 0, 0, 0, 246, 247, 160, 211,
- 186, 184, 185, 182, 183, 207, 210, 209, 80, 77,
- 235, 239, 0, 227, 200, 193, 0, 0, 92, 62,
- 65, 0, 231, 0, 300, 225, 198, 271, 228, 64,
- 223, 37, 219, 30, 41, 0, 282, 45, 220, 284,
- 47, 33, 43, 282, 0, 287, 283, 136, 0, 277,
- 124, 130, 129, 0, 134, 135, 0, 269, 325, 0,
- 0, 316, 0, 315, 0, 332, 348, 299, 0, 0,
- 0, 346, 297, 326, 338, 0, 304, 0, 317, 0,
- 300, 328, 0, 345, 333, 0, 69, 68, 292, 0,
- 247, 203, 84, 210, 0, 59, 0, 300, 300, 230,
- 0, 169, 0, 285, 0, 46, 0, 139, 143, 140,
- 280, 281, 125, 132, 61, 324, 333, 294, 321, 0,
- 0, 300, 320, 0, 0, 318, 305, 329, 294, 294,
- 336, 205, 334, 67, 70, 212, 0, 86, 240, 0,
- 0, 56, 0, 63, 233, 232, 90, 137, 221, 34,
- 142, 282, 327, 0, 349, 319, 330, 347, 0, 0,
- 0, 210, 0, 85, 81, 0, 0, 0, 333, 341,
- 333, 335, 204, 82, 87, 58, 57, 144, 331, 206,
- 292, 0, 83
+ 107, 108, 109, 283, 123, 277, 287, 0, 128, 290,
+ 0, 0, 287, 283, 254, 60, 252, 251, 269, 253,
+ 0, 53, 52, 276, 0, 0, 0, 0, 317, 0,
+ 0, 0, 0, 0, 316, 0, 311, 312, 313, 0,
+ 345, 0, 0, 295, 0, 0, 0, 15, 10, 0,
+ 0, 0, 179, 189, 66, 73, 0, 0, 293, 164,
+ 243, 244, 288, 249, 211, 0, 0, 0, 293, 0,
+ 235, 0, 248, 238, 286, 0, 0, 0, 0, 301,
+ 0, 0, 286, 0, 302, 230, 0, 301, 0, 286,
+ 0, 286, 0, 42, 274, 0, 0, 0, 198, 169,
+ 167, 168, 166, 140, 191, 190, 286, 0, 44, 0,
+ 140, 142, 279, 280, 287, 0, 287, 288, 0, 0,
+ 0, 131, 289, 261, 288, 0, 0, 0, 0, 215,
+ 0, 0, 324, 314, 315, 295, 299, 0, 297, 0,
+ 323, 338, 0, 0, 340, 341, 0, 0, 0, 0,
+ 0, 301, 0, 0, 308, 0, 296, 303, 307, 304,
+ 211, 170, 0, 0, 0, 0, 247, 248, 161, 212,
+ 187, 185, 186, 183, 184, 208, 211, 210, 80, 77,
+ 236, 240, 0, 228, 201, 194, 0, 0, 92, 62,
+ 65, 0, 232, 0, 301, 226, 199, 272, 229, 64,
+ 224, 37, 220, 30, 41, 0, 283, 45, 221, 285,
+ 47, 33, 43, 283, 0, 288, 284, 137, 0, 278,
+ 124, 130, 129, 0, 135, 136, 0, 270, 326, 0,
+ 0, 317, 0, 316, 0, 333, 349, 300, 0, 0,
+ 0, 347, 298, 327, 339, 0, 305, 0, 318, 0,
+ 301, 329, 0, 346, 334, 0, 69, 68, 293, 0,
+ 248, 204, 84, 211, 0, 59, 0, 301, 301, 231,
+ 0, 170, 0, 286, 0, 46, 0, 140, 144, 141,
+ 281, 282, 125, 289, 132, 61, 325, 334, 295, 322,
+ 0, 0, 301, 321, 0, 0, 319, 306, 330, 295,
+ 295, 337, 206, 335, 67, 70, 213, 0, 86, 241,
+ 0, 0, 56, 0, 63, 234, 233, 90, 138, 222,
+ 34, 143, 283, 0, 328, 0, 350, 320, 331, 348,
+ 0, 0, 0, 211, 0, 85, 81, 0, 0, 0,
+ 133, 334, 342, 334, 336, 205, 82, 87, 58, 57,
+ 145, 332, 207, 293, 0, 83
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -920,7 +925,7 @@
8, 24, 16, 17, 65, 326, 67, 148, 517, 518,
144, 145, 68, 499, 327, 437, 500, 576, 387, 365,
472, 236, 237, 238, 69, 126, 252, 70, 132, 377,
- 572, 643, 660, 617, 644, 71, 142, 398, 72, 140,
+ 572, 645, 663, 618, 646, 71, 142, 398, 72, 140,
73, 74, 75, 76, 313, 422, 423, 589, 77, 315,
242, 135, 78, 149, 110, 116, 13, 80, 81, 244,
245, 162, 118, 82, 83, 479, 227, 84, 229, 230,
@@ -928,556 +933,556 @@
22, 279, 519, 275, 267, 258, 268, 269, 270, 260,
383, 246, 247, 248, 328, 329, 321, 330, 271, 151,
92, 316, 424, 425, 221, 373, 170, 139, 253, 465,
- 550, 544, 395, 100, 211, 217, 610, 442, 346, 347,
- 348, 350, 551, 546, 611, 612, 455, 456, 25, 466,
+ 550, 544, 395, 100, 211, 217, 611, 442, 346, 347,
+ 348, 350, 551, 546, 612, 613, 455, 456, 25, 466,
552, 547
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -485
+#define YYPACT_NINF -552
static const yytype_int16 yypact[] =
{
- -485, 67, 35, 55, -485, 44, -485, 64, -485, -485,
- -485, 96, 38, -485, 77, 85, -485, -485, 66, -485,
- 34, 84, 1059, -485, 86, 294, 147, -485, 165, 210,
- -485, 55, 221, -485, -485, -485, 44, 1762, -485, 44,
- 290, -485, -485, 442, 290, 44, -485, 80, 69, 1608,
- -485, 80, -485, 450, 452, 1608, 1608, 1608, 1608, 1608,
- 1608, 1651, 1608, 1608, 920, 157, -485, 460, -485, -485,
- -485, -485, -485, 718, -485, -485, 167, 344, -485, 176,
- -485, 180, 193, 80, 206, -485, -485, -485, 218, 91,
- -485, -485, 76, -485, 205, 10, 260, 205, 205, 223,
- -485, -485, -485, -485, 230, -485, -485, -485, -485, -485,
- -485, -485, 237, 1770, 1770, 1770, -485, 236, -485, -485,
- -485, -485, -485, -485, 220, 344, 1608, 990, 241, 235,
- 262, -485, 1608, -485, -485, 405, 1770, 2090, 254, -485,
- 297, 444, 1608, 61, 1770, -485, -485, 271, -485, -485,
- -485, 671, -485, -485, -485, -485, -485, -485, 1694, 1651,
- 2090, 291, -485, 181, -485, 60, -485, -485, 287, 2090,
- 301, -485, 496, -485, 912, 1608, 1608, 1608, 1608, -485,
- 1608, 1608, 1608, -485, 1608, 1608, 1608, 1608, 1608, 1608,
- 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, -485, 1290,
- 468, 1608, -485, 1608, -485, -485, 1221, 1608, 1608, 1608,
- -485, 573, 44, 235, 275, 347, -485, 1301, 1301, -485,
- 113, 302, -485, 990, 358, 1770, -485, -485, -485, -485,
- -485, -485, -485, 316, 44, -485, -485, 340, -485, 78,
- 318, 1770, -485, 990, -485, -485, -485, 307, 325, 990,
- 1221, -485, -485, 324, 117, 365, -485, 343, 337, -485,
- -485, 333, -485, 32, 23, -485, -485, 350, -485, -485,
- 406, 1737, -485, -485, -485, 351, -485, -485, -485, 352,
- 1608, 44, 354, 1796, -485, 353, 1770, 1770, -485, 359,
- 1608, 357, 2090, 1928, -485, 2114, 1212, 1212, 1212, 1212,
- -485, 1212, 1212, 2138, -485, 566, 566, 566, 566, -485,
- -485, -485, -485, 1345, -485, -485, 31, 1400, -485, 1988,
- 360, 1147, 1955, 1345, -485, -485, -485, -485, -485, -485,
- 95, 254, 254, 2090, 1857, 368, 361, 371, -485, 363,
- 427, 1301, 247, 51, -485, 374, -485, -485, -485, 1890,
- -485, 36, 382, 44, 384, 385, 387, -485, -485, 391,
- 1770, 395, -485, -485, -485, -485, 1455, 1510, 1608, -485,
- -485, -485, 990, -485, 1823, 399, 135, 340, 1608, 44,
- 397, 403, 990, -485, 542, 407, 1770, 278, 365, 406,
- 365, 411, 364, 413, -485, -485, 44, 406, 430, 44,
- 423, 44, 425, 254, -485, 1608, 1849, 1770, -485, 216,
- 219, 274, 288, -485, -485, -485, 44, 426, 254, 1608,
- -485, 2018, -485, -485, 414, 422, 416, 1651, 433, 434,
- 436, -485, 1608, -485, -485, 439, 437, 1221, 1147, -485,
- 1301, 466, -485, -485, -485, 44, 1882, 1301, 44, 1301,
- -485, -485, 504, 207, -485, -485, 446, 438, 1301, 247,
- 1301, 406, 44, 44, -485, 453, 455, -485, -485, -485,
- 1823, -485, 1221, 1608, 1608, 467, -485, 990, 472, -485,
- -485, -485, -485, -485, -485, -485, 1823, -485, -485, -485,
- -485, -485, 475, -485, -485, -485, 1651, 470, -485, -485,
- -485, 490, -485, 493, 406, -485, -485, -485, -485, -485,
- -485, -485, -485, -485, 254, 495, 1345, -485, -485, 498,
- 912, -485, 254, 1345, 1553, 1345, -485, -485, 497, -485,
- -485, -485, -485, 486, -485, -485, 143, -485, -485, 501,
- 502, 473, 508, 513, 505, -485, -485, 515, 503, 1301,
- 511, -485, 518, -485, -485, 533, -485, 1301, -485, 522,
- 406, -485, 526, -485, 1916, 144, 2090, 2090, 1608, 527,
- 990, -485, -485, 1823, 39, -485, 1147, 406, 406, -485,
- 315, 293, 521, 44, 548, 357, 525, -485, 2090, -485,
- -485, -485, -485, -485, -485, -485, 1916, 44, -485, 1882,
- 1301, 406, -485, 44, 207, -485, -485, -485, 44, 44,
- -485, -485, -485, -485, -485, -485, 551, 572, -485, 1608,
- 1608, -485, 1651, 550, -485, -485, -485, -485, -485, -485,
- -485, 1345, -485, 558, -485, -485, -485, -485, 563, 564,
- 565, 1823, 46, -485, -485, 2042, 2066, 559, 1916, -485,
- 1916, -485, -485, -485, -485, -485, -485, -485, -485, -485,
- 1608, 340, -485
+ -552, 44, 35, 38, -552, 199, -552, 37, -552, -552,
+ -552, 83, 22, -552, 66, 79, -552, -552, 60, -552,
+ 107, 89, 993, -552, 110, 454, 150, -552, 155, 179,
+ -552, 38, 182, -552, -552, -552, 199, 1760, -552, 199,
+ 42, -552, -552, 257, 42, 199, -552, 7, 125, 1606,
+ -552, 7, -552, 394, 407, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1649, 1606, 1606, 1229, 137, -552, 506, -552, -552,
+ -552, -552, -552, 874, -552, -552, 140, 285, -552, 142,
+ -552, 154, 176, 7, 177, -552, -552, -552, 194, 90,
+ -552, -552, 65, -552, 186, -18, 250, 186, 186, 207,
+ -552, -552, -552, -552, 220, -552, -552, -552, -552, -552,
+ -552, -552, 228, 1768, 1768, 1768, -552, 229, -552, -552,
+ -552, -552, -552, -552, 86, 285, 1606, 1735, 245, 246,
+ 180, -552, 1606, -552, -552, 216, 1768, 2118, 264, -552,
+ 287, 436, 1606, 418, 1768, -552, -552, 452, -552, -552,
+ -552, 669, -552, -552, -552, -552, -552, -552, 1692, 1649,
+ 2118, 286, -552, 13, -552, 243, -552, -552, 261, 2118,
+ 280, -552, 455, -552, 772, 1606, 1606, 1606, 1606, -552,
+ 1606, 1606, 1606, -552, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, -552, 1288,
+ 549, 1606, -552, 1606, -552, -552, 1156, 1606, 1606, 1606,
+ -552, 1251, 199, 246, 317, 361, -552, 1944, 1944, -552,
+ 55, 322, -552, 1735, 369, 1768, -552, -552, -552, -552,
+ -552, -552, -552, 323, 199, -552, -552, 349, -552, 84,
+ 329, 1768, -552, 1735, -552, -552, -552, 310, 333, 1735,
+ 1156, -552, -552, 335, 121, 379, -552, 346, 348, -552,
+ -552, 341, -552, 16, 166, -552, -552, 352, -552, -552,
+ 413, 545, -552, -552, -552, 358, -552, -552, -552, 360,
+ 1606, 199, 363, 1793, -552, 356, 1768, 1768, -552, 373,
+ 1606, 371, 2118, 846, -552, 2142, 620, 620, 620, 620,
+ -552, 620, 620, 917, -552, 587, 587, 587, 587, -552,
+ -552, -552, -552, 1343, -552, -552, 36, 1398, -552, 2016,
+ 375, 1068, 1983, 1343, -552, -552, -552, -552, -552, -552,
+ 0, 264, 264, 2118, 1860, 387, 384, 398, -552, 403,
+ 466, 1944, 238, 34, -552, 417, -552, -552, -552, 1036,
+ -552, -6, 422, 199, 425, 431, 432, -552, -552, 439,
+ 1768, 440, -552, -552, -552, -552, 1453, 1508, 1606, -552,
+ -552, -552, 1735, -552, 1827, 442, 159, 349, 1606, 199,
+ 433, 445, 1735, -552, 554, 459, 1768, 85, 379, 413,
+ 379, 453, 448, 464, -552, -552, 199, 413, 473, 199,
+ 456, 199, 474, 264, -552, 1606, 1852, 1768, -552, 143,
+ 258, 259, 260, -552, -552, -552, 199, 485, 264, 1606,
+ -552, 2046, -552, -552, 471, 479, 480, 1649, 494, 497,
+ 498, -552, 1606, -552, -552, 510, 503, 1156, 1068, -552,
+ 1944, 530, -552, -552, -552, 199, 1885, 1944, 199, 1944,
+ -552, -552, 569, 305, -552, -552, 513, 505, 1944, 238,
+ 1944, 413, 199, 199, -552, 523, 509, -552, -552, -552,
+ 1827, -552, 1156, 1606, 1606, 525, -552, 1735, 533, -552,
+ -552, -552, -552, -552, -552, -552, 1827, -552, -552, -552,
+ -552, -552, 529, -552, -552, -552, 1649, 528, -552, -552,
+ -552, 535, -552, 537, 413, -552, -552, -552, -552, -552,
+ -552, -552, -552, -552, 264, 540, 1343, -552, -552, 539,
+ 772, -552, 264, 1343, 1551, 1343, -552, -552, 542, -552,
+ -552, -552, -552, 165, -552, -552, 237, -552, -552, 543,
+ 555, 550, 558, 565, 546, -552, -552, 567, 560, 1944,
+ 566, -552, 576, -552, -552, 595, -552, 1944, -552, 583,
+ 413, -552, 588, -552, 1919, 247, 2118, 2118, 1606, 586,
+ 1735, -552, -552, 1827, 80, -552, 1068, 413, 413, -552,
+ 156, 265, 581, 199, 591, 371, 585, -552, 2118, -552,
+ -552, -552, -552, 1606, -552, -552, -552, 1919, 199, -552,
+ 1885, 1944, 413, -552, 199, 305, -552, -552, -552, 199,
+ 199, -552, -552, -552, -552, -552, -552, 596, 641, -552,
+ 1606, 1606, -552, 1649, 599, -552, -552, -552, -552, -552,
+ -552, -552, 1343, 590, -552, 598, -552, -552, -552, -552,
+ 605, 606, 618, 1827, 74, -552, -552, 2070, 2094, 613,
+ -552, 1919, -552, 1919, -552, -552, -552, -552, -552, -552,
+ -552, -552, -552, 1606, 349, -552
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -485, -485, -485, -485, -485, -485, -485, -6, -485, -485,
- 597, -485, -3, -485, -485, 608, -485, -131, -28, 50,
- -485, -135, -106, -485, -7, -485, -485, -485, 125, -370,
- -485, -485, -485, -485, -485, -485, -138, -485, -485, -485,
- -485, -485, -485, -485, -485, -485, -485, -485, -485, -485,
- 665, 15, 116, -485, -190, 111, 112, -485, 164, -59,
- 398, 137, 14, 367, 603, -5, 454, 432, -485, 402,
- -50, 491, -485, -485, -485, -485, -36, 18, -34, -9,
- -485, -485, -485, -485, -485, 257, 441, -445, -485, -485,
- -485, -485, -485, -485, -485, -485, 259, -116, -218, 265,
- -485, 284, -485, -217, -286, 636, -485, -237, -485, -62,
- -24, 166, -485, -314, -246, -265, -177, -485, -115, -415,
- -485, -485, -379, -485, -8, -485, 435, -485, 326, 225,
- 327, 204, 65, 70, -484, -485, -426, 211, -485, 462,
- -485, -485
+ -552, -552, -552, -552, -552, -552, -552, -15, -552, -552,
+ 651, -552, 2, -552, -552, 661, -552, -131, -29, 101,
+ -552, -134, -112, -552, 41, -552, -552, -552, 178, -366,
+ -552, -552, -552, -552, -552, -552, -139, -552, -552, -552,
+ -552, -552, -552, -552, -552, -552, -552, -552, -552, -552,
+ 674, 303, 307, -552, -187, 163, 164, -552, 327, -59,
+ 447, -16, 81, 414, 655, 376, 103, 20, -552, 458,
+ 273, 547, -552, -552, -552, -552, -36, -37, -31, -38,
+ -552, -552, -552, -552, -552, -32, 483, -468, -552, -552,
+ -552, -552, -552, -552, -552, -552, 315, -116, -238, 318,
+ -552, 336, -552, -213, -294, 677, -552, -242, -552, -63,
+ 6, 213, -552, -291, -236, -288, -194, -552, -111, -433,
+ -552, -552, -301, -552, -46, -552, 190, -552, 377, 269,
+ 378, 251, 109, 115, -551, -552, -432, 262, -552, 504,
+ -552, -552
};
/* 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 -275
+#define YYTABLE_NINF -276
static const yytype_int16 yytable[] =
{
- 12, 119, 161, 121, 272, 174, 359, 488, 274, 436,
- 502, 240, 385, 376, 323, 32, 278, 79, 508, 259,
- 235, 393, 103, 32, 320, 138, 235, 555, 107, 400,
- 540, 111, 375, 402, 111, 433, 235, 27, 128, 173,
- 111, 571, 426, 417, 619, 389, 391, 380, 146, 150,
- 109, 428, 164, 109, 457, 120, 380, 435, 9, 131,
- 5, -213, 150, 226, 232, 233, 653, 4, 9, 212,
- 152, 153, 154, 155, 156, 157, 390, 166, 167, 163,
- 7, 207, 561, 366, 11, 9, 261, 214, 15, 216,
- 218, 388, 205, 28, 276, -213, 462, 29, 20, 18,
- 19, 282, 239, 222, 620, 621, 427, 10, 11, 23,
- 174, 463, 632, 325, 622, 133, 27, 10, 11, -179,
- -234, 273, 243, 458, 291, 579, 133, -213, 618, 26,
- 111, 228, 228, 228, 10, 11, 111, 9, 146, 381,
- 136, 208, 150, 367, 289, 228, 33, 134, 93, 257,
- 164, 209, 537, 209, 228, 266, 124, 438, 134, 526,
- 130, 528, 228, 439, 658, 492, 659, 150, 27, 228,
- 501, 101, 503, 152, 156, 361, 29, 163, 638, -234,
- 379, 607, 633, 331, 332, -234, 10, 11, 141, 9,
- 164, 369, 228, 639, 640, 318, 652, 438, 624, 625,
- 536, 79, 582, 487, 125, 438, 438, 349, 125, 586,
- 451, 594, 613, 105, 357, 32, -181, 163, 243, 171,
- 204, 397, 636, 516, 108, 102, 206, -265, 29, 363,
- 523, 9, -265, 408, 198, 565, 414, 415, 10, 11,
- -180, 228, -152, 228, 243, 79, 202, 409, -181, 411,
- 451, -177, 203, 475, -175, 533, 403, 452, 430, 228,
- 569, 228, 235, 489, 510, -180, 418, 228, 259, -264,
- 512, 9, 235, 584, -264, -177, 150, -179, -175, 11,
- 10, 11, -265, -177, 215, 496, -175, 219, -265, 228,
- 497, 662, 220, 35, 122, 9, 223, 452, 37, 234,
- 249, 410, 250, 94, 228, 228, 453, 112, 164, -176,
- 408, 95, 47, 48, 9, 96, 79, 647, 165, 51,
- 10, 11, 496, -174, -264, 97, 98, 497, -178, 209,
- -264, 277, 262, -176, 353, 163, 495, 454, 480, 623,
- 482, -176, 331, 332, 10, 11, 498, -174, 349, 61,
- 354, 285, -178, 616, 520, -174, 226, 515, 99, 286,
- -178, 64, 358, 10, 11, 483, 360, 243, 529, 478,
- 231, 231, 231, 287, 490, 364, 362, 243, 228, 111,
- 368, 514, 372, 626, 231, 374, 378, 111, 254, 380,
- 228, 111, 481, 231, 146, 522, 150, 631, 257, 384,
- 228, 231, 382, 199, 228, 386, 266, 200, 231, 394,
- 507, 150, 392, 399, 401, 201, 165, 263, 164, 405,
- 413, 416, 419, 264, 228, 228, 432, 445, 446, 254,
- 448, 231, 79, 79, 480, 449, 482, 10, 11, 459,
- 349, 542, 447, 549, 464, 163, 467, 468, 454, 469,
- 480, 470, 482, 614, 454, 471, 165, 562, 349, 486,
- 379, 483, 235, 491, 255, 509, 9, 79, 254, 117,
- 585, 504, 243, 256, 9, 494, 9, 483, 10, 11,
- 231, 506, 231, 511, 9, 513, 521, 164, 481, 525,
- 527, 434, 9, 530, 531, 228, 532, 263, 231, 534,
- 231, 127, 340, 264, 481, 535, 231, 554, 556, 143,
- 557, 147, 265, 564, 163, 10, 11, 10, 11, 172,
- 9, 520, 661, 10, 11, 10, 11, 317, 231, 568,
- 463, 570, -156, 10, 11, 573, 575, 480, 228, 482,
- 412, 10, 11, 231, 231, 117, 117, 117, 210, 210,
- 577, 210, 210, 578, 235, 581, 288, 592, 593, 117,
- 583, 595, 596, 529, 483, 243, 254, 597, 117, 10,
- 11, 79, -157, 598, 165, 600, 117, 599, 150, 602,
- 603, 334, 604, 117, 606, 608, 642, 615, 228, 627,
- 335, 481, 349, 630, 542, 336, 337, 338, 549, 454,
- 177, 255, 339, 349, 349, 480, 117, 482, 629, 340,
- 185, 641, 438, 164, 189, 10, 11, 231, 648, 194,
- 195, 196, 197, 649, 650, 651, 341, 657, 106, 231,
- 66, 484, 483, 628, 580, 654, 590, 591, 342, 231,
- 163, 370, 123, 231, 343, 371, 345, 11, 404, 493,
- 284, 505, 355, 356, 352, 117, 476, 117, 91, 481,
- 443, 444, 574, 231, 231, 344, 539, 563, 637, 634,
- 559, 344, 344, 117, 351, 117, 0, 0, 0, 37,
- 0, 117, 0, 0, 165, 0, 0, 0, 112, 0,
- 0, 0, 0, 47, 48, 9, 0, 0, 0, 0,
- 51, 0, 0, 117, 0, 0, 0, 224, 0, 0,
- 0, 0, 0, 0, 137, 117, 0, 0, 117, 117,
- 0, 0, 175, -274, 114, 0, 160, 484, 0, 169,
- 225, 0, 0, 0, 231, 0, 280, 0, 0, 0,
- 0, 0, 64, 484, 10, 11, 281, 0, 0, 0,
- 0, 176, 177, 165, 178, 179, 180, 181, 182, 0,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 0, 450, 231, 0, 0,
- 0, 0, 0, -274, 461, 0, 0, 0, 344, 0,
- 0, 0, 117, -274, 0, 344, 0, 0, 0, 0,
- 0, 0, 0, 344, 117, 0, 117, 0, 0, 0,
- 0, 0, 0, 0, 117, 0, 0, 0, 117, 0,
- 0, 0, 0, 0, 0, 0, 0, 231, 0, 0,
- 484, 0, 0, 0, 0, 0, 0, 0, 117, 117,
- 292, 293, 294, 295, 0, 296, 297, 298, 0, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 0, 160, 0, 319, 0, 322, 0,
- 0, 0, 137, 137, 333, 538, 0, 0, 0, 165,
- 0, 545, 548, 0, 553, 0, 0, 0, 0, 0,
- 0, 0, 0, 558, 344, 560, 0, 0, 484, 0,
- 543, 344, 117, 344, 0, 0, 0, 0, 0, 117,
- 0, 0, 344, 0, 344, 0, 0, 0, 117, 0,
- 37, 0, 0, 35, 0, 0, 0, 0, 37, 112,
- 0, 168, 0, 0, 47, 48, 9, 112, 0, 0,
- 0, 51, 47, 48, 9, 137, 0, 0, 224, 51,
- 0, 0, 117, 0, 0, 137, 55, 0, 0, 0,
- 0, 0, 0, 0, 0, 114, 0, 0, 0, 56,
- 57, 225, 58, 59, 0, 0, 60, 290, 421, 61,
- 0, 0, 160, 64, 601, 10, 11, 281, 421, 62,
- 63, 64, 605, 10, 11, 0, 0, 0, 37, 0,
- 0, 241, 117, 344, 0, 117, 0, 112, 0, 0,
- 0, 344, 47, 48, 9, 0, 0, 0, 344, 51,
- 0, 0, 0, 0, 0, 0, 224, 0, 0, 0,
- 0, 137, 137, 0, 545, 635, 0, 0, 0, 0,
- 0, 0, 0, 114, 0, 0, 0, 0, 0, 225,
- 344, 0, 0, 543, 344, 0, 0, 0, 0, -2,
- 34, 64, 35, 10, 11, 36, 0, 37, 38, 39,
- 137, 0, 40, 117, 41, 42, 43, 44, 45, 46,
- 0, 47, 48, 9, 137, 0, 49, 50, 51, 52,
- 53, 54, 160, 0, 0, 55, 0, 169, 0, 0,
- 0, 0, 344, 0, 344, 0, 0, 0, 56, 57,
- 0, 58, 59, 0, 0, 60, 0, 0, 61, 0,
- 0, -24, 0, 0, 0, 0, 0, 0, 62, 63,
- 64, 0, 10, 11, 0, 0, 0, 0, 566, 567,
- 0, 0, 0, 0, 0, 0, 0, 0, 324, 0,
- 35, 0, 0, 36, -249, 37, 38, 39, 0, -249,
- 40, 160, 41, 42, 112, 44, 45, 46, 0, 47,
- 48, 9, 0, 0, 49, 50, 51, 52, 53, 54,
- 0, 421, 0, 55, 0, 0, 0, 0, 421, 588,
- 421, 0, 0, 0, 0, 0, 56, 57, 0, 58,
- 59, 0, 0, 60, 0, 0, 61, 0, 0, -249,
- 0, 0, 0, 0, 325, -249, 62, 63, 64, 0,
- 10, 11, 324, 0, 35, 0, 0, 36, 0, 37,
- 38, 39, 0, 0, 40, 0, 41, 42, 112, 44,
- 45, 46, 0, 47, 48, 9, 177, 0, 49, 50,
- 51, 52, 53, 54, 0, 0, 185, 55, 0, 0,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 0,
- 56, 57, 0, 58, 59, 0, 0, 60, 0, 0,
- 61, 0, 0, -249, 645, 646, 0, 160, 325, -249,
- 62, 63, 64, 35, 10, 11, 421, 0, 37, 0,
- 0, 0, 0, 0, 0, 0, 0, 112, 0, 334,
- 0, 0, 47, 48, 9, 0, 0, 0, 335, 51,
- 0, 0, 0, 336, 337, 338, 158, 0, 0, 0,
- 339, 0, 0, 0, 0, 0, 0, 340, 0, 56,
- 57, 0, 58, 159, 0, 0, 60, 0, 35, 61,
- 314, 0, 0, 37, 341, 0, 0, 0, 0, 62,
- 63, 64, 112, 10, 11, 0, 0, 47, 48, 9,
- 0, 0, 343, 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, 59, 0,
- 0, 60, 0, 35, 61, 0, 0, 0, 37, 0,
- 0, 0, 420, 0, 62, 63, 64, 112, 10, 11,
- 0, 0, 47, 48, 9, 0, 0, 0, 0, 51,
- 0, 429, 0, 0, 0, 0, 158, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,
- 57, 0, 58, 159, 0, 0, 60, 0, 35, 61,
- 0, 0, 0, 37, 0, 0, 0, 0, 0, 62,
- 63, 64, 112, 10, 11, 0, 0, 47, 48, 9,
- 0, 473, 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, 112, 10, 11,
- 0, 0, 47, 48, 9, 0, 474, 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,
- 112, 0, 0, 0, 0, 47, 48, 9, 0, 62,
- 63, 64, 51, 10, 11, 0, 0, 0, 0, 55,
+ 120, 119, 161, 272, 174, 122, 121, 320, 376, 274,
+ 359, 488, 540, 103, 235, 240, 278, 323, 571, 259,
+ 235, 555, 385, 164, 163, 389, 391, 433, 428, 165,
+ 235, 393, 436, 107, 435, 141, 375, 457, 173, 400,
+ 380, 212, 133, 402, 4, 35, 634, 426, -182, 214,
+ 37, 216, 218, 417, 462, 138, 11, 117, 27, 112,
+ 5, 15, 438, 7, 47, 48, 9, 204, 439, 463,
+ 207, 51, -181, 206, 134, 388, 228, 228, 228, 9,
+ -182, 231, 231, 231, 19, 620, 18, 20, 502, 366,
+ 228, 205, 496, -266, 656, 231, 508, 497, -266, 228,
+ 661, 61, 662, 23, 231, 619, 458, 228, 222, 174,
+ 27, 427, 231, 64, 228, 10, 11, 109, 29, 231,
+ 109, 164, 163, 26, -235, 133, 131, 165, 10, 11,
+ 208, 9, 239, 117, 117, 117, 526, 228, 528, 381,
+ 209, 325, 231, 289, 537, 621, 622, 117, -266, 367,
+ 501, 33, 503, 498, -266, 623, 117, 134, 27, 209,
+ 561, 164, 163, 496, 117, 635, 28, 165, 497, 492,
+ 29, 117, 93, 640, 101, 655, 641, 642, -178, 9,
+ 10, 11, 105, -235, 379, 108, 228, -265, 228, -235,
+ 380, 231, -265, 231, 117, 536, 136, 210, 210, 171,
+ 210, 210, -178, 579, 228, 357, 228, 198, -153, 231,
+ -178, 231, 228, 331, 332, 102, 257, 231, 29, 390,
+ 202, 438, 266, 9, 627, 582, 516, 487, 10, 11,
+ 565, 593, 586, 523, 228, 203, -181, 594, 533, 231,
+ 254, 451, -265, 117, -214, 117, 410, 409, -265, 228,
+ 228, 412, 411, -180, 231, 231, 235, 475, 430, 608,
+ 11, 117, 9, 117, 569, 510, 235, 489, 259, 117,
+ 512, 219, 10, 11, 215, 255, 625, 626, -214, 164,
+ 163, 9, 220, 584, 256, 165, 403, 223, 452, 10,
+ 11, 117, 234, -176, -177, -175, 418, 453, 665, 438,
+ -179, 638, -180, 117, 249, 595, 117, 117, 451, 438,
+ -214, 10, 11, 250, 344, 614, 127, -176, -177, -175,
+ 344, 344, 262, 228, -179, -176, -177, -175, 231, 9,
+ 10, 11, -179, 286, 624, 228, 483, 481, 480, 209,
+ 231, 649, 484, 482, 199, 228, 285, 124, 200, 228,
+ 231, 130, 287, 520, 231, 452, 201, 617, 152, 153,
+ 154, 155, 156, 157, 354, 166, 167, 125, 529, 228,
+ 228, 125, 331, 332, 231, 231, 353, 360, 10, 11,
+ 117, 12, 358, 362, 364, 372, 226, 232, 233, 164,
+ 163, 368, 117, 374, 117, 165, 32, 378, 79, 633,
+ 632, 345, 117, 380, 32, 382, 117, 355, 356, 261,
+ 384, 514, 111, 386, 392, 111, 394, 276, 9, 128,
+ 399, 111, 401, 413, 282, 522, 117, 117, 405, 146,
+ 150, 9, 483, 481, 480, 416, 419, 344, 484, 482,
+ 228, 432, 9, 150, 344, 231, 445, 291, 483, 481,
+ 480, 446, 344, 143, 484, 482, 235, 615, 164, 163,
+ 254, 152, 156, 94, 165, 257, 147, 10, 11, 447,
+ 448, 95, 254, 266, 449, 96, 9, 507, 273, 9,
+ 10, 11, 459, 228, 464, 97, 98, 467, 231, 263,
+ 117, 10, 11, 468, 469, 264, 379, 117, 361, 470,
+ 471, 263, 486, 243, 265, 491, 117, 264, 509, 10,
+ 11, 111, 277, 504, 369, 288, 511, 111, 99, 146,
+ 520, 10, 11, 150, 664, 10, 11, 494, 10, 11,
+ 9, 450, 506, 228, 513, 483, 481, 480, 231, 461,
+ 117, 484, 482, 344, 397, 521, 525, 527, 150, 543,
+ 344, 235, 344, 37, 530, 434, 408, 531, 532, 414,
+ 415, 344, 112, 344, 529, 172, 340, 47, 48, 9,
+ 534, 535, 554, 9, 51, 556, 318, 557, 254, 10,
+ 11, 224, 79, 564, 463, 164, 163, 568, 349, 573,
+ 117, 165, 570, 117, 575, 577, 32, 578, 114, 243,
+ 581, 583, 592, 596, 225, 483, 481, 480, 317, -157,
+ 363, 484, 482, 255, 599, 597, 64, 598, 10, 11,
+ 396, 177, 10, 11, -158, 243, 79, 10, 11, 600,
+ 538, 185, 601, 408, 603, 189, 545, 548, 604, 553,
+ 194, 195, 196, 197, 605, 607, 616, 609, 558, 628,
+ 560, 630, 344, 631, 177, 644, 643, 150, 651, 495,
+ 344, 438, 650, 117, 185, 652, 653, 344, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 37, 654, 226,
+ 515, 660, 106, 66, 629, 657, 112, 580, 590, 591,
+ 370, 47, 48, 9, 123, 404, 352, 79, 51, 91,
+ 344, 371, 493, 543, 344, 224, 284, 505, 476, 574,
+ 539, 443, 444, 639, 563, 636, 351, 0, 454, 0,
+ 0, 559, 114, 137, 0, 0, 0, 0, 225, 349,
+ 0, 0, 0, 0, 280, 160, 0, 0, 169, 602,
+ 64, 0, 10, 11, 281, 0, 0, 606, 243, 0,
+ 478, 0, 0, 0, 344, 490, 344, 0, 243, 0,
+ 111, 0, 0, 0, 0, 0, 0, 0, 111, 0,
+ 0, 0, 111, 0, 0, 146, 0, 150, 0, 0,
+ 37, 0, 0, 0, 0, 0, 0, 0, 0, 112,
+ 545, 637, 150, 585, 47, 48, 9, 0, 0, 0,
+ 0, 51, 0, 0, 0, 0, 0, 0, 224, 0,
+ 0, 0, 0, 79, 79, 0, 0, 0, 0, 0,
+ 0, 349, 542, 0, 549, 114, 0, 0, 0, 454,
+ 0, 225, 0, 0, 0, 454, 0, 290, 562, 349,
+ 0, 0, 0, 64, 0, 10, 11, 281, 79, 292,
+ 293, 294, 295, 243, 296, 297, 298, 0, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 0, 160, 0, 319, 0, 322, 175, -275,
+ 177, 137, 137, 333, 180, 181, 182, 0, 0, 184,
+ 185, 186, 187, 0, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 0, 0, 0, 0, 176, 177, 0,
+ 178, 179, 180, 181, 182, 0, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 0, 0, 0, 0, 0, 0, 0, 0, -275,
+ 0, 0, 0, 0, 0, 0, 243, 0, 0, -275,
+ 176, 177, 79, 0, 137, 180, 181, 182, 0, 150,
+ 184, 185, 186, 187, 137, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 349, 0, 542, 0, 0, 0,
+ 549, 454, 0, 0, 0, 349, 349, 421, 0, 0,
+ 0, 160, 0, -2, 34, 0, 35, 421, 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,
+ 137, 137, 56, 57, 334, 58, 59, 460, 0, 60,
+ 0, 0, 61, 335, 0, -24, 0, 0, 336, 337,
+ 338, 0, 62, 63, 64, 339, 10, 11, 0, 324,
+ 0, 35, 340, 0, 36, -250, 37, 38, 39, 137,
+ -250, 40, 0, 41, 42, 112, 44, 45, 46, 341,
+ 47, 48, 9, 137, 0, 49, 50, 51, 52, 53,
+ 54, 160, 0, 0, 55, 0, 169, 343, 0, 0,
+ 11, 0, 0, 0, 0, 0, 0, 56, 57, 0,
+ 58, 59, 0, 0, 60, 0, 0, 61, 0, 0,
+ -250, 0, 0, 0, 0, 325, -250, 62, 63, 64,
+ 0, 10, 11, 0, 0, 0, 0, 566, 567, 0,
+ 0, 0, 0, 0, 0, 0, 0, 324, 0, 35,
+ 0, 0, 36, 0, 37, 38, 39, 0, 0, 40,
+ 160, 41, 42, 112, 44, 45, 46, 0, 47, 48,
+ 9, 0, 0, 49, 50, 51, 52, 53, 54, 0,
+ 421, 0, 55, 0, 0, 0, 0, 421, 588, 421,
+ 0, 0, 0, 0, 0, 56, 57, 0, 58, 59,
+ 0, 0, 60, 0, 0, 61, 0, 0, -250, 0,
+ 0, 0, 0, 325, -250, 62, 63, 64, 0, 10,
+ 11, 0, 35, 0, 0, 0, 0, 37, 0, 0,
+ 168, 0, 0, 0, 0, 0, 112, 0, 0, 0,
+ 0, 47, 48, 9, 0, 0, 0, 0, 51, 334,
+ 0, 0, 0, 0, 0, 55, 0, 169, 335, 0,
+ 0, 0, 0, 336, 337, 338, 0, 0, 56, 57,
+ 339, 58, 59, 0, 0, 60, 0, 340, 61, 0,
+ 0, 35, 0, 0, 647, 648, 37, 160, 62, 63,
+ 64, 0, 10, 11, 341, 112, 421, 0, 0, 0,
+ 47, 48, 9, 0, 0, 0, 342, 51, 0, 0,
+ 0, 0, 343, 0, 158, 11, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 56, 57, 0,
+ 58, 159, 0, 0, 60, 0, 35, 61, 314, 0,
+ 0, 37, 0, 0, 0, 0, 0, 62, 63, 64,
+ 112, 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,
- 587, 0, 62, 63, 64, 112, 10, 11, 0, 0,
- 47, 48, 9, 0, 0, 0, 0, 51, 0, 0,
+ 420, 0, 62, 63, 64, 112, 10, 11, 0, 0,
+ 47, 48, 9, 0, 0, 0, 0, 51, 0, 429,
+ 0, 0, 0, 0, 158, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 56, 57, 0,
+ 58, 159, 0, 0, 60, 0, 35, 61, 0, 0,
+ 0, 37, 0, 0, 0, 0, 0, 62, 63, 64,
+ 112, 10, 11, 0, 0, 47, 48, 9, 0, 473,
+ 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, 112, 10, 11, 0, 0,
+ 47, 48, 9, 0, 474, 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, 112, 0,
0, 0, 0, 47, 48, 9, 0, 62, 63, 64,
- 51, 10, 11, 0, 0, 0, 0, 158, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 35, 0, 0,
- 56, 57, 283, 58, 159, 0, 0, 60, 0, 0,
- 61, 112, 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, 112, 0, 0, 0, 0, 47,
- 48, 9, 0, 62, 63, 64, 51, 10, 11, 0,
- 37, 0, 0, 224, 0, 0, 0, 0, 37, 112,
- 0, 0, 0, 0, 47, 48, 9, 112, 0, 0,
- 114, 51, 47, 48, 9, 0, 225, 0, 113, 51,
- 0, 0, 0, 0, 37, 0, 224, 0, 64, 0,
- 10, 11, 396, 112, 0, 114, 0, 0, 47, 48,
- 9, 115, 0, 114, 0, 51, 0, 0, 0, 225,
- 0, 37, 406, 64, 0, 10, 11, 0, 0, 0,
- 112, 64, 0, 10, 11, 47, 48, 9, 0, 114,
- 0, 0, 51, 0, 0, 407, 0, 283, 0, 224,
- 0, 0, 0, 0, 0, 334, 112, 64, 0, 10,
- 11, 47, 48, 9, 335, 0, 114, 0, 51, 336,
- 337, 338, 477, 0, 0, 224, 339, 0, 0, 0,
- 334, 0, 0, 440, 64, 0, 10, 11, 334, 335,
- 0, 460, 114, 0, 336, 337, 541, 335, 225, 0,
- 341, 339, 336, 337, 338, 0, 441, 0, 340, 339,
- 64, 0, 10, 11, 334, 0, 340, 0, 343, 0,
- 0, 11, 0, 335, 0, 341, 0, 0, 336, 337,
- 338, 0, 0, 341, 0, 339, 0, 0, 0, 0,
- 0, 0, 340, 343, 0, 10, 11, 0, 0, 0,
- 0, 343, 177, 0, 11, 0, 180, 181, 182, 341,
- 0, 184, 185, 186, 187, 609, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 0, 0, 343, 176, 177,
- 11, 178, 0, 180, 181, 182, 0, 0, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 176, 177, 0, 178, 0, 180, 181, 182, 0,
- 434, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 0, 0, 0, 0, 0,
- 0, 176, 177, 0, 178, 0, 180, 181, 182, 0,
- 431, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 176, 177, 0, 178, 0,
- 180, 181, 182, 0, 524, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 176,
- 177, 0, 178, 0, 180, 181, 182, 0, 655, 184,
+ 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, 587, 0,
+ 62, 63, 64, 112, 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, 112, 0, 0, 0,
+ 0, 47, 48, 9, 0, 62, 63, 64, 51, 10,
+ 11, 0, 0, 0, 0, 158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0, 56, 57,
+ 283, 58, 159, 0, 0, 60, 0, 0, 61, 112,
+ 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, 241, 0, 60, 0,
+ 0, 61, 112, 0, 0, 0, 0, 47, 48, 9,
+ 0, 62, 63, 64, 51, 10, 11, 0, 37, 0,
+ 0, 224, 0, 0, 0, 0, 37, 112, 0, 0,
+ 0, 0, 47, 48, 9, 112, 0, 0, 114, 51,
+ 47, 48, 9, 0, 225, 0, 113, 51, 0, 0,
+ 0, 37, 0, 0, 224, 0, 64, 0, 10, 11,
+ 112, 0, 0, 114, 0, 47, 48, 9, 0, 115,
+ 0, 114, 51, 0, 0, 0, 0, 225, 0, 406,
+ 0, 64, 0, 10, 11, 37, 0, 0, 0, 64,
+ 0, 10, 11, 0, 112, 0, 114, 0, 0, 47,
+ 48, 9, 407, 0, 0, 0, 51, 0, 0, 0,
+ 283, 0, 0, 224, 64, 0, 10, 11, 334, 112,
+ 0, 0, 0, 0, 47, 48, 9, 335, 0, 0,
+ 114, 51, 336, 337, 338, 0, 477, 0, 224, 339,
+ 0, 0, 0, 334, 0, 0, 440, 0, 64, 0,
+ 10, 11, 335, 0, 0, 114, 0, 336, 337, 541,
+ 0, 225, 0, 341, 339, 0, 0, 0, 0, 441,
+ 0, 340, 0, 64, 0, 10, 11, 334, 0, 0,
+ 0, 343, 0, 0, 11, 0, 335, 0, 341, 0,
+ 0, 336, 337, 338, 0, 0, 0, 0, 339, 0,
+ 0, 0, 334, 0, 0, 340, 343, 0, 10, 11,
+ 0, 335, 0, 0, 0, 0, 336, 337, 338, 0,
+ 0, 0, 341, 339, 0, 0, 0, 0, 610, 0,
+ 340, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 343, 0, 0, 11, 0, 0, 0, 341, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 343, 176, 177, 11, 178,
+ 0, 180, 181, 182, 0, 0, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 176,
+ 177, 0, 178, 0, 180, 181, 182, 0, 434, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 0, 0, 0, 0, 0, 0, 176,
+ 177, 0, 178, 0, 180, 181, 182, 0, 431, 184,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 176, 177, 0, 178, 0, 180, 181,
- 182, 0, 656, 184, 185, 186, 187, 188, 189, 190,
+ 182, 0, 524, 184, 185, 186, 187, 188, 189, 190,
191, 192, 193, 194, 195, 196, 197, 176, 177, 0,
- 0, 0, 180, 181, 182, 0, 0, 184, 185, 186,
+ 178, 0, 180, 181, 182, 0, 658, 184, 185, 186,
187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 176, 177, 0, 0, 0, 180, 181, 182, 0,
- 0, 184, 185, 186, 187, 0, 189, 190, 191, 192,
- 193, 194, 195, 196, 197
+ 197, 176, 177, 0, 178, 0, 180, 181, 182, 0,
+ 659, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 176, 177, 0, 0, 0,
+ 180, 181, 182, 0, 0, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197
};
static const yytype_int16 yycheck[] =
{
- 5, 37, 61, 37, 142, 67, 223, 377, 143, 323,
- 389, 126, 258, 250, 204, 20, 147, 22, 397, 135,
- 126, 267, 28, 28, 201, 49, 132, 453, 31, 275,
- 445, 36, 249, 279, 39, 321, 142, 3, 43, 67,
- 45, 486, 11, 289, 5, 263, 264, 24, 53, 54,
- 36, 316, 61, 39, 3, 37, 24, 322, 24, 45,
- 25, 1, 67, 113, 114, 115, 20, 0, 24, 59,
- 55, 56, 57, 58, 59, 60, 53, 62, 63, 61,
- 25, 5, 461, 5, 74, 24, 136, 95, 24, 97,
- 98, 59, 1, 59, 144, 35, 60, 63, 21, 3,
- 62, 151, 126, 106, 65, 66, 75, 73, 74, 24,
- 172, 75, 596, 67, 75, 35, 3, 73, 74, 59,
- 3, 60, 127, 72, 174, 504, 35, 67, 573, 63,
- 135, 113, 114, 115, 73, 74, 141, 24, 143, 255,
- 71, 65, 147, 65, 172, 127, 62, 67, 62, 135,
- 159, 75, 438, 75, 136, 141, 40, 62, 67, 424,
- 44, 426, 144, 68, 648, 382, 650, 172, 3, 151,
- 388, 24, 390, 158, 159, 225, 63, 159, 604, 62,
- 63, 560, 597, 207, 208, 68, 73, 74, 51, 24,
- 199, 241, 174, 608, 609, 200, 641, 62, 577, 578,
- 437, 206, 516, 68, 40, 62, 62, 212, 44, 523,
- 3, 68, 68, 3, 220, 220, 35, 199, 223, 62,
- 83, 271, 601, 413, 3, 60, 89, 7, 63, 234,
- 420, 24, 12, 283, 67, 472, 286, 287, 73, 74,
- 59, 223, 66, 225, 249, 250, 66, 283, 67, 283,
- 3, 35, 59, 368, 35, 432, 280, 50, 317, 241,
- 477, 243, 368, 378, 399, 59, 290, 249, 384, 7,
- 401, 24, 378, 519, 12, 59, 281, 59, 59, 74,
- 73, 74, 62, 67, 24, 7, 67, 64, 68, 271,
- 12, 661, 62, 3, 37, 24, 59, 50, 8, 63,
- 59, 283, 67, 9, 286, 287, 59, 17, 317, 35,
- 360, 17, 22, 23, 24, 21, 321, 631, 61, 29,
- 73, 74, 7, 35, 62, 31, 32, 12, 35, 75,
- 68, 60, 35, 59, 59, 317, 386, 342, 374, 576,
- 374, 67, 366, 367, 73, 74, 68, 59, 353, 59,
- 3, 60, 59, 570, 416, 67, 406, 407, 64, 72,
- 67, 71, 60, 73, 74, 374, 8, 372, 427, 374,
- 113, 114, 115, 72, 379, 35, 60, 382, 360, 384,
- 62, 405, 75, 68, 127, 60, 62, 392, 24, 24,
- 372, 396, 374, 136, 399, 419, 401, 587, 384, 62,
- 382, 144, 59, 59, 386, 72, 392, 63, 151, 3,
- 396, 416, 62, 62, 62, 71, 159, 53, 427, 65,
- 67, 62, 65, 59, 406, 407, 66, 59, 67, 24,
- 67, 174, 437, 438, 470, 8, 470, 73, 74, 65,
- 445, 446, 71, 448, 62, 427, 62, 62, 453, 62,
- 486, 60, 486, 568, 459, 60, 199, 462, 463, 60,
- 63, 470, 568, 60, 59, 35, 24, 472, 24, 37,
- 520, 60, 477, 68, 24, 68, 24, 486, 73, 74,
- 223, 68, 225, 60, 24, 60, 60, 496, 470, 75,
- 68, 75, 24, 60, 60, 477, 60, 53, 241, 60,
- 243, 59, 36, 59, 486, 68, 249, 3, 62, 59,
- 72, 59, 68, 60, 496, 73, 74, 73, 74, 59,
- 24, 583, 660, 73, 74, 73, 74, 59, 271, 62,
- 75, 59, 59, 73, 74, 60, 66, 573, 520, 573,
- 283, 73, 74, 286, 287, 113, 114, 115, 94, 95,
- 60, 97, 98, 60, 660, 60, 60, 60, 72, 127,
- 62, 60, 60, 622, 573, 570, 24, 59, 136, 73,
- 74, 576, 59, 68, 317, 72, 144, 62, 583, 68,
- 62, 8, 49, 151, 62, 59, 14, 60, 570, 68,
- 17, 573, 597, 68, 599, 22, 23, 24, 603, 604,
- 34, 59, 29, 608, 609, 641, 174, 641, 60, 36,
- 44, 60, 62, 622, 48, 73, 74, 360, 60, 53,
- 54, 55, 56, 60, 60, 60, 53, 68, 31, 372,
- 22, 374, 641, 583, 509, 642, 525, 525, 65, 382,
- 622, 243, 39, 386, 71, 243, 211, 74, 281, 384,
- 159, 392, 217, 218, 213, 223, 372, 225, 22, 641,
- 334, 334, 496, 406, 407, 211, 441, 463, 603, 599,
- 459, 217, 218, 241, 212, 243, -1, -1, -1, 8,
- -1, 249, -1, -1, 427, -1, -1, -1, 17, -1,
- -1, -1, -1, 22, 23, 24, -1, -1, -1, -1,
- 29, -1, -1, 271, -1, -1, -1, 36, -1, -1,
- -1, -1, -1, -1, 49, 283, -1, -1, 286, 287,
- -1, -1, 4, 5, 53, -1, 61, 470, -1, 64,
- 59, -1, -1, -1, 477, -1, 65, -1, -1, -1,
- -1, -1, 71, 486, 73, 74, 75, -1, -1, -1,
- -1, 33, 34, 496, 36, 37, 38, 39, 40, -1,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, -1, 341, 520, -1, -1,
- -1, -1, -1, 65, 349, -1, -1, -1, 334, -1,
- -1, -1, 360, 75, -1, 341, -1, -1, -1, -1,
- -1, -1, -1, 349, 372, -1, 374, -1, -1, -1,
- -1, -1, -1, -1, 382, -1, -1, -1, 386, -1,
- -1, -1, -1, -1, -1, -1, -1, 570, -1, -1,
- 573, -1, -1, -1, -1, -1, -1, -1, 406, 407,
- 175, 176, 177, 178, -1, 180, 181, 182, -1, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, -1, 199, -1, 201, -1, 203, -1,
- -1, -1, 207, 208, 209, 440, -1, -1, -1, 622,
- -1, 446, 447, -1, 449, -1, -1, -1, -1, -1,
- -1, -1, -1, 458, 440, 460, -1, -1, 641, -1,
- 446, 447, 470, 449, -1, -1, -1, -1, -1, 477,
- -1, -1, 458, -1, 460, -1, -1, -1, 486, -1,
- 8, -1, -1, 3, -1, -1, -1, -1, 8, 17,
- -1, 11, -1, -1, 22, 23, 24, 17, -1, -1,
- -1, 29, 22, 23, 24, 280, -1, -1, 36, 29,
- -1, -1, 520, -1, -1, 290, 36, -1, -1, -1,
- -1, -1, -1, -1, -1, 53, -1, -1, -1, 49,
- 50, 59, 52, 53, -1, -1, 56, 65, 313, 59,
- -1, -1, 317, 71, 549, 73, 74, 75, 323, 69,
- 70, 71, 557, 73, 74, -1, -1, -1, 8, -1,
- -1, 11, 570, 549, -1, 573, -1, 17, -1, -1,
- -1, 557, 22, 23, 24, -1, -1, -1, 564, 29,
- -1, -1, -1, -1, -1, -1, 36, -1, -1, -1,
- -1, 366, 367, -1, 599, 600, -1, -1, -1, -1,
- -1, -1, -1, 53, -1, -1, -1, -1, -1, 59,
- 596, -1, -1, 599, 600, -1, -1, -1, -1, 0,
- 1, 71, 3, 73, 74, 6, -1, 8, 9, 10,
- 405, -1, 13, 641, 15, 16, 17, 18, 19, 20,
- -1, 22, 23, 24, 419, -1, 27, 28, 29, 30,
- 31, 32, 427, -1, -1, 36, -1, 432, -1, -1,
- -1, -1, 648, -1, 650, -1, -1, -1, 49, 50,
- -1, 52, 53, -1, -1, 56, -1, -1, 59, -1,
- -1, 62, -1, -1, -1, -1, -1, -1, 69, 70,
- 71, -1, 73, 74, -1, -1, -1, -1, 473, 474,
- -1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
- 3, -1, -1, 6, 7, 8, 9, 10, -1, 12,
- 13, 496, 15, 16, 17, 18, 19, 20, -1, 22,
- 23, 24, -1, -1, 27, 28, 29, 30, 31, 32,
- -1, 516, -1, 36, -1, -1, -1, -1, 523, 524,
- 525, -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, 34, -1, 27, 28,
- 29, 30, 31, 32, -1, -1, 44, 36, -1, -1,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, -1,
- 49, 50, -1, 52, 53, -1, -1, 56, -1, -1,
- 59, -1, -1, 62, 619, 620, -1, 622, 67, 68,
- 69, 70, 71, 3, 73, 74, 631, -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, -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, -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, 36,
+ 37, 37, 61, 142, 67, 37, 37, 201, 250, 143,
+ 223, 377, 445, 28, 126, 126, 147, 204, 486, 135,
+ 132, 453, 258, 61, 61, 263, 264, 321, 316, 61,
+ 142, 267, 323, 31, 322, 51, 249, 3, 67, 275,
+ 24, 59, 35, 279, 0, 3, 597, 11, 35, 95,
+ 8, 97, 98, 289, 60, 49, 74, 37, 3, 17,
+ 25, 24, 62, 25, 22, 23, 24, 83, 68, 75,
+ 5, 29, 59, 89, 67, 59, 113, 114, 115, 24,
+ 67, 113, 114, 115, 62, 5, 3, 21, 389, 5,
+ 127, 1, 7, 7, 20, 127, 397, 12, 12, 136,
+ 651, 59, 653, 24, 136, 573, 72, 144, 106, 172,
+ 3, 75, 144, 71, 151, 73, 74, 36, 63, 151,
+ 39, 159, 159, 63, 3, 35, 45, 159, 73, 74,
+ 65, 24, 126, 113, 114, 115, 424, 174, 426, 255,
+ 75, 67, 174, 172, 438, 65, 66, 127, 62, 65,
+ 388, 62, 390, 68, 68, 75, 136, 67, 3, 75,
+ 461, 199, 199, 7, 144, 598, 59, 199, 12, 382,
+ 63, 151, 62, 605, 24, 643, 609, 610, 35, 24,
+ 73, 74, 3, 62, 63, 3, 223, 7, 225, 68,
+ 24, 223, 12, 225, 174, 437, 71, 94, 95, 62,
+ 97, 98, 59, 504, 241, 220, 243, 67, 66, 241,
+ 67, 243, 249, 207, 208, 60, 135, 249, 63, 53,
+ 66, 62, 141, 24, 68, 516, 413, 68, 73, 74,
+ 472, 66, 523, 420, 271, 59, 59, 72, 432, 271,
+ 24, 3, 62, 223, 1, 225, 283, 283, 68, 286,
+ 287, 283, 283, 59, 286, 287, 368, 368, 317, 560,
+ 74, 241, 24, 243, 477, 399, 378, 378, 384, 249,
+ 401, 64, 73, 74, 24, 59, 577, 578, 35, 317,
+ 317, 24, 62, 519, 68, 317, 280, 59, 50, 73,
+ 74, 271, 63, 35, 35, 35, 290, 59, 664, 62,
+ 35, 602, 59, 283, 59, 68, 286, 287, 3, 62,
+ 67, 73, 74, 67, 211, 68, 59, 59, 59, 59,
+ 217, 218, 35, 360, 59, 67, 67, 67, 360, 24,
+ 73, 74, 67, 72, 576, 372, 374, 374, 374, 75,
+ 372, 632, 374, 374, 59, 382, 60, 40, 63, 386,
+ 382, 44, 72, 416, 386, 50, 71, 570, 55, 56,
+ 57, 58, 59, 60, 3, 62, 63, 40, 427, 406,
+ 407, 44, 366, 367, 406, 407, 59, 8, 73, 74,
+ 360, 5, 60, 60, 35, 75, 113, 114, 115, 427,
+ 427, 62, 372, 60, 374, 427, 20, 62, 22, 593,
+ 587, 211, 382, 24, 28, 59, 386, 217, 218, 136,
+ 62, 405, 36, 72, 62, 39, 3, 144, 24, 43,
+ 62, 45, 62, 67, 151, 419, 406, 407, 65, 53,
+ 54, 24, 470, 470, 470, 62, 65, 334, 470, 470,
+ 477, 66, 24, 67, 341, 477, 59, 174, 486, 486,
+ 486, 67, 349, 59, 486, 486, 568, 568, 496, 496,
+ 24, 158, 159, 9, 496, 384, 59, 73, 74, 71,
+ 67, 17, 24, 392, 8, 21, 24, 396, 60, 24,
+ 73, 74, 65, 520, 62, 31, 32, 62, 520, 53,
+ 470, 73, 74, 62, 62, 59, 63, 477, 225, 60,
+ 60, 53, 60, 127, 68, 60, 486, 59, 35, 73,
+ 74, 135, 60, 60, 241, 60, 60, 141, 64, 143,
+ 583, 73, 74, 147, 663, 73, 74, 68, 73, 74,
+ 24, 341, 68, 570, 60, 573, 573, 573, 570, 349,
+ 520, 573, 573, 440, 271, 60, 75, 68, 172, 446,
+ 447, 663, 449, 8, 60, 75, 283, 60, 60, 286,
+ 287, 458, 17, 460, 623, 59, 36, 22, 23, 24,
+ 60, 68, 3, 24, 29, 62, 200, 72, 24, 73,
+ 74, 36, 206, 60, 75, 623, 623, 62, 212, 60,
+ 570, 623, 59, 573, 66, 60, 220, 60, 53, 223,
+ 60, 62, 60, 60, 59, 643, 643, 643, 59, 59,
+ 234, 643, 643, 59, 68, 60, 71, 59, 73, 74,
+ 75, 34, 73, 74, 59, 249, 250, 73, 74, 62,
+ 440, 44, 72, 360, 68, 48, 446, 447, 62, 449,
+ 53, 54, 55, 56, 49, 62, 60, 59, 458, 68,
+ 460, 60, 549, 68, 34, 14, 60, 281, 60, 386,
+ 557, 62, 72, 643, 44, 60, 60, 564, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 8, 60, 406,
+ 407, 68, 31, 22, 583, 644, 17, 509, 525, 525,
+ 243, 22, 23, 24, 39, 281, 213, 321, 29, 22,
+ 597, 243, 384, 600, 601, 36, 159, 392, 372, 496,
+ 441, 334, 334, 604, 463, 600, 212, -1, 342, -1,
+ -1, 459, 53, 49, -1, -1, -1, -1, 59, 353,
+ -1, -1, -1, -1, 65, 61, -1, -1, 64, 549,
+ 71, -1, 73, 74, 75, -1, -1, 557, 372, -1,
+ 374, -1, -1, -1, 651, 379, 653, -1, 382, -1,
+ 384, -1, -1, -1, -1, -1, -1, -1, 392, -1,
+ -1, -1, 396, -1, -1, 399, -1, 401, -1, -1,
+ 8, -1, -1, -1, -1, -1, -1, -1, -1, 17,
+ 600, 601, 416, 520, 22, 23, 24, -1, -1, -1,
+ -1, 29, -1, -1, -1, -1, -1, -1, 36, -1,
+ -1, -1, -1, 437, 438, -1, -1, -1, -1, -1,
+ -1, 445, 446, -1, 448, 53, -1, -1, -1, 453,
+ -1, 59, -1, -1, -1, 459, -1, 65, 462, 463,
+ -1, -1, -1, 71, -1, 73, 74, 75, 472, 175,
+ 176, 177, 178, 477, 180, 181, 182, -1, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, -1, 199, -1, 201, -1, 203, 4, 5,
+ 34, 207, 208, 209, 38, 39, 40, -1, -1, 43,
+ 44, 45, 46, -1, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, -1, -1, -1, -1, 33, 34, -1,
+ 36, 37, 38, 39, 40, -1, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 570, -1, -1, 75,
+ 33, 34, 576, -1, 280, 38, 39, 40, -1, 583,
+ 43, 44, 45, 46, 290, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 598, -1, 600, -1, -1, -1,
+ 604, 605, -1, -1, -1, 609, 610, 313, -1, -1,
+ -1, 317, -1, 0, 1, -1, 3, 323, -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,
+ 366, 367, 49, 50, 8, 52, 53, 11, -1, 56,
+ -1, -1, 59, 17, -1, 62, -1, -1, 22, 23,
+ 24, -1, 69, 70, 71, 29, 73, 74, -1, 1,
+ -1, 3, 36, -1, 6, 7, 8, 9, 10, 405,
+ 12, 13, -1, 15, 16, 17, 18, 19, 20, 53,
+ 22, 23, 24, 419, -1, 27, 28, 29, 30, 31,
+ 32, 427, -1, -1, 36, -1, 432, 71, -1, -1,
+ 74, -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, -1, -1, 473, 474, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1, -1, 3,
+ -1, -1, 6, -1, 8, 9, 10, -1, -1, 13,
+ 496, 15, 16, 17, 18, 19, 20, -1, 22, 23,
+ 24, -1, -1, 27, 28, 29, 30, 31, 32, -1,
+ 516, -1, 36, -1, -1, -1, -1, 523, 524, 525,
+ -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, 3, -1, -1, -1, -1, 8, -1, -1,
+ 11, -1, -1, -1, -1, -1, 17, -1, -1, -1,
+ -1, 22, 23, 24, -1, -1, -1, -1, 29, 8,
+ -1, -1, -1, -1, -1, 36, -1, 593, 17, -1,
+ -1, -1, -1, 22, 23, 24, -1, -1, 49, 50,
+ 29, 52, 53, -1, -1, 56, -1, 36, 59, -1,
+ -1, 3, -1, -1, 620, 621, 8, 623, 69, 70,
+ 71, -1, 73, 74, 53, 17, 632, -1, -1, -1,
+ 22, 23, 24, -1, -1, -1, 65, 29, -1, -1,
+ -1, -1, 71, -1, 36, 74, -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, -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,
+ 22, 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, -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, 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, -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, 11, -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, -1,
+ -1, -1, 22, 23, 24, 17, -1, -1, 53, 29,
+ 22, 23, 24, -1, 59, -1, 36, 29, -1, -1,
+ -1, 8, -1, -1, 36, -1, 71, -1, 73, 74,
+ 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, -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, -1, -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,
- -1, 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,
+ -1, -1, -1, 8, -1, -1, 36, -1, 71, -1,
+ 73, 74, 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, -1, 74, -1, 17, -1, 53, -1,
+ -1, 22, 23, 24, -1, -1, -1, -1, 29, -1,
+ -1, -1, 8, -1, -1, 36, 71, -1, 73, 74,
+ -1, 17, -1, -1, -1, -1, 22, 23, 24, -1,
+ -1, -1, 53, 29, -1, -1, -1, -1, 59, -1,
+ 36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 71, -1, -1, 74, -1, -1, -1, 53, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -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,
- -1, -1, 38, 39, 40, -1, -1, 43, 44, 45,
+ 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, -1, 48, 49, 50, 51,
- 52, 53, 54, 55, 56
+ 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
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1543,14 +1548,14 @@
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, 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, 210, 195, 209, 202, 198, 208, 212, 195,
- 195, 60, 14, 117, 120, 126, 126, 189, 60, 60,
- 60, 60, 163, 20, 100, 66, 66, 68, 210, 210,
- 118, 112, 105
+ 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)
@@ -3438,8 +3443,19 @@
}
break;
- case 134:
-#line 955 "go.y"
+ case 133:
+#line 954 "go.y"
+ {
+ if((yyvsp[(5) - (8)].node) == N)
+ yyerror("middle index required in 3-index slice");
+ if((yyvsp[(7) - (8)].node) == N)
+ yyerror("final index required in 3-index slice");
+ (yyval.node) = nod(OSLICE3, (yyvsp[(1) - (8)].node), nod(OKEY, (yyvsp[(3) - (8)].node), nod(OKEY, (yyvsp[(5) - (8)].node), (yyvsp[(7) - (8)].node))));
+ }
+ break;
+
+ case 135:
+#line 963 "go.y"
{
// conversion
(yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N);
@@ -3447,8 +3463,8 @@
}
break;
- case 135:
-#line 961 "go.y"
+ case 136:
+#line 969 "go.y"
{
(yyval.node) = (yyvsp[(3) - (5)].node);
(yyval.node)->right = (yyvsp[(1) - (5)].node);
@@ -3457,8 +3473,8 @@
}
break;
- case 136:
-#line 968 "go.y"
+ case 137:
+#line 976 "go.y"
{
(yyval.node) = (yyvsp[(3) - (5)].node);
(yyval.node)->right = (yyvsp[(1) - (5)].node);
@@ -3466,8 +3482,8 @@
}
break;
- case 137:
-#line 974 "go.y"
+ case 138:
+#line 982 "go.y"
{
yyerror("cannot parenthesize type in composite literal");
(yyval.node) = (yyvsp[(5) - (7)].node);
@@ -3476,8 +3492,8 @@
}
break;
- case 139:
-#line 983 "go.y"
+ case 140:
+#line 991 "go.y"
{
// composite expression.
// make node early so we get the right line number.
@@ -3485,15 +3501,15 @@
}
break;
- case 140:
-#line 991 "go.y"
+ case 141:
+#line 999 "go.y"
{
(yyval.node) = nod(OKEY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
}
break;
- case 141:
-#line 997 "go.y"
+ case 142:
+#line 1005 "go.y"
{
// These nodes do not carry line numbers.
// Since a composite literal commonly spans several lines,
@@ -3512,15 +3528,7 @@
}
break;
- case 142:
-#line 1014 "go.y"
- {
- (yyval.node) = (yyvsp[(2) - (4)].node);
- (yyval.node)->list = (yyvsp[(3) - (4)].list);
- }
- break;
-
- case 144:
+ case 143:
#line 1022 "go.y"
{
(yyval.node) = (yyvsp[(2) - (4)].node);
@@ -3528,9 +3536,17 @@
}
break;
- case 146:
+ case 145:
#line 1030 "go.y"
{
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+ (yyval.node)->list = (yyvsp[(3) - (4)].list);
+ }
+ break;
+
+ case 147:
+#line 1038 "go.y"
+ {
(yyval.node) = (yyvsp[(2) - (3)].node);
// Need to know on lhs of := whether there are ( ).
@@ -3548,22 +3564,22 @@
}
break;
- case 150:
-#line 1056 "go.y"
+ case 151:
+#line 1064 "go.y"
{
(yyval.i) = LBODY;
}
break;
- case 151:
-#line 1060 "go.y"
+ case 152:
+#line 1068 "go.y"
{
(yyval.i) = '{';
}
break;
- case 152:
-#line 1071 "go.y"
+ case 153:
+#line 1079 "go.y"
{
if((yyvsp[(1) - (1)].sym) == S)
(yyval.node) = N;
@@ -3572,22 +3588,22 @@
}
break;
- case 153:
-#line 1080 "go.y"
+ case 154:
+#line 1088 "go.y"
{
(yyval.node) = dclname((yyvsp[(1) - (1)].sym));
}
break;
- case 154:
-#line 1085 "go.y"
+ case 155:
+#line 1093 "go.y"
{
(yyval.node) = N;
}
break;
- case 156:
-#line 1092 "go.y"
+ case 157:
+#line 1100 "go.y"
{
(yyval.sym) = (yyvsp[(1) - (1)].sym);
// during imports, unqualified non-exported identifiers are from builtinpkg
@@ -3596,15 +3612,15 @@
}
break;
- case 158:
-#line 1100 "go.y"
+ case 159:
+#line 1108 "go.y"
{
(yyval.sym) = S;
}
break;
- case 159:
-#line 1106 "go.y"
+ case 160:
+#line 1114 "go.y"
{
Pkg *p;
@@ -3619,8 +3635,8 @@
}
break;
- case 160:
-#line 1121 "go.y"
+ case 161:
+#line 1129 "go.y"
{
(yyval.node) = oldname((yyvsp[(1) - (1)].sym));
if((yyval.node)->pack != N)
@@ -3628,44 +3644,44 @@
}
break;
- case 162:
-#line 1141 "go.y"
+ case 163:
+#line 1149 "go.y"
{
yyerror("final argument in variadic function missing type");
(yyval.node) = nod(ODDD, typenod(typ(TINTER)), N);
}
break;
- case 163:
-#line 1146 "go.y"
+ case 164:
+#line 1154 "go.y"
{
(yyval.node) = nod(ODDD, (yyvsp[(2) - (2)].node), N);
}
break;
- case 169:
-#line 1157 "go.y"
+ case 170:
+#line 1165 "go.y"
{
(yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);
}
break;
- case 173:
-#line 1166 "go.y"
+ case 174:
+#line 1174 "go.y"
{
(yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);
}
break;
- case 178:
-#line 1176 "go.y"
+ case 179:
+#line 1184 "go.y"
{
(yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);
}
break;
- case 188:
-#line 1197 "go.y"
+ case 189:
+#line 1205 "go.y"
{
if((yyvsp[(1) - (3)].node)->op == OPACK) {
Sym *s;
@@ -3678,61 +3694,61 @@
}
break;
- case 189:
-#line 1210 "go.y"
+ case 190:
+#line 1218 "go.y"
{
(yyval.node) = nod(OTARRAY, (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node));
}
break;
- case 190:
-#line 1214 "go.y"
+ case 191:
+#line 1222 "go.y"
{
// array literal of nelem
(yyval.node) = nod(OTARRAY, nod(ODDD, N, N), (yyvsp[(4) - (4)].node));
}
break;
- case 191:
-#line 1219 "go.y"
+ case 192:
+#line 1227 "go.y"
{
(yyval.node) = nod(OTCHAN, (yyvsp[(2) - (2)].node), N);
(yyval.node)->etype = Cboth;
}
break;
- case 192:
-#line 1224 "go.y"
+ case 193:
+#line 1232 "go.y"
{
(yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);
(yyval.node)->etype = Csend;
}
break;
- case 193:
-#line 1229 "go.y"
+ case 194:
+#line 1237 "go.y"
{
(yyval.node) = nod(OTMAP, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));
}
break;
- case 196:
-#line 1237 "go.y"
+ case 197:
+#line 1245 "go.y"
{
(yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);
}
break;
- case 197:
-#line 1243 "go.y"
+ case 198:
+#line 1251 "go.y"
{
(yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);
(yyval.node)->etype = Crecv;
}
break;
- case 198:
-#line 1250 "go.y"
+ case 199:
+#line 1258 "go.y"
{
(yyval.node) = nod(OTSTRUCT, N, N);
(yyval.node)->list = (yyvsp[(3) - (5)].list);
@@ -3740,16 +3756,16 @@
}
break;
- case 199:
-#line 1256 "go.y"
- {
- (yyval.node) = nod(OTSTRUCT, N, N);
- fixlbrace((yyvsp[(2) - (3)].i));
- }
- break;
-
case 200:
-#line 1263 "go.y"
+#line 1264 "go.y"
+ {
+ (yyval.node) = nod(OTSTRUCT, N, N);
+ fixlbrace((yyvsp[(2) - (3)].i));
+ }
+ break;
+
+ case 201:
+#line 1271 "go.y"
{
(yyval.node) = nod(OTINTER, N, N);
(yyval.node)->list = (yyvsp[(3) - (5)].list);
@@ -3757,16 +3773,16 @@
}
break;
- case 201:
-#line 1269 "go.y"
+ case 202:
+#line 1277 "go.y"
{
(yyval.node) = nod(OTINTER, N, N);
fixlbrace((yyvsp[(2) - (3)].i));
}
break;
- case 202:
-#line 1280 "go.y"
+ case 203:
+#line 1288 "go.y"
{
(yyval.node) = (yyvsp[(2) - (3)].node);
if((yyval.node) == N)
@@ -3780,8 +3796,8 @@
}
break;
- case 203:
-#line 1294 "go.y"
+ case 204:
+#line 1302 "go.y"
{
Node *t;
@@ -3812,8 +3828,8 @@
}
break;
- case 204:
-#line 1323 "go.y"
+ case 205:
+#line 1331 "go.y"
{
Node *rcvr, *t;
@@ -3853,8 +3869,8 @@
}
break;
- case 205:
-#line 1363 "go.y"
+ case 206:
+#line 1371 "go.y"
{
Sym *s;
Type *t;
@@ -3881,8 +3897,8 @@
}
break;
- case 206:
-#line 1388 "go.y"
+ case 207:
+#line 1396 "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));
@@ -3900,8 +3916,8 @@
}
break;
- case 207:
-#line 1406 "go.y"
+ case 208:
+#line 1414 "go.y"
{
(yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1);
(yyval.node) = nod(OTFUNC, N, N);
@@ -3910,15 +3926,15 @@
}
break;
- case 208:
-#line 1414 "go.y"
+ case 209:
+#line 1422 "go.y"
{
(yyval.list) = nil;
}
break;
- case 209:
-#line 1418 "go.y"
+ case 210:
+#line 1426 "go.y"
{
(yyval.list) = (yyvsp[(2) - (3)].list);
if((yyval.list) == nil)
@@ -3926,59 +3942,59 @@
}
break;
- case 210:
-#line 1426 "go.y"
+ case 211:
+#line 1434 "go.y"
{
(yyval.list) = nil;
}
break;
- case 211:
-#line 1430 "go.y"
+ case 212:
+#line 1438 "go.y"
{
(yyval.list) = list1(nod(ODCLFIELD, N, (yyvsp[(1) - (1)].node)));
}
break;
- case 212:
-#line 1434 "go.y"
+ case 213:
+#line 1442 "go.y"
{
(yyvsp[(2) - (3)].list) = checkarglist((yyvsp[(2) - (3)].list), 0);
(yyval.list) = (yyvsp[(2) - (3)].list);
}
break;
- case 213:
-#line 1441 "go.y"
+ case 214:
+#line 1449 "go.y"
{
closurehdr((yyvsp[(1) - (1)].node));
}
break;
- case 214:
-#line 1447 "go.y"
+ case 215:
+#line 1455 "go.y"
{
(yyval.node) = closurebody((yyvsp[(3) - (4)].list));
fixlbrace((yyvsp[(2) - (4)].i));
}
break;
- case 215:
-#line 1452 "go.y"
+ case 216:
+#line 1460 "go.y"
{
(yyval.node) = closurebody(nil);
}
break;
- case 216:
-#line 1463 "go.y"
+ case 217:
+#line 1471 "go.y"
{
(yyval.list) = nil;
}
break;
- case 217:
-#line 1467 "go.y"
+ case 218:
+#line 1475 "go.y"
{
(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list));
if(nsyntaxerrors == 0)
@@ -3988,57 +4004,57 @@
}
break;
- case 219:
-#line 1478 "go.y"
- {
- (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
- }
- break;
-
- case 221:
-#line 1485 "go.y"
+ case 220:
+#line 1486 "go.y"
{
(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
}
break;
case 222:
-#line 1491 "go.y"
- {
- (yyval.list) = list1((yyvsp[(1) - (1)].node));
- }
- break;
-
- case 223:
-#line 1495 "go.y"
- {
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
- }
- break;
-
- case 225:
-#line 1502 "go.y"
+#line 1493 "go.y"
{
(yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
}
break;
- case 226:
-#line 1508 "go.y"
+ case 223:
+#line 1499 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
- case 227:
-#line 1512 "go.y"
+ case 224:
+#line 1503 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
+ case 226:
+#line 1510 "go.y"
+ {
+ (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
+ }
+ break;
+
+ case 227:
+#line 1516 "go.y"
+ {
+ (yyval.list) = list1((yyvsp[(1) - (1)].node));
+ }
+ break;
+
case 228:
-#line 1518 "go.y"
+#line 1520 "go.y"
+ {
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ }
+ break;
+
+ case 229:
+#line 1526 "go.y"
{
NodeList *l;
@@ -4063,16 +4079,16 @@
}
break;
- case 229:
-#line 1541 "go.y"
+ case 230:
+#line 1549 "go.y"
{
(yyvsp[(1) - (2)].node)->val = (yyvsp[(2) - (2)].val);
(yyval.list) = list1((yyvsp[(1) - (2)].node));
}
break;
- case 230:
-#line 1546 "go.y"
+ case 231:
+#line 1554 "go.y"
{
(yyvsp[(2) - (4)].node)->val = (yyvsp[(4) - (4)].val);
(yyval.list) = list1((yyvsp[(2) - (4)].node));
@@ -4080,8 +4096,8 @@
}
break;
- case 231:
-#line 1552 "go.y"
+ case 232:
+#line 1560 "go.y"
{
(yyvsp[(2) - (3)].node)->right = nod(OIND, (yyvsp[(2) - (3)].node)->right, N);
(yyvsp[(2) - (3)].node)->val = (yyvsp[(3) - (3)].val);
@@ -4089,18 +4105,8 @@
}
break;
- case 232:
-#line 1558 "go.y"
- {
- (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);
- (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);
- (yyval.list) = list1((yyvsp[(3) - (5)].node));
- yyerror("cannot parenthesize embedded type");
- }
- break;
-
case 233:
-#line 1565 "go.y"
+#line 1566 "go.y"
{
(yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);
(yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);
@@ -4110,7 +4116,17 @@
break;
case 234:
-#line 1574 "go.y"
+#line 1573 "go.y"
+ {
+ (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);
+ (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);
+ (yyval.list) = list1((yyvsp[(3) - (5)].node));
+ yyerror("cannot parenthesize embedded type");
+ }
+ break;
+
+ case 235:
+#line 1582 "go.y"
{
Node *n;
@@ -4121,8 +4137,8 @@
}
break;
- case 235:
-#line 1583 "go.y"
+ case 236:
+#line 1591 "go.y"
{
Pkg *pkg;
@@ -4137,38 +4153,38 @@
}
break;
- case 236:
-#line 1598 "go.y"
+ case 237:
+#line 1606 "go.y"
{
(yyval.node) = embedded((yyvsp[(1) - (1)].sym));
}
break;
- case 237:
-#line 1604 "go.y"
+ case 238:
+#line 1612 "go.y"
{
(yyval.node) = nod(ODCLFIELD, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
ifacedcl((yyval.node));
}
break;
- case 238:
-#line 1609 "go.y"
+ case 239:
+#line 1617 "go.y"
{
(yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(1) - (1)].sym)));
}
break;
- case 239:
-#line 1613 "go.y"
+ case 240:
+#line 1621 "go.y"
{
(yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(2) - (3)].sym)));
yyerror("cannot parenthesize embedded type");
}
break;
- case 240:
-#line 1620 "go.y"
+ case 241:
+#line 1628 "go.y"
{
// without func keyword
(yyvsp[(2) - (4)].list) = checkarglist((yyvsp[(2) - (4)].list), 1);
@@ -4178,17 +4194,8 @@
}
break;
- case 242:
-#line 1634 "go.y"
- {
- (yyval.node) = nod(ONONAME, N, N);
- (yyval.node)->sym = (yyvsp[(1) - (2)].sym);
- (yyval.node) = nod(OKEY, (yyval.node), (yyvsp[(2) - (2)].node));
- }
- break;
-
case 243:
-#line 1640 "go.y"
+#line 1642 "go.y"
{
(yyval.node) = nod(ONONAME, N, N);
(yyval.node)->sym = (yyvsp[(1) - (2)].sym);
@@ -4196,65 +4203,74 @@
}
break;
- case 245:
-#line 1649 "go.y"
+ case 244:
+#line 1648 "go.y"
+ {
+ (yyval.node) = nod(ONONAME, N, N);
+ (yyval.node)->sym = (yyvsp[(1) - (2)].sym);
+ (yyval.node) = nod(OKEY, (yyval.node), (yyvsp[(2) - (2)].node));
+ }
+ break;
+
+ case 246:
+#line 1657 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
- case 246:
-#line 1653 "go.y"
+ case 247:
+#line 1661 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
- case 247:
-#line 1658 "go.y"
+ case 248:
+#line 1666 "go.y"
{
(yyval.list) = nil;
}
break;
- case 248:
-#line 1662 "go.y"
- {
- (yyval.list) = (yyvsp[(1) - (2)].list);
- }
- break;
-
case 249:
#line 1670 "go.y"
{
+ (yyval.list) = (yyvsp[(1) - (2)].list);
+ }
+ break;
+
+ case 250:
+#line 1678 "go.y"
+ {
(yyval.node) = N;
}
break;
- case 251:
-#line 1675 "go.y"
+ case 252:
+#line 1683 "go.y"
{
(yyval.node) = liststmt((yyvsp[(1) - (1)].list));
}
break;
- case 253:
-#line 1680 "go.y"
+ case 254:
+#line 1688 "go.y"
{
(yyval.node) = N;
}
break;
- case 259:
-#line 1691 "go.y"
+ case 260:
+#line 1699 "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 260:
-#line 1696 "go.y"
+ case 261:
+#line 1704 "go.y"
{
NodeList *l;
@@ -4266,52 +4282,52 @@
}
break;
- case 261:
-#line 1706 "go.y"
+ case 262:
+#line 1714 "go.y"
{
// will be converted to OFALL
(yyval.node) = nod(OXFALL, N, N);
}
break;
- case 262:
-#line 1711 "go.y"
+ case 263:
+#line 1719 "go.y"
{
(yyval.node) = nod(OBREAK, (yyvsp[(2) - (2)].node), N);
}
break;
- case 263:
-#line 1715 "go.y"
+ case 264:
+#line 1723 "go.y"
{
(yyval.node) = nod(OCONTINUE, (yyvsp[(2) - (2)].node), N);
}
break;
- case 264:
-#line 1719 "go.y"
+ case 265:
+#line 1727 "go.y"
{
(yyval.node) = nod(OPROC, (yyvsp[(2) - (2)].node), N);
}
break;
- case 265:
-#line 1723 "go.y"
+ case 266:
+#line 1731 "go.y"
{
(yyval.node) = nod(ODEFER, (yyvsp[(2) - (2)].node), N);
}
break;
- case 266:
-#line 1727 "go.y"
+ case 267:
+#line 1735 "go.y"
{
(yyval.node) = nod(OGOTO, (yyvsp[(2) - (2)].node), N);
(yyval.node)->sym = dclstack; // context, for goto restrictions
}
break;
- case 267:
-#line 1732 "go.y"
+ case 268:
+#line 1740 "go.y"
{
(yyval.node) = nod(ORETURN, N, N);
(yyval.node)->list = (yyvsp[(2) - (2)].list);
@@ -4330,8 +4346,8 @@
}
break;
- case 268:
-#line 1751 "go.y"
+ case 269:
+#line 1759 "go.y"
{
(yyval.list) = nil;
if((yyvsp[(1) - (1)].node) != N)
@@ -4339,8 +4355,8 @@
}
break;
- case 269:
-#line 1757 "go.y"
+ case 270:
+#line 1765 "go.y"
{
(yyval.list) = (yyvsp[(1) - (3)].list);
if((yyvsp[(3) - (3)].node) != N)
@@ -4348,190 +4364,190 @@
}
break;
- case 270:
-#line 1765 "go.y"
+ case 271:
+#line 1773 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
- case 271:
-#line 1769 "go.y"
- {
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
- }
- break;
-
case 272:
-#line 1775 "go.y"
+#line 1777 "go.y"
{
- (yyval.list) = list1((yyvsp[(1) - (1)].node));
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
case 273:
-#line 1779 "go.y"
+#line 1783 "go.y"
{
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ (yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
case 274:
-#line 1785 "go.y"
+#line 1787 "go.y"
{
- (yyval.list) = list1((yyvsp[(1) - (1)].node));
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
case 275:
-#line 1789 "go.y"
+#line 1793 "go.y"
{
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ (yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
case 276:
-#line 1795 "go.y"
- {
- (yyval.list) = list1((yyvsp[(1) - (1)].node));
- }
- break;
-
- case 277:
-#line 1799 "go.y"
+#line 1797 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
- case 278:
-#line 1808 "go.y"
+ case 277:
+#line 1803 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
+ case 278:
+#line 1807 "go.y"
+ {
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ }
+ break;
+
case 279:
-#line 1812 "go.y"
+#line 1816 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
case 280:
-#line 1816 "go.y"
+#line 1820 "go.y"
{
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ (yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
case 281:
-#line 1820 "go.y"
+#line 1824 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
case 282:
-#line 1825 "go.y"
+#line 1828 "go.y"
+ {
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ }
+ break;
+
+ case 283:
+#line 1833 "go.y"
{
(yyval.list) = nil;
}
break;
- case 283:
-#line 1829 "go.y"
+ case 284:
+#line 1837 "go.y"
{
(yyval.list) = (yyvsp[(1) - (2)].list);
}
break;
- case 288:
-#line 1843 "go.y"
+ case 289:
+#line 1851 "go.y"
{
(yyval.node) = N;
}
break;
- case 290:
-#line 1849 "go.y"
+ case 291:
+#line 1857 "go.y"
{
(yyval.list) = nil;
}
break;
- case 292:
-#line 1855 "go.y"
+ case 293:
+#line 1863 "go.y"
{
(yyval.node) = N;
}
break;
- case 294:
-#line 1861 "go.y"
+ case 295:
+#line 1869 "go.y"
{
(yyval.list) = nil;
}
break;
- case 296:
-#line 1867 "go.y"
+ case 297:
+#line 1875 "go.y"
{
(yyval.list) = nil;
}
break;
- case 298:
-#line 1873 "go.y"
+ case 299:
+#line 1881 "go.y"
{
(yyval.list) = nil;
}
break;
- case 300:
-#line 1879 "go.y"
+ case 301:
+#line 1887 "go.y"
{
(yyval.val).ctype = CTxxx;
}
break;
- case 302:
-#line 1889 "go.y"
+ case 303:
+#line 1897 "go.y"
{
importimport((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].val).u.sval);
}
break;
- case 303:
-#line 1893 "go.y"
+ case 304:
+#line 1901 "go.y"
{
importvar((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].type));
}
break;
- case 304:
-#line 1897 "go.y"
+ case 305:
+#line 1905 "go.y"
{
importconst((yyvsp[(2) - (5)].sym), types[TIDEAL], (yyvsp[(4) - (5)].node));
}
break;
- case 305:
-#line 1901 "go.y"
+ case 306:
+#line 1909 "go.y"
{
importconst((yyvsp[(2) - (6)].sym), (yyvsp[(3) - (6)].type), (yyvsp[(5) - (6)].node));
}
break;
- case 306:
-#line 1905 "go.y"
+ case 307:
+#line 1913 "go.y"
{
importtype((yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].type));
}
break;
- case 307:
-#line 1909 "go.y"
+ case 308:
+#line 1917 "go.y"
{
if((yyvsp[(2) - (4)].node) == N) {
dclcontext = PEXTERN; // since we skip the funcbody below
@@ -4551,31 +4567,31 @@
}
break;
- case 308:
-#line 1929 "go.y"
+ case 309:
+#line 1937 "go.y"
{
(yyval.sym) = (yyvsp[(1) - (1)].sym);
structpkg = (yyval.sym)->pkg;
}
break;
- case 309:
-#line 1936 "go.y"
+ case 310:
+#line 1944 "go.y"
{
(yyval.type) = pkgtype((yyvsp[(1) - (1)].sym));
importsym((yyvsp[(1) - (1)].sym), OTYPE);
}
break;
- case 315:
-#line 1956 "go.y"
+ case 316:
+#line 1964 "go.y"
{
(yyval.type) = pkgtype((yyvsp[(1) - (1)].sym));
}
break;
- case 316:
-#line 1960 "go.y"
+ case 317:
+#line 1968 "go.y"
{
// predefined name like uint8
(yyvsp[(1) - (1)].sym) = pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg);
@@ -4587,50 +4603,50 @@
}
break;
- case 317:
-#line 1970 "go.y"
+ case 318:
+#line 1978 "go.y"
{
(yyval.type) = aindex(N, (yyvsp[(3) - (3)].type));
}
break;
- case 318:
-#line 1974 "go.y"
+ case 319:
+#line 1982 "go.y"
{
(yyval.type) = aindex(nodlit((yyvsp[(2) - (4)].val)), (yyvsp[(4) - (4)].type));
}
break;
- case 319:
-#line 1978 "go.y"
+ case 320:
+#line 1986 "go.y"
{
(yyval.type) = maptype((yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].type));
}
break;
- case 320:
-#line 1982 "go.y"
+ case 321:
+#line 1990 "go.y"
{
(yyval.type) = tostruct((yyvsp[(3) - (4)].list));
}
break;
- case 321:
-#line 1986 "go.y"
+ case 322:
+#line 1994 "go.y"
{
(yyval.type) = tointerface((yyvsp[(3) - (4)].list));
}
break;
- case 322:
-#line 1990 "go.y"
+ case 323:
+#line 1998 "go.y"
{
(yyval.type) = ptrto((yyvsp[(2) - (2)].type));
}
break;
- case 323:
-#line 1994 "go.y"
+ case 324:
+#line 2002 "go.y"
{
(yyval.type) = typ(TCHAN);
(yyval.type)->type = (yyvsp[(2) - (2)].type);
@@ -4638,8 +4654,8 @@
}
break;
- case 324:
-#line 2000 "go.y"
+ case 325:
+#line 2008 "go.y"
{
(yyval.type) = typ(TCHAN);
(yyval.type)->type = (yyvsp[(3) - (4)].type);
@@ -4647,33 +4663,33 @@
}
break;
- case 325:
-#line 2006 "go.y"
- {
- (yyval.type) = typ(TCHAN);
- (yyval.type)->type = (yyvsp[(3) - (3)].type);
- (yyval.type)->chan = Csend;
- }
- break;
-
case 326:
#line 2014 "go.y"
{
(yyval.type) = typ(TCHAN);
(yyval.type)->type = (yyvsp[(3) - (3)].type);
- (yyval.type)->chan = Crecv;
+ (yyval.type)->chan = Csend;
}
break;
case 327:
#line 2022 "go.y"
{
- (yyval.type) = functype(nil, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list));
+ (yyval.type) = typ(TCHAN);
+ (yyval.type)->type = (yyvsp[(3) - (3)].type);
+ (yyval.type)->chan = Crecv;
}
break;
case 328:
-#line 2028 "go.y"
+#line 2030 "go.y"
+ {
+ (yyval.type) = functype(nil, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list));
+ }
+ break;
+
+ case 329:
+#line 2036 "go.y"
{
(yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(2) - (3)].type)));
if((yyvsp[(1) - (3)].sym))
@@ -4682,8 +4698,8 @@
}
break;
- case 329:
-#line 2035 "go.y"
+ case 330:
+#line 2043 "go.y"
{
Type *t;
@@ -4699,8 +4715,8 @@
}
break;
- case 330:
-#line 2051 "go.y"
+ case 331:
+#line 2059 "go.y"
{
Sym *s;
@@ -4718,50 +4734,50 @@
}
break;
- case 331:
-#line 2069 "go.y"
+ case 332:
+#line 2077 "go.y"
{
(yyval.node) = nod(ODCLFIELD, newname((yyvsp[(1) - (5)].sym)), typenod(functype(fakethis(), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list))));
}
break;
- case 332:
-#line 2073 "go.y"
+ case 333:
+#line 2081 "go.y"
{
(yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type)));
}
break;
- case 333:
-#line 2078 "go.y"
+ case 334:
+#line 2086 "go.y"
{
(yyval.list) = nil;
}
break;
- case 335:
-#line 2085 "go.y"
+ case 336:
+#line 2093 "go.y"
{
(yyval.list) = (yyvsp[(2) - (3)].list);
}
break;
- case 336:
-#line 2089 "go.y"
+ case 337:
+#line 2097 "go.y"
{
(yyval.list) = list1(nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type))));
}
break;
- case 337:
-#line 2099 "go.y"
+ case 338:
+#line 2107 "go.y"
{
(yyval.node) = nodlit((yyvsp[(1) - (1)].val));
}
break;
- case 338:
-#line 2103 "go.y"
+ case 339:
+#line 2111 "go.y"
{
(yyval.node) = nodlit((yyvsp[(2) - (2)].val));
switch((yyval.node)->val.ctype){
@@ -4778,8 +4794,8 @@
}
break;
- case 339:
-#line 2118 "go.y"
+ case 340:
+#line 2126 "go.y"
{
(yyval.node) = oldname(pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg));
if((yyval.node)->op != OLITERAL)
@@ -4787,8 +4803,8 @@
}
break;
- case 341:
-#line 2127 "go.y"
+ case 342:
+#line 2135 "go.y"
{
if((yyvsp[(2) - (5)].node)->val.ctype == CTRUNE && (yyvsp[(4) - (5)].node)->val.ctype == CTINT) {
(yyval.node) = (yyvsp[(2) - (5)].node);
@@ -4801,43 +4817,43 @@
}
break;
- case 344:
-#line 2143 "go.y"
+ case 345:
+#line 2151 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
- case 345:
-#line 2147 "go.y"
- {
- (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
- }
- break;
-
case 346:
-#line 2153 "go.y"
- {
- (yyval.list) = list1((yyvsp[(1) - (1)].node));
- }
- break;
-
- case 347:
-#line 2157 "go.y"
+#line 2155 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
break;
- case 348:
-#line 2163 "go.y"
+ case 347:
+#line 2161 "go.y"
{
(yyval.list) = list1((yyvsp[(1) - (1)].node));
}
break;
+ case 348:
+#line 2165 "go.y"
+ {
+ (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
+ }
+ break;
+
case 349:
-#line 2167 "go.y"
+#line 2171 "go.y"
+ {
+ (yyval.list) = list1((yyvsp[(1) - (1)].node));
+ }
+ break;
+
+ case 350:
+#line 2175 "go.y"
{
(yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
}
@@ -4845,7 +4861,7 @@
/* Line 1267 of yacc.c. */
-#line 4850 "y.tab.c"
+#line 4866 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5059,7 +5075,7 @@
}
-#line 2171 "go.y"
+#line 2179 "go.y"
static void
diff --git a/src/cmd/gc/yerr.h b/src/cmd/gc/yerr.h
index 4cbbd39..d575afd 100644
--- a/src/cmd/gc/yerr.h
+++ b/src/cmd/gc/yerr.h
@@ -74,6 +74,6 @@
112, LNAME,
"nested func not allowed",
- 642, ';',
+ 644, ';',
"else must be followed by if or statement block"
};
diff --git a/test/fixedbugs/issue4251.go b/test/fixedbugs/issue4251.go
index a14e089..4adec2b 100644
--- a/test/fixedbugs/issue4251.go
+++ b/test/fixedbugs/issue4251.go
@@ -9,13 +9,13 @@
package p
func F1(s []byte) []byte {
- return s[2:1] // ERROR "inverted"
+ return s[2:1] // ERROR "invalid slice index"
}
func F2(a [10]byte) []byte {
- return a[2:1] // ERROR "inverted"
+ return a[2:1] // ERROR "invalid slice index"
}
func F3(s string) string {
- return s[2:1] // ERROR "inverted"
+ return s[2:1] // ERROR "invalid slice index"
}
diff --git a/test/slice3.go b/test/slice3.go
new file mode 100644
index 0000000..3cf34b5
--- /dev/null
+++ b/test/slice3.go
@@ -0,0 +1,156 @@
+// runoutput
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test run-time behavior of 3-index slice expressions.
+
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+ "strconv"
+)
+
+var bout *bufio.Writer
+
+func main() {
+ bout = bufio.NewWriter(os.Stdout)
+
+ fmt.Fprintf(bout, "%s", programTop)
+ fmt.Fprintf(bout, "func main() {\n")
+
+ index := []string{
+ "0",
+ "1",
+ "2",
+ "3",
+ "10",
+ "20",
+ "vminus1",
+ "v0",
+ "v1",
+ "v2",
+ "v3",
+ "v10",
+ "v20",
+ }
+
+ parse := func(s string) (n int, isconst bool) {
+ if s == "vminus1" {
+ return -1, false
+ }
+ isconst = true
+ if s[0] == 'v' {
+ isconst = false
+ s = s[1:]
+ }
+ n, _ = strconv.Atoi(s)
+ return n, isconst
+ }
+
+ const Cap = 10 // cap of slice, array
+
+ for _, base := range []string{"array", "slice"} {
+ for _, i := range index {
+ iv, iconst := parse(i)
+ for _, j := range index {
+ jv, jconst := parse(j)
+ for _, k := range index {
+ kv, kconst := parse(k)
+ // Avoid errors that would make the program not compile.
+ // Those are tested by slice3err.go.
+ switch {
+ case iconst && jconst && iv > jv,
+ jconst && kconst && jv > kv,
+ iconst && kconst && iv > kv,
+ iconst && base == "array" && iv > Cap,
+ jconst && base == "array" && jv > Cap,
+ kconst && base == "array" && kv > Cap:
+ continue
+ }
+
+ expr := base + "[" + i + ":" + j + ":" + k + "]"
+ var xbase, xlen, xcap int
+ if iv > jv || jv > kv || kv > Cap || iv < 0 || jv < 0 || kv < 0 {
+ xbase, xlen, xcap = -1, -1, -1
+ } else {
+ xbase = iv
+ xlen = jv - iv
+ xcap = kv - iv
+ }
+ fmt.Fprintf(bout, "\tcheckSlice(%q, func() []byte { return %s }, %d, %d, %d)\n", expr, expr, xbase, xlen, xcap)
+ }
+ }
+ }
+ }
+
+ fmt.Fprintf(bout, "\tif !ok { os.Exit(1) }\n")
+ fmt.Fprintf(bout, "}\n")
+ bout.Flush()
+}
+
+var programTop = `
+package main
+
+import (
+ "fmt"
+ "os"
+ "unsafe"
+)
+
+var ok = true
+
+var (
+ array = new([10]byte)
+ slice = array[:]
+
+ vminus1 = -1
+ v0 = 0
+ v1 = 1
+ v2 = 2
+ v3 = 3
+ v4 = 4
+ v5 = 5
+ v10 = 10
+ v20 = 20
+)
+
+func notOK() {
+ if ok {
+ println("BUG:")
+ ok = false
+ }
+}
+
+func checkSlice(desc string, f func() []byte, xbase, xlen, xcap int) {
+ defer func() {
+ if err := recover(); err != nil {
+ if xbase >= 0 {
+ notOK()
+ println(desc, " unexpected panic: ", fmt.Sprint(err))
+ }
+ }
+ // "no panic" is checked below
+ }()
+
+ x := f()
+
+ arrayBase := uintptr(unsafe.Pointer(array))
+ raw := *(*[3]uintptr)(unsafe.Pointer(&x))
+ base, len, cap := raw[0] - arrayBase, raw[1], raw[2]
+ if xbase < 0 {
+ notOK()
+ println(desc, "=", base, len, cap, "want panic")
+ return
+ }
+ if base != uintptr(xbase) || len != uintptr(xlen) || cap != uintptr(xcap) {
+ notOK()
+ println(desc, "=", base, len, cap, "want", xbase, xlen, xcap)
+ }
+}
+
+`
diff --git a/test/slice3err.go b/test/slice3err.go
new file mode 100644
index 0000000..c48ebfe
--- /dev/null
+++ b/test/slice3err.go
@@ -0,0 +1,121 @@
+// errorcheck
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var array *[10]int
+var slice []int
+var str string
+var i, j, k int
+
+func f() {
+ // check what missing arguments are allowed
+ _ = array[:]
+ _ = array[i:]
+ _ = array[:j]
+ _ = array[i:j]
+ _ = array[::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = array[i::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = array[:j:] // ERROR "final index required in 3-index slice"
+ _ = array[i:j:] // ERROR "final index required in 3-index slice"
+ _ = array[::k] // ERROR "middle index required in 3-index slice"
+ _ = array[i::k] // ERROR "middle index required in 3-index slice"
+ _ = array[:j:k]
+ _ = array[i:j:k]
+
+ _ = slice[:]
+ _ = slice[i:]
+ _ = slice[:j]
+ _ = slice[i:j]
+ _ = slice[::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = slice[i::] // ERROR "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = slice[:j:] // ERROR "final index required in 3-index slice"
+ _ = slice[i:j:] // ERROR "final index required in 3-index slice"
+ _ = slice[::k] // ERROR "middle index required in 3-index slice"
+ _ = slice[i::k] // ERROR "middle index required in 3-index slice"
+ _ = slice[:j:k]
+ _ = slice[i:j:k]
+
+ _ = str[:]
+ _ = str[i:]
+ _ = str[:j]
+ _ = str[i:j]
+ _ = str[::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = str[i::] // ERROR "3-index slice of string" "middle index required in 3-index slice" "final index required in 3-index slice"
+ _ = str[:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
+ _ = str[i:j:] // ERROR "3-index slice of string" "final index required in 3-index slice"
+ _ = str[::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
+ _ = str[i::k] // ERROR "3-index slice of string" "middle index required in 3-index slice"
+ _ = str[:j:k] // ERROR "3-index slice of string"
+ _ = str[i:j:k] // ERROR "3-index slice of string"
+
+ // check invalid indices
+ _ = array[1:2]
+ _ = array[2:1] // ERROR "invalid slice index"
+ _ = array[2:2]
+ _ = array[i:1]
+ _ = array[1:j]
+ _ = array[1:2:3]
+ _ = array[1:3:2] // ERROR "invalid slice index"
+ _ = array[2:1:3] // ERROR "invalid slice index"
+ _ = array[2:3:1] // ERROR "invalid slice index"
+ _ = array[3:1:2] // ERROR "invalid slice index"
+ _ = array[3:2:1] // ERROR "invalid slice index"
+ _ = array[i:1:2]
+ _ = array[i:2:1] // ERROR "invalid slice index"
+ _ = array[1:j:2]
+ _ = array[2:j:1] // ERROR "invalid slice index"
+ _ = array[1:2:k]
+ _ = array[2:1:k] // ERROR "invalid slice index"
+
+ _ = slice[1:2]
+ _ = slice[2:1] // ERROR "invalid slice index"
+ _ = slice[2:2]
+ _ = slice[i:1]
+ _ = slice[1:j]
+ _ = slice[1:2:3]
+ _ = slice[1:3:2] // ERROR "invalid slice index"
+ _ = slice[2:1:3] // ERROR "invalid slice index"
+ _ = slice[2:3:1] // ERROR "invalid slice index"
+ _ = slice[3:1:2] // ERROR "invalid slice index"
+ _ = slice[3:2:1] // ERROR "invalid slice index"
+ _ = slice[i:1:2]
+ _ = slice[i:2:1] // ERROR "invalid slice index"
+ _ = slice[1:j:2]
+ _ = slice[2:j:1] // ERROR "invalid slice index"
+ _ = slice[1:2:k]
+ _ = slice[2:1:k] // ERROR "invalid slice index"
+
+ _ = str[1:2]
+ _ = str[2:1] // ERROR "invalid slice index"
+ _ = str[2:2]
+ _ = str[i:1]
+ _ = str[1:j]
+
+ // check out of bounds indices on array
+ _ = array[11:11] // ERROR "out of bounds for 10-element array"
+ _ = array[11:12] // ERROR "out of bounds for 10-element array"
+ _ = array[11:] // ERROR "out of bounds for 10-element array"
+ _ = array[:11] // ERROR "out of bounds for 10-element array"
+ _ = array[1:11] // ERROR "out of bounds for 10-element array"
+ _ = array[1:11:12] // ERROR "out of bounds for 10-element array"
+ _ = array[1:2:11] // ERROR "out of bounds for 10-element array"
+ _ = array[1:11:3] // ERROR "out of bounds for 10-element array"
+ _ = array[11:2:3] // ERROR "out of bounds for 10-element array"
+ _ = array[11:12:13] // ERROR "out of bounds for 10-element array"
+
+ // slice bounds not checked
+ _ = slice[11:11]
+ _ = slice[11:12]
+ _ = slice[11:]
+ _ = slice[:11]
+ _ = slice[1:11]
+ _ = slice[1:11:12]
+ _ = slice[1:2:11]
+ _ = slice[1:11:3] // ERROR "invalid slice index"
+ _ = slice[11:2:3] // ERROR "invalid slice index"
+ _ = slice[11:12:13]
+}