summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embed.fnc3
-rw-r--r--embed.h1
-rw-r--r--op.c36
-rw-r--r--parser.h5
-rw-r--r--perl.h1
-rw-r--r--perly.act1027
-rw-r--r--perly.c2
-rw-r--r--perly.h2
-rw-r--r--perly.tab1379
-rw-r--r--perly.y274
-rw-r--r--pod/perldiag.pod54
-rw-r--r--proto.h4
-rw-r--r--sv.c5
-rw-r--r--t/op/signatures.t111
-rw-r--r--toke.c276
15 files changed, 1835 insertions, 1345 deletions
diff --git a/embed.fnc b/embed.fnc
index 6fb72e7ef6..1db5e1f6e8 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -475,7 +475,6 @@ Apd |void |fbm_compile |NN SV* sv|U32 flags
ApdR |char* |fbm_instr |NN unsigned char* big|NN unsigned char* bigend \
|NN SV* littlestr|U32 flags
p |CV * |find_lexical_cv|PADOFFSET off
-pR |OP * |parse_subsignature
: Defined in util.c, used only in perl.c
p |char* |find_script |NN const char *scriptname|bool dosearch \
|NULLOK const char *const *const search_ext|I32 flags
@@ -2990,4 +2989,6 @@ XEop |void |dtrace_probe_op |NN const OP *op
XEop |void |dtrace_probe_phase|enum perl_phase phase
#endif
+xpo |OP* |check_arity |int arity |bool max
+
: ex: set ts=8 sts=4 sw=4 noet:
diff --git a/embed.h b/embed.h
index efee6e978c..8cdb625bbf 100644
--- a/embed.h
+++ b/embed.h
@@ -1338,7 +1338,6 @@
#define pad_push(a,b) Perl_pad_push(aTHX_ a,b)
#define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b)
#define padlist_store(a,b,c) Perl_padlist_store(aTHX_ a,b,c)
-#define parse_subsignature() Perl_parse_subsignature(aTHX)
#define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a)
#define parser_free(a) Perl_parser_free(aTHX_ a)
#define peep(a) Perl_peep(aTHX_ a)
diff --git a/op.c b/op.c
index a95bc44be1..8da3886640 100644
--- a/op.c
+++ b/op.c
@@ -15018,6 +15018,42 @@ const_av_xsub(pTHX_ CV* cv)
XSRETURN(AvFILLp(av)+1);
}
+/* return an optree that checks for too few or too many args -
+ * used for subroutine signatures
+ */
+OP *
+Perl_check_arity(pTHX_ int arity, bool max)
+{
+ return
+ newSTATEOP(0, NULL,
+ newLOGOP(OP_OR, 0,
+ newBINOP((max ? OP_LE : OP_GE), 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))
+ ),
+ newSVOP(OP_CONST, 0, newSViv(arity))
+ ),
+ op_convert_list(OP_DIE, 0,
+ op_convert_list(OP_SPRINTF, 0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0,
+ max
+ ? newSVpvs("Too many arguments for subroutine at %s line %d.\n")
+ : newSVpvs("Too few arguments for subroutine at %s line %d.\n")
+ ),
+ newSLICEOP(0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0, newSViv(1)),
+ newSVOP(OP_CONST, 0, newSViv(2))),
+ newOP(OP_CALLER, 0)
+ )
+ )
+ )
+ )
+ )
+ );
+}
+
/*
* ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/parser.h b/parser.h
index b0525a498b..d4b1ec8905 100644
--- a/parser.h
+++ b/parser.h
@@ -116,6 +116,11 @@ typedef struct yy_parser {
char tokenbuf[256];
line_t herelines; /* number of lines in here-doc */
line_t preambling; /* line # when processing $ENV{PERL5DB} */
+
+ /* these are valid whiling parsing a subroutine signature */
+ int sig_elems; /* number of signature elements seen so far */
+ int sig_optelems; /* number of optional signature elems seen */
+ char sig_slurpy; /* the sigil of the slurpy var (or null) */
} yy_parser;
/* flags for lexer API */
diff --git a/perl.h b/perl.h
index 1a38933ec9..0c99831c6a 100644
--- a/perl.h
+++ b/perl.h
@@ -5312,6 +5312,7 @@ typedef enum {
XTERMBLOCK,
XBLOCKTERM,
XPOSTDEREF,
+ XSIGVAR, /* expecting a var in a sub signature */
XTERMORDORDOR /* evil hack */
/* update exp_name[] in toke.c if adding to this enum */
} expectation;
diff --git a/perly.act b/perly.act
index 63515d84c5..020b742db2 100644
--- a/perly.act
+++ b/perly.act
@@ -5,7 +5,7 @@
*/
case 2:
-#line 115 "perly.y" /* yacc.c:1646 */
+#line 118 "perly.y" /* yacc.c:1646 */
{
parser->expect = XSTATE;
}
@@ -13,7 +13,7 @@ case 2:
break;
case 3:
-#line 119 "perly.y" /* yacc.c:1646 */
+#line 122 "perly.y" /* yacc.c:1646 */
{
newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
PL_compiling.cop_seq = 0;
@@ -23,7 +23,7 @@ case 2:
break;
case 4:
-#line 125 "perly.y" /* yacc.c:1646 */
+#line 128 "perly.y" /* yacc.c:1646 */
{
parser->expect = XTERM;
}
@@ -31,7 +31,7 @@ case 2:
break;
case 5:
-#line 129 "perly.y" /* yacc.c:1646 */
+#line 132 "perly.y" /* yacc.c:1646 */
{
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
@@ -40,7 +40,7 @@ case 2:
break;
case 6:
-#line 134 "perly.y" /* yacc.c:1646 */
+#line 137 "perly.y" /* yacc.c:1646 */
{
parser->expect = XBLOCK;
}
@@ -48,7 +48,7 @@ case 2:
break;
case 7:
-#line 138 "perly.y" /* yacc.c:1646 */
+#line 141 "perly.y" /* yacc.c:1646 */
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
@@ -60,7 +60,7 @@ case 2:
break;
case 8:
-#line 146 "perly.y" /* yacc.c:1646 */
+#line 149 "perly.y" /* yacc.c:1646 */
{
parser->expect = XSTATE;
}
@@ -68,7 +68,7 @@ case 2:
break;
case 9:
-#line 150 "perly.y" /* yacc.c:1646 */
+#line 153 "perly.y" /* yacc.c:1646 */
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
@@ -80,7 +80,7 @@ case 2:
break;
case 10:
-#line 158 "perly.y" /* yacc.c:1646 */
+#line 161 "perly.y" /* yacc.c:1646 */
{
parser->expect = XSTATE;
}
@@ -88,7 +88,7 @@ case 2:
break;
case 11:
-#line 162 "perly.y" /* yacc.c:1646 */
+#line 165 "perly.y" /* yacc.c:1646 */
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
@@ -100,7 +100,7 @@ case 2:
break;
case 12:
-#line 170 "perly.y" /* yacc.c:1646 */
+#line 173 "perly.y" /* yacc.c:1646 */
{
parser->expect = XSTATE;
}
@@ -108,7 +108,7 @@ case 2:
break;
case 13:
-#line 174 "perly.y" /* yacc.c:1646 */
+#line 177 "perly.y" /* yacc.c:1646 */
{
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
@@ -117,7 +117,7 @@ case 2:
break;
case 14:
-#line 182 "perly.y" /* yacc.c:1646 */
+#line 185 "perly.y" /* yacc.c:1646 */
{ if (parser->copline > (line_t)(ps[-3].val.ival))
parser->copline = (line_t)(ps[-3].val.ival);
(yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
@@ -126,7 +126,7 @@ case 2:
break;
case 15:
-#line 190 "perly.y" /* yacc.c:1646 */
+#line 193 "perly.y" /* yacc.c:1646 */
{ if (parser->copline > (line_t)(ps[-6].val.ival))
parser->copline = (line_t)(ps[-6].val.ival);
(yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
@@ -135,14 +135,14 @@ case 2:
break;
case 16:
-#line 197 "perly.y" /* yacc.c:1646 */
+#line 200 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = block_start(TRUE);
parser->parsed_sub = 0; }
break;
case 17:
-#line 202 "perly.y" /* yacc.c:1646 */
+#line 205 "perly.y" /* yacc.c:1646 */
{ if (parser->copline > (line_t)(ps[-3].val.ival))
parser->copline = (line_t)(ps[-3].val.ival);
(yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
@@ -151,20 +151,20 @@ case 2:
break;
case 18:
-#line 209 "perly.y" /* yacc.c:1646 */
+#line 212 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = block_start(FALSE);
parser->parsed_sub = 0; }
break;
case 19:
-#line 215 "perly.y" /* yacc.c:1646 */
+#line 218 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 20:
-#line 217 "perly.y" /* yacc.c:1646 */
+#line 220 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
PL_pad_reset_pending = TRUE;
if ((ps[-1].val.opval) && (ps[0].val.opval))
@@ -174,13 +174,13 @@ case 2:
break;
case 21:
-#line 226 "perly.y" /* yacc.c:1646 */
+#line 229 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 22:
-#line 228 "perly.y" /* yacc.c:1646 */
+#line 231 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
PL_pad_reset_pending = TRUE;
if ((ps[-1].val.opval) && (ps[0].val.opval))
@@ -190,7 +190,7 @@ case 2:
break;
case 23:
-#line 237 "perly.y" /* yacc.c:1646 */
+#line 240 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
}
@@ -198,13 +198,13 @@ case 2:
break;
case 24:
-#line 241 "perly.y" /* yacc.c:1646 */
+#line 244 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 25:
-#line 245 "perly.y" /* yacc.c:1646 */
+#line 248 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
}
@@ -212,7 +212,7 @@ case 2:
break;
case 26:
-#line 249 "perly.y" /* yacc.c:1646 */
+#line 252 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
}
@@ -220,13 +220,13 @@ case 2:
break;
case 27:
-#line 256 "perly.y" /* yacc.c:1646 */
+#line 259 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 28:
-#line 258 "perly.y" /* yacc.c:1646 */
+#line 261 "perly.y" /* yacc.c:1646 */
{
CV *fmtcv = PL_compcv;
newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
@@ -240,7 +240,7 @@ case 2:
break;
case 29:
-#line 268 "perly.y" /* yacc.c:1646 */
+#line 271 "perly.y" /* yacc.c:1646 */
{
if ((ps[-1].val.opval)->op_type == OP_CONST) {
const char *const name =
@@ -266,7 +266,7 @@ case 2:
break;
case 30:
-#line 290 "perly.y" /* yacc.c:1646 */
+#line 293 "perly.y" /* yacc.c:1646 */
{
SvREFCNT_inc_simple_void(PL_compcv);
(ps[-5].val.opval)->op_type == OP_CONST
@@ -281,7 +281,7 @@ case 2:
break;
case 31:
-#line 301 "perly.y" /* yacc.c:1646 */
+#line 304 "perly.y" /* yacc.c:1646 */
{
if ((ps[-1].val.opval)->op_type == OP_CONST) {
const char *const name =
@@ -307,7 +307,7 @@ case 2:
break;
case 32:
-#line 323 "perly.y" /* yacc.c:1646 */
+#line 326 "perly.y" /* yacc.c:1646 */
{
OP *body;
if (parser->copline > (line_t)(ps[-2].val.ival))
@@ -328,7 +328,7 @@ case 2:
break;
case 33:
-#line 340 "perly.y" /* yacc.c:1646 */
+#line 343 "perly.y" /* yacc.c:1646 */
{
package((ps[-1].val.opval));
if ((ps[-2].val.opval))
@@ -339,13 +339,13 @@ case 2:
break;
case 34:
-#line 347 "perly.y" /* yacc.c:1646 */
+#line 350 "perly.y" /* yacc.c:1646 */
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 35:
-#line 349 "perly.y" /* yacc.c:1646 */
+#line 352 "perly.y" /* yacc.c:1646 */
{
SvREFCNT_inc_simple_void(PL_compcv);
utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
@@ -356,7 +356,7 @@ case 2:
break;
case 36:
-#line 356 "perly.y" /* yacc.c:1646 */
+#line 359 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-4].val.ival),
newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
@@ -366,7 +366,7 @@ case 2:
break;
case 37:
-#line 362 "perly.y" /* yacc.c:1646 */
+#line 365 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-4].val.ival),
newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
@@ -376,7 +376,7 @@ case 2:
break;
case 38:
-#line 368 "perly.y" /* yacc.c:1646 */
+#line 371 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
parser->copline = (line_t)(ps[-5].val.ival);
@@ -385,19 +385,19 @@ case 2:
break;
case 39:
-#line 373 "perly.y" /* yacc.c:1646 */
+#line 376 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
break;
case 40:
-#line 375 "perly.y" /* yacc.c:1646 */
+#line 378 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
break;
case 41:
-#line 377 "perly.y" /* yacc.c:1646 */
+#line 380 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -408,7 +408,7 @@ case 2:
break;
case 42:
-#line 384 "perly.y" /* yacc.c:1646 */
+#line 387 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -419,19 +419,19 @@ case 2:
break;
case 43:
-#line 391 "perly.y" /* yacc.c:1646 */
+#line 394 "perly.y" /* yacc.c:1646 */
{ parser->expect = XTERM; }
break;
case 44:
-#line 393 "perly.y" /* yacc.c:1646 */
+#line 396 "perly.y" /* yacc.c:1646 */
{ parser->expect = XTERM; }
break;
case 45:
-#line 396 "perly.y" /* yacc.c:1646 */
+#line 399 "perly.y" /* yacc.c:1646 */
{
OP *initop = (ps[-9].val.opval);
OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -450,7 +450,7 @@ case 2:
break;
case 46:
-#line 411 "perly.y" /* yacc.c:1646 */
+#line 414 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-8].val.ival);
@@ -459,7 +459,7 @@ case 2:
break;
case 47:
-#line 416 "perly.y" /* yacc.c:1646 */
+#line 419 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
@@ -469,13 +469,13 @@ case 2:
break;
case 48:
-#line 422 "perly.y" /* yacc.c:1646 */
+#line 425 "perly.y" /* yacc.c:1646 */
{ parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
case 49:
-#line 424 "perly.y" /* yacc.c:1646 */
+#line 427 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end(
(ps[-7].val.ival),
@@ -492,7 +492,7 @@ case 2:
break;
case 50:
-#line 437 "perly.y" /* yacc.c:1646 */
+#line 440 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
0, op_lvalue(newUNOP(OP_REFGEN, 0,
@@ -504,7 +504,7 @@ case 2:
break;
case 51:
-#line 445 "perly.y" /* yacc.c:1646 */
+#line 448 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = block_end((ps[-4].val.ival),
newFOROP(0, (OP*)NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
@@ -514,7 +514,7 @@ case 2:
break;
case 52:
-#line 451 "perly.y" /* yacc.c:1646 */
+#line 454 "perly.y" /* yacc.c:1646 */
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -524,7 +524,7 @@ case 2:
break;
case 53:
-#line 457 "perly.y" /* yacc.c:1646 */
+#line 460 "perly.y" /* yacc.c:1646 */
{
package((ps[-2].val.opval));
if ((ps[-3].val.opval)) {
@@ -535,7 +535,7 @@ case 2:
break;
case 54:
-#line 464 "perly.y" /* yacc.c:1646 */
+#line 467 "perly.y" /* yacc.c:1646 */
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -547,7 +547,7 @@ case 2:
break;
case 55:
-#line 472 "perly.y" /* yacc.c:1646 */
+#line 475 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = (ps[-1].val.opval);
}
@@ -555,7 +555,7 @@ case 2:
break;
case 56:
-#line 476 "perly.y" /* yacc.c:1646 */
+#line 479 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = (OP*)NULL;
parser->copline = NOLINE;
@@ -564,7 +564,7 @@ case 2:
break;
case 57:
-#line 484 "perly.y" /* yacc.c:1646 */
+#line 487 "perly.y" /* yacc.c:1646 */
{ OP *list;
if ((ps[0].val.opval)) {
OP *term = (ps[0].val.opval);
@@ -583,74 +583,74 @@ case 2:
break;
case 58:
-#line 501 "perly.y" /* yacc.c:1646 */
+#line 504 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = NULL; }
break;
case 59:
-#line 503 "perly.y" /* yacc.c:1646 */
+#line 506 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_unscope((ps[-1].val.opval)); }
break;
case 60:
-#line 508 "perly.y" /* yacc.c:1646 */
+#line 511 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 61:
-#line 510 "perly.y" /* yacc.c:1646 */
+#line 513 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 62:
-#line 512 "perly.y" /* yacc.c:1646 */
+#line 515 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 63:
-#line 514 "perly.y" /* yacc.c:1646 */
+#line 517 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 64:
-#line 516 "perly.y" /* yacc.c:1646 */
+#line 519 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
break;
case 65:
-#line 518 "perly.y" /* yacc.c:1646 */
+#line 521 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 66:
-#line 520 "perly.y" /* yacc.c:1646 */
+#line 523 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[0].val.opval), (ps[-2].val.opval), (OP*)NULL);
parser->copline = (line_t)(ps[-1].val.ival); }
break;
case 67:
-#line 523 "perly.y" /* yacc.c:1646 */
+#line 526 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
break;
case 68:
-#line 528 "perly.y" /* yacc.c:1646 */
+#line 531 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 69:
-#line 530 "perly.y" /* yacc.c:1646 */
+#line 533 "perly.y" /* yacc.c:1646 */
{
((ps[0].val.opval))->op_flags |= OPf_PARENS;
(yyval.opval) = op_scope((ps[0].val.opval));
@@ -659,7 +659,7 @@ case 2:
break;
case 70:
-#line 535 "perly.y" /* yacc.c:1646 */
+#line 538 "perly.y" /* yacc.c:1646 */
{ parser->copline = (line_t)(ps[-5].val.ival);
(yyval.opval) = newCONDOP(0,
newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
@@ -670,19 +670,19 @@ case 2:
break;
case 71:
-#line 545 "perly.y" /* yacc.c:1646 */
+#line 548 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 72:
-#line 547 "perly.y" /* yacc.c:1646 */
+#line 550 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
case 73:
-#line 552 "perly.y" /* yacc.c:1646 */
+#line 555 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
intro_my(); }
@@ -690,13 +690,13 @@ case 2:
break;
case 74:
-#line 558 "perly.y" /* yacc.c:1646 */
+#line 561 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 76:
-#line 564 "perly.y" /* yacc.c:1646 */
+#line 567 "perly.y" /* yacc.c:1646 */
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
(yyval.opval) = tmplval.opval; }
@@ -704,148 +704,421 @@ case 2:
break;
case 78:
-#line 572 "perly.y" /* yacc.c:1646 */
+#line 575 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = invert(scalar((ps[0].val.opval))); }
break;
case 79:
-#line 577 "perly.y" /* yacc.c:1646 */
+#line 580 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 80:
-#line 581 "perly.y" /* yacc.c:1646 */
+#line 584 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 81:
-#line 584 "perly.y" /* yacc.c:1646 */
+#line 587 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 82:
-#line 585 "perly.y" /* yacc.c:1646 */
+#line 588 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 83:
-#line 589 "perly.y" /* yacc.c:1646 */
+#line 592 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = start_subparse(FALSE, 0);
SAVEFREESV(PL_compcv); }
break;
case 84:
-#line 595 "perly.y" /* yacc.c:1646 */
+#line 598 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
SAVEFREESV(PL_compcv); }
break;
case 85:
-#line 600 "perly.y" /* yacc.c:1646 */
+#line 603 "perly.y" /* yacc.c:1646 */
{ (yyval.ival) = start_subparse(TRUE, 0);
SAVEFREESV(PL_compcv); }
break;
case 88:
-#line 611 "perly.y" /* yacc.c:1646 */
+#line 614 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 90:
-#line 617 "perly.y" /* yacc.c:1646 */
+#line 620 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 91:
-#line 619 "perly.y" /* yacc.c:1646 */
+#line 622 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 92:
-#line 621 "perly.y" /* yacc.c:1646 */
+#line 624 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 93:
-#line 626 "perly.y" /* yacc.c:1646 */
+#line 629 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 94:
-#line 628 "perly.y" /* yacc.c:1646 */
+#line 631 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
case 95:
-#line 633 "perly.y" /* yacc.c:1646 */
+#line 642 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (OP*)NULL; }
+
+ break;
+
+ case 96:
+#line 644 "perly.y" /* yacc.c:1646 */
+ {
+ (yyval.opval) = (ps[0].val.opval);
+ PL_parser->in_my = 0;
+ }
+
+ break;
+
+ case 97:
+#line 652 "perly.y" /* yacc.c:1646 */
+ { (yyval.ival) = '@'; }
+
+ break;
+
+ case 98:
+#line 654 "perly.y" /* yacc.c:1646 */
+ { (yyval.ival) = '%'; }
+
+ break;
+
+ case 99:
+#line 658 "perly.y" /* yacc.c:1646 */
+ {
+ I32 sigil = (ps[-2].val.ival);
+ OP *var = (ps[-1].val.opval);
+ OP *defexpr = (ps[0].val.opval);
+ int type = (sigil == '@' ? OP_PADAV : OP_PADHV);
+
+ if (PL_parser->sig_slurpy)
+ yyerror("Multiple slurpy parameters not allowed");
+ PL_parser->sig_slurpy = sigil;
+
+ if (defexpr)
+ yyerror("a slurpy parameter may not have "
+ "a default value");
+
+ if (var) {
+ OP *slice;
+
+ var->op_type = type;
+ var->op_ppaddr = PL_ppaddr[type];
+ var->op_flags = (OPf_WANT_LIST | OPf_MOD);
+ var->op_private = OPpLVAL_INTRO;
+
+ slice = PL_parser->sig_elems
+ ? op_prepend_elem(OP_ASLICE,
+ newOP(OP_PUSHMARK, 0),
+ newLISTOP(OP_ASLICE, 0,
+ list(newRANGE(0,
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems)),
+ newUNOP(OP_AV2ARYLEN, 0,
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_AV2ARYLEN)))),
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_ASLICE)))
+ : newUNOP(OP_RV2AV, 0, newGVOP(OP_GV, 0, PL_defgv));
+ (yyval.opval) = newSTATEOP(0, NULL,
+ newASSIGNOP(OPf_STACKED, var, 0, slice));
+ }
+ else
+ (yyval.opval) = (OP*)NULL;
+ }
+
+ break;
+
+ case 100:
+#line 705 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (OP*)NULL; }
+
+ break;
+
+ case 101:
+#line 707 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = newOP(OP_NULL, 0); }
+
+ break;
+
+ case 102:
+#line 709 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 103:
+#line 715 "perly.y" /* yacc.c:1646 */
{
- /* We shouldn't get here otherwise */
- assert(FEATURE_SIGNATURES_IS_ENABLED);
+ OP *var = (ps[-1].val.opval);
+ OP *defexpr = (ps[0].val.opval);
+ OP *argn = NULL;
+ OP *expr = NULL;
+
+ if (PL_parser->sig_slurpy)
+ yyerror("Slurpy parameter not last");
+
+ PL_parser->sig_elems++;
+
+ if (var) {
+ var->op_type = OP_PADSV;
+ var->op_ppaddr = PL_ppaddr[OP_PADSV];
+ var->op_flags = (OPf_WANT_SCALAR | OPf_MOD);
+ var->op_private = OPpLVAL_INTRO;
+ }
+
+ /* $_[N] */
+ argn = newBINOP(OP_AELEM, 0,
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_RV2AV),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems - 1)));
+
+ if (defexpr) {
+ PL_parser->sig_optelems++;
+ /* is it '$var=undef', '$=' ? */
+ if ( ( defexpr->op_type == OP_NULL
+ || defexpr->op_type == OP_UNDEF)
+ && !(defexpr->op_flags & OPf_KIDS))
+ {
+ if (var) {
+ /* '$=' is legal, '$var=' isn't */
+ if (defexpr->op_type == OP_NULL)
+ yyerror("Optional parameter "
+ "lacks default expression");
+ else
+ expr = argn;
+ }
+ op_free(defexpr);
+ }
+ else {
+ /* @_ >= N */
+ OP *ge_op =
+ newBINOP(OP_GE, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems)));
+
+ expr = var
+ ? newCONDOP(0, ge_op, argn, defexpr)
+ : newLOGOP(OP_OR, 0, ge_op, defexpr);
+ }
+ }
+ else {
+ if (PL_parser->sig_optelems)
+ yyerror("Mandatory parameter "
+ "follows optional parameter");
+ expr = argn;
+ }
+
+ if (var)
+ expr = newASSIGNOP(OPf_STACKED, var, 0, expr);
+ if (expr)
+ (yyval.opval) = op_prepend_elem(OP_LINESEQ,
+ newSTATEOP(0, NULL, NULL),
+ expr);
+ else
+ (yyval.opval) = (OP*)NULL;
+ }
- Perl_ck_warner_d(aTHX_
- packWARN(WARN_EXPERIMENTAL__SIGNATURES),
- "The signatures feature is experimental");
- (yyval.opval) = parse_subsignature();
+ break;
+
+ case 104:
+#line 793 "perly.y" /* yacc.c:1646 */
+ { parser->expect = XSIGVAR; (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 105:
+#line 795 "perly.y" /* yacc.c:1646 */
+ { parser->expect = XSIGVAR; (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 106:
+#line 801 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (ps[-1].val.opval); }
+
+ break;
+
+ case 107:
+#line 803 "perly.y" /* yacc.c:1646 */
+ {
+ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval));
}
break;
- case 96:
-#line 643 "perly.y" /* yacc.c:1646 */
+ case 108:
+#line 807 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 109:
+#line 812 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (OP*)NULL; }
+
+ break;
+
+ case 110:
+#line 814 "perly.y" /* yacc.c:1646 */
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 111:
+#line 818 "perly.y" /* yacc.c:1646 */
{
- (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval),
- newSTATEOP(0, NULL, sawparens(newNULLLIST())));
- parser->expect = XATTRBLOCK;
+ ENTER;
+ SAVEINT(PL_parser->sig_elems);
+ SAVEINT(PL_parser->sig_optelems);
+ SAVEI8(PL_parser->sig_slurpy);
+ PL_parser->sig_elems = 0;
+ PL_parser->sig_optelems = 0;
+ PL_parser->sig_slurpy = 0;
+ parser->expect = XSIGVAR;
+ }
+
+ break;
+
+ case 112:
+#line 830 "perly.y" /* yacc.c:1646 */
+ {
+ OP *sigops = (ps[-1].val.opval);
+ int min_arity =
+ PL_parser->sig_elems - PL_parser->sig_optelems;
+
+ assert(FEATURE_SIGNATURES_IS_ENABLED);
+
+ /* We shouldn't get here otherwise */
+ Perl_ck_warner_d(aTHX_
+ packWARN(WARN_EXPERIMENTAL__SIGNATURES),
+ "The signatures feature is experimental");
+
+ /* handle odd/even for %foo */
+ if (PL_parser->sig_slurpy == '%') {
+ OP *chkop =
+ newLOGOP(
+ (PL_parser->sig_elems & 1)
+ ? OP_OR : OP_AND,
+ 0,
+ newBINOP(OP_BIT_AND, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0, newSViv(1))),
+ op_convert_list(OP_DIE, 0,
+ op_convert_list(OP_SPRINTF, 0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0,
+ newSVpvs("Odd name/value argument for subroutine at %s line %d.\n")),
+ newSLICEOP(0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0, newSViv(1)),
+ newSVOP(OP_CONST, 0, newSViv(2))),
+ newOP(OP_CALLER, 0))))));
+ if (PL_parser->sig_optelems)
+ chkop = newLOGOP(OP_AND, 0,
+ newBINOP(OP_GT, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems))),
+ chkop);
+ sigops = op_prepend_elem(OP_LINESEQ,
+ chkop, sigops);
+
+ }
+ if (min_arity)
+ sigops = op_prepend_elem(OP_LINESEQ,
+ Perl_check_arity(aTHX_ min_arity,
+ FALSE),
+ sigops);
+ if (!PL_parser->sig_slurpy)
+ sigops = op_prepend_elem(OP_LINESEQ,
+ Perl_check_arity(aTHX_
+ PL_parser->sig_elems, TRUE),
+ sigops);
+
+ (yyval.opval) = op_append_elem(OP_LINESEQ, sigops,
+ newSTATEOP(0, NULL, NULL));
+
+ parser->expect = XATTRBLOCK;
+ LEAVE;
}
break;
- case 98:
-#line 652 "perly.y" /* yacc.c:1646 */
+ case 114:
+#line 898 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
- case 99:
-#line 657 "perly.y" /* yacc.c:1646 */
+ case 115:
+#line 903 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 100:
-#line 659 "perly.y" /* yacc.c:1646 */
+ case 116:
+#line 905 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 101:
-#line 661 "perly.y" /* yacc.c:1646 */
+ case 117:
+#line 907 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 103:
-#line 667 "perly.y" /* yacc.c:1646 */
+ case 119:
+#line 913 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[-1].val.opval); }
break;
- case 104:
-#line 669 "perly.y" /* yacc.c:1646 */
+ case 120:
+#line 915 "perly.y" /* yacc.c:1646 */
{
OP* term = (ps[0].val.opval);
(yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
@@ -853,24 +1126,24 @@ case 2:
break;
- case 106:
-#line 678 "perly.y" /* yacc.c:1646 */
+ case 122:
+#line 924 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
}
break;
- case 107:
-#line 682 "perly.y" /* yacc.c:1646 */
+ case 123:
+#line 928 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
}
break;
- case 108:
-#line 686 "perly.y" /* yacc.c:1646 */
+ case 124:
+#line 932 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
@@ -879,8 +1152,8 @@ case 2:
break;
- case 109:
-#line 692 "perly.y" /* yacc.c:1646 */
+ case 125:
+#line 938 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
@@ -888,8 +1161,8 @@ case 2:
break;
- case 110:
-#line 697 "perly.y" /* yacc.c:1646 */
+ case 126:
+#line 943 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
@@ -898,8 +1171,8 @@ case 2:
break;
- case 111:
-#line 703 "perly.y" /* yacc.c:1646 */
+ case 127:
+#line 949 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
@@ -908,27 +1181,27 @@ case 2:
break;
- case 112:
-#line 709 "perly.y" /* yacc.c:1646 */
+ case 128:
+#line 955 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
- case 113:
-#line 711 "perly.y" /* yacc.c:1646 */
+ case 129:
+#line 957 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
- case 114:
-#line 713 "perly.y" /* yacc.c:1646 */
+ case 130:
+#line 959 "perly.y" /* yacc.c:1646 */
{ SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, (OP*)NULL, (ps[0].val.opval)); }
break;
- case 115:
-#line 716 "perly.y" /* yacc.c:1646 */
+ case 131:
+#line 962 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
@@ -936,21 +1209,21 @@ case 2:
break;
- case 118:
-#line 731 "perly.y" /* yacc.c:1646 */
+ case 134:
+#line 977 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
break;
- case 119:
-#line 733 "perly.y" /* yacc.c:1646 */
+ case 135:
+#line 979 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
}
break;
- case 120:
-#line 736 "perly.y" /* yacc.c:1646 */
+ case 136:
+#line 982 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
@@ -958,8 +1231,8 @@ case 2:
break;
- case 121:
-#line 741 "perly.y" /* yacc.c:1646 */
+ case 137:
+#line 987 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
@@ -967,91 +1240,91 @@ case 2:
break;
- case 122:
-#line 746 "perly.y" /* yacc.c:1646 */
+ case 138:
+#line 992 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
}
break;
- case 123:
-#line 749 "perly.y" /* yacc.c:1646 */
+ case 139:
+#line 995 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
- case 124:
-#line 753 "perly.y" /* yacc.c:1646 */
+ case 140:
+#line 999 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
- case 125:
-#line 757 "perly.y" /* yacc.c:1646 */
+ case 141:
+#line 1003 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-3].val.opval)))); }
break;
- case 126:
-#line 760 "perly.y" /* yacc.c:1646 */
+ case 142:
+#line 1006 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[-1].val.opval),
newCVREF(0, scalar((ps[-4].val.opval))))); }
break;
- case 127:
-#line 765 "perly.y" /* yacc.c:1646 */
+ case 143:
+#line 1011 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[-1].val.opval),
newCVREF(0, scalar((ps[-3].val.opval))))); }
break;
- case 128:
-#line 769 "perly.y" /* yacc.c:1646 */
+ case 144:
+#line 1015 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-2].val.opval)))); }
break;
- case 129:
-#line 772 "perly.y" /* yacc.c:1646 */
+ case 145:
+#line 1018 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
break;
- case 130:
-#line 774 "perly.y" /* yacc.c:1646 */
+ case 146:
+#line 1020 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
break;
- case 131:
-#line 776 "perly.y" /* yacc.c:1646 */
+ case 147:
+#line 1022 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (OP*)NULL); }
break;
- case 132:
-#line 781 "perly.y" /* yacc.c:1646 */
+ case 148:
+#line 1027 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
break;
- case 133:
-#line 783 "perly.y" /* yacc.c:1646 */
+ case 149:
+#line 1029 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 134:
-#line 785 "perly.y" /* yacc.c:1646 */
+ case 150:
+#line 1031 "perly.y" /* yacc.c:1646 */
{ if ((ps[-1].val.ival) != OP_REPEAT)
scalar((ps[-2].val.opval));
(yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
@@ -1059,112 +1332,112 @@ case 2:
break;
- case 135:
-#line 790 "perly.y" /* yacc.c:1646 */
+ case 151:
+#line 1036 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 136:
-#line 792 "perly.y" /* yacc.c:1646 */
+ case 152:
+#line 1038 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 137:
-#line 794 "perly.y" /* yacc.c:1646 */
+ case 153:
+#line 1040 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 138:
-#line 796 "perly.y" /* yacc.c:1646 */
+ case 154:
+#line 1042 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 139:
-#line 798 "perly.y" /* yacc.c:1646 */
+ case 155:
+#line 1044 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 140:
-#line 800 "perly.y" /* yacc.c:1646 */
+ case 156:
+#line 1046 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 141:
-#line 802 "perly.y" /* yacc.c:1646 */
+ case 157:
+#line 1048 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
- case 142:
-#line 804 "perly.y" /* yacc.c:1646 */
+ case 158:
+#line 1050 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 143:
-#line 806 "perly.y" /* yacc.c:1646 */
+ case 159:
+#line 1052 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 144:
-#line 808 "perly.y" /* yacc.c:1646 */
+ case 160:
+#line 1054 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 145:
-#line 810 "perly.y" /* yacc.c:1646 */
+ case 161:
+#line 1056 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 146:
-#line 815 "perly.y" /* yacc.c:1646 */
+ case 162:
+#line 1061 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
break;
- case 147:
-#line 817 "perly.y" /* yacc.c:1646 */
+ case 163:
+#line 1063 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 148:
-#line 820 "perly.y" /* yacc.c:1646 */
+ case 164:
+#line 1066 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
- case 149:
-#line 822 "perly.y" /* yacc.c:1646 */
+ case 165:
+#line 1068 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
break;
- case 150:
-#line 824 "perly.y" /* yacc.c:1646 */
+ case 166:
+#line 1070 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
break;
- case 151:
-#line 827 "perly.y" /* yacc.c:1646 */
+ case 167:
+#line 1073 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
break;
- case 152:
-#line 830 "perly.y" /* yacc.c:1646 */
+ case 168:
+#line 1076 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_convert_list(OP_JOIN, 0,
op_append_elem(
OP_LIST,
@@ -1178,53 +1451,53 @@ case 2:
break;
- case 153:
-#line 841 "perly.y" /* yacc.c:1646 */
+ case 169:
+#line 1087 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
break;
- case 154:
-#line 844 "perly.y" /* yacc.c:1646 */
+ case 170:
+#line 1090 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
break;
- case 155:
-#line 851 "perly.y" /* yacc.c:1646 */
+ case 171:
+#line 1097 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
break;
- case 156:
-#line 853 "perly.y" /* yacc.c:1646 */
+ case 172:
+#line 1099 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newANONLIST((OP*)NULL);}
break;
- case 157:
-#line 855 "perly.y" /* yacc.c:1646 */
+ case 173:
+#line 1101 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
break;
- case 158:
-#line 857 "perly.y" /* yacc.c:1646 */
+ case 174:
+#line 1103 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newANONHASH((OP*)NULL); }
break;
- case 159:
-#line 859 "perly.y" /* yacc.c:1646 */
+ case 175:
+#line 1105 "perly.y" /* yacc.c:1646 */
{ SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
break;
- case 160:
-#line 862 "perly.y" /* yacc.c:1646 */
+ case 176:
+#line 1108 "perly.y" /* yacc.c:1646 */
{
OP *body;
if (parser->copline > (line_t)(ps[-2].val.ival))
@@ -1237,104 +1510,104 @@ case 2:
break;
- case 161:
-#line 876 "perly.y" /* yacc.c:1646 */
+ case 177:
+#line 1122 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
break;
- case 162:
-#line 878 "perly.y" /* yacc.c:1646 */
+ case 178:
+#line 1124 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
break;
- case 167:
-#line 886 "perly.y" /* yacc.c:1646 */
+ case 183:
+#line 1132 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 168:
-#line 888 "perly.y" /* yacc.c:1646 */
+ case 184:
+#line 1134 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
break;
- case 169:
-#line 890 "perly.y" /* yacc.c:1646 */
+ case 185:
+#line 1136 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
break;
- case 170:
-#line 892 "perly.y" /* yacc.c:1646 */
+ case 186:
+#line 1138 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 171:
-#line 894 "perly.y" /* yacc.c:1646 */
+ case 187:
+#line 1140 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = localize((ps[0].val.opval),0); }
break;
- case 172:
-#line 896 "perly.y" /* yacc.c:1646 */
+ case 188:
+#line 1142 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
- case 173:
-#line 898 "perly.y" /* yacc.c:1646 */
+ case 189:
+#line 1144 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 174:
-#line 900 "perly.y" /* yacc.c:1646 */
+ case 190:
+#line 1146 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = sawparens(newNULLLIST()); }
break;
- case 175:
-#line 902 "perly.y" /* yacc.c:1646 */
+ case 191:
+#line 1148 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 176:
-#line 904 "perly.y" /* yacc.c:1646 */
+ case 192:
+#line 1150 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 177:
-#line 906 "perly.y" /* yacc.c:1646 */
+ case 193:
+#line 1152 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 178:
-#line 908 "perly.y" /* yacc.c:1646 */
+ case 194:
+#line 1154 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 179:
-#line 910 "perly.y" /* yacc.c:1646 */
+ case 195:
+#line 1156 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
break;
- case 180:
-#line 912 "perly.y" /* yacc.c:1646 */
+ case 196:
+#line 1158 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 181:
-#line 914 "perly.y" /* yacc.c:1646 */
+ case 197:
+#line 1160 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
@@ -1347,8 +1620,8 @@ case 2:
break;
- case 182:
-#line 924 "perly.y" /* yacc.c:1646 */
+ case 198:
+#line 1170 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_prepend_elem(OP_KVASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVASLICE, 0,
@@ -1361,8 +1634,8 @@ case 2:
break;
- case 183:
-#line 934 "perly.y" /* yacc.c:1646 */
+ case 199:
+#line 1180 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1375,8 +1648,8 @@ case 2:
break;
- case 184:
-#line 944 "perly.y" /* yacc.c:1646 */
+ case 200:
+#line 1190 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVHSLICE, 0,
@@ -1389,27 +1662,27 @@ case 2:
break;
- case 185:
-#line 954 "perly.y" /* yacc.c:1646 */
+ case 201:
+#line 1200 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 186:
-#line 956 "perly.y" /* yacc.c:1646 */
+ case 202:
+#line 1202 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
break;
- case 187:
-#line 958 "perly.y" /* yacc.c:1646 */
+ case 203:
+#line 1204 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
}
break;
- case 188:
-#line 961 "perly.y" /* yacc.c:1646 */
+ case 204:
+#line 1207 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
@@ -1417,153 +1690,153 @@ case 2:
break;
- case 189:
-#line 966 "perly.y" /* yacc.c:1646 */
+ case 205:
+#line 1212 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
}
break;
- case 190:
-#line 970 "perly.y" /* yacc.c:1646 */
+ case 206:
+#line 1216 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newSVREF((ps[-3].val.opval)); }
break;
- case 191:
-#line 972 "perly.y" /* yacc.c:1646 */
+ case 207:
+#line 1218 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
- case 192:
-#line 974 "perly.y" /* yacc.c:1646 */
+ case 208:
+#line 1220 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newHVREF((ps[-3].val.opval)); }
break;
- case 193:
-#line 976 "perly.y" /* yacc.c:1646 */
+ case 209:
+#line 1222 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
break;
- case 194:
-#line 979 "perly.y" /* yacc.c:1646 */
+ case 210:
+#line 1225 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
break;
- case 195:
-#line 981 "perly.y" /* yacc.c:1646 */
+ case 211:
+#line 1227 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
- case 196:
-#line 984 "perly.y" /* yacc.c:1646 */
+ case 212:
+#line 1230 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
break;
- case 197:
-#line 986 "perly.y" /* yacc.c:1646 */
+ case 213:
+#line 1232 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
- case 198:
-#line 988 "perly.y" /* yacc.c:1646 */
+ case 214:
+#line 1234 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
- case 199:
-#line 990 "perly.y" /* yacc.c:1646 */
+ case 215:
+#line 1236 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
- case 200:
-#line 992 "perly.y" /* yacc.c:1646 */
+ case 216:
+#line 1238 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
- case 201:
-#line 994 "perly.y" /* yacc.c:1646 */
+ case 217:
+#line 1240 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
break;
- case 202:
-#line 996 "perly.y" /* yacc.c:1646 */
+ case 218:
+#line 1242 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
break;
- case 203:
-#line 998 "perly.y" /* yacc.c:1646 */
+ case 219:
+#line 1244 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
- case 204:
-#line 1000 "perly.y" /* yacc.c:1646 */
+ case 220:
+#line 1246 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
break;
- case 205:
-#line 1003 "perly.y" /* yacc.c:1646 */
+ case 221:
+#line 1249 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
- case 206:
-#line 1005 "perly.y" /* yacc.c:1646 */
+ case 222:
+#line 1251 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newOP((ps[-2].val.ival), 0);}
break;
- case 207:
-#line 1007 "perly.y" /* yacc.c:1646 */
+ case 223:
+#line 1253 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 208:
-#line 1009 "perly.y" /* yacc.c:1646 */
+ case 224:
+#line 1255 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[-2].val.opval); }
break;
- case 209:
-#line 1011 "perly.y" /* yacc.c:1646 */
+ case 225:
+#line 1257 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
- case 210:
-#line 1013 "perly.y" /* yacc.c:1646 */
+ case 226:
+#line 1259 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
: newOP((ps[-2].val.ival), OPf_SPECIAL); }
break;
- case 211:
-#line 1017 "perly.y" /* yacc.c:1646 */
+ case 227:
+#line 1263 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
- case 212:
-#line 1019 "perly.y" /* yacc.c:1646 */
+ case 228:
+#line 1265 "perly.y" /* yacc.c:1646 */
{
if ( (ps[0].val.opval)->op_type != OP_TRANS
&& (ps[0].val.opval)->op_type != OP_TRANSR
@@ -1577,14 +1850,14 @@ case 2:
break;
- case 213:
-#line 1030 "perly.y" /* yacc.c:1646 */
+ case 229:
+#line 1276 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
break;
- case 216:
-#line 1034 "perly.y" /* yacc.c:1646 */
+ case 232:
+#line 1280 "perly.y" /* yacc.c:1646 */
{
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
@@ -1592,180 +1865,180 @@ case 2:
break;
- case 218:
-#line 1043 "perly.y" /* yacc.c:1646 */
+ case 234:
+#line 1289 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
break;
- case 219:
-#line 1045 "perly.y" /* yacc.c:1646 */
+ case 235:
+#line 1291 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = localize((ps[0].val.opval),1); }
break;
- case 220:
-#line 1047 "perly.y" /* yacc.c:1646 */
+ case 236:
+#line 1293 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
break;
- case 221:
-#line 1052 "perly.y" /* yacc.c:1646 */
+ case 237:
+#line 1298 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
- case 222:
-#line 1054 "perly.y" /* yacc.c:1646 */
+ case 238:
+#line 1300 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = sawparens(newNULLLIST()); }
break;
- case 223:
-#line 1057 "perly.y" /* yacc.c:1646 */
+ case 239:
+#line 1303 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 224:
-#line 1059 "perly.y" /* yacc.c:1646 */
+ case 240:
+#line 1305 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 225:
-#line 1061 "perly.y" /* yacc.c:1646 */
+ case 241:
+#line 1307 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 226:
-#line 1066 "perly.y" /* yacc.c:1646 */
+ case 242:
+#line 1312 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
- case 227:
-#line 1068 "perly.y" /* yacc.c:1646 */
+ case 243:
+#line 1314 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 228:
-#line 1072 "perly.y" /* yacc.c:1646 */
+ case 244:
+#line 1318 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
- case 229:
-#line 1074 "perly.y" /* yacc.c:1646 */
+ case 245:
+#line 1320 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 230:
-#line 1078 "perly.y" /* yacc.c:1646 */
+ case 246:
+#line 1324 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (OP*)NULL; }
break;
- case 231:
-#line 1080 "perly.y" /* yacc.c:1646 */
+ case 247:
+#line 1326 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
- case 232:
-#line 1086 "perly.y" /* yacc.c:1646 */
+ case 248:
+#line 1332 "perly.y" /* yacc.c:1646 */
{ parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
- case 240:
-#line 1103 "perly.y" /* yacc.c:1646 */
+ case 256:
+#line 1349 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
break;
- case 241:
-#line 1107 "perly.y" /* yacc.c:1646 */
+ case 257:
+#line 1353 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newSVREF((ps[0].val.opval)); }
break;
- case 242:
-#line 1111 "perly.y" /* yacc.c:1646 */
+ case 258:
+#line 1357 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newAVREF((ps[0].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
}
break;
- case 243:
-#line 1117 "perly.y" /* yacc.c:1646 */
+ case 259:
+#line 1363 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newHVREF((ps[0].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
}
break;
- case 244:
-#line 1123 "perly.y" /* yacc.c:1646 */
+ case 260:
+#line 1369 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newAVREF((ps[0].val.opval)); }
break;
- case 245:
-#line 1125 "perly.y" /* yacc.c:1646 */
+ case 261:
+#line 1371 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
- case 246:
-#line 1129 "perly.y" /* yacc.c:1646 */
+ case 262:
+#line 1375 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
break;
- case 248:
-#line 1134 "perly.y" /* yacc.c:1646 */
+ case 264:
+#line 1380 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newAVREF((ps[-2].val.opval)); }
break;
- case 250:
-#line 1139 "perly.y" /* yacc.c:1646 */
+ case 266:
+#line 1385 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newHVREF((ps[-2].val.opval)); }
break;
- case 252:
-#line 1144 "perly.y" /* yacc.c:1646 */
+ case 268:
+#line 1390 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
break;
- case 253:
-#line 1149 "perly.y" /* yacc.c:1646 */
+ case 269:
+#line 1395 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = scalar((ps[0].val.opval)); }
break;
- case 254:
-#line 1151 "perly.y" /* yacc.c:1646 */
+ case 270:
+#line 1397 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = scalar((ps[0].val.opval)); }
break;
- case 255:
-#line 1153 "perly.y" /* yacc.c:1646 */
+ case 271:
+#line 1399 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
- case 256:
-#line 1156 "perly.y" /* yacc.c:1646 */
+ case 272:
+#line 1402 "perly.y" /* yacc.c:1646 */
{ (yyval.opval) = (ps[0].val.opval); }
break;
@@ -1776,6 +2049,6 @@ case 2:
/* Generated from:
- * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
+ * 719f2ad40259ac9c064749d399f2c7d1e1131abbc8c1f1ec0558cac2d8f2bc4c perly.y
* 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
* ex: set ro: */
diff --git a/perly.c b/perly.c
index 5aed62858c..e8a9506433 100644
--- a/perly.c
+++ b/perly.c
@@ -25,6 +25,7 @@
#define PERL_IN_PERLY_C
#include "perl.h"
#include "feature.h"
+#include "keywords.h"
typedef unsigned char yytype_uint8;
typedef signed char yytype_int8;
@@ -246,6 +247,7 @@ S_clear_yystack(pTHX_ const yy_parser *parser)
int
Perl_yyparse (pTHX_ int gramtype)
{
+ dVAR;
int yystate;
int yyn;
int yyresult;
diff --git a/perly.h b/perly.h
index 9184774a21..8c8c459f3c 100644
--- a/perly.h
+++ b/perly.h
@@ -181,6 +181,6 @@ int yyparse (void);
/* Generated from:
- * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
+ * 719f2ad40259ac9c064749d399f2c7d1e1131abbc8c1f1ec0558cac2d8f2bc4c perly.y
* 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
* ex: set ro: */
diff --git a/perly.tab b/perly.tab
index a8fe5b53b6..f6685b856b 100644
--- a/perly.tab
+++ b/perly.tab
@@ -6,16 +6,16 @@
#define YYFINAL 14
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 3111
+#define YYLAST 3085
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 105
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 78
+#define YYNNTS 86
/* YYNRULES -- Number of rules. */
-#define YYNRULES 256
+#define YYNRULES 272
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 521
+#define YYNSTATES 539
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -69,32 +69,34 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 115, 115, 114, 125, 124, 134, 133, 146, 145,
- 158, 157, 170, 169, 181, 189, 197, 201, 209, 215,
- 216, 226, 227, 236, 240, 244, 248, 255, 257, 268,
- 267, 301, 300, 339, 347, 346, 355, 361, 367, 372,
- 374, 376, 383, 391, 393, 390, 410, 415, 422, 421,
- 436, 444, 450, 457, 456, 471, 475, 483, 501, 502,
- 507, 509, 511, 513, 515, 517, 519, 522, 528, 529,
- 534, 545, 546, 552, 558, 559, 564, 567, 571, 576,
- 580, 584, 585, 589, 595, 600, 605, 606, 611, 612,
- 617, 618, 620, 625, 627, 633, 632, 651, 652, 656,
- 658, 660, 662, 666, 668, 673, 677, 681, 685, 691,
- 696, 702, 708, 710, 713, 712, 723, 724, 728, 732,
- 735, 740, 745, 748, 752, 756, 759, 764, 768, 771,
- 773, 775, 780, 782, 784, 789, 791, 793, 795, 797,
- 799, 801, 803, 805, 807, 809, 814, 816, 819, 821,
- 823, 826, 829, 840, 843, 850, 852, 854, 856, 858,
- 861, 875, 877, 881, 882, 883, 884, 885, 887, 889,
- 891, 893, 895, 897, 899, 901, 903, 905, 907, 909,
- 911, 913, 923, 933, 943, 953, 955, 957, 960, 965,
- 969, 971, 973, 975, 978, 980, 983, 985, 987, 989,
- 991, 993, 995, 997, 999, 1002, 1004, 1006, 1008, 1010,
- 1012, 1016, 1019, 1018, 1031, 1032, 1033, 1038, 1042, 1044,
- 1046, 1051, 1053, 1056, 1058, 1060, 1065, 1067, 1072, 1073,
- 1078, 1079, 1085, 1089, 1090, 1091, 1094, 1095, 1098, 1099,
- 1102, 1106, 1110, 1116, 1122, 1124, 1128, 1132, 1133, 1137,
- 1138, 1142, 1143, 1148, 1150, 1152, 1155
+ 0, 118, 118, 117, 128, 127, 137, 136, 149, 148,
+ 161, 160, 173, 172, 184, 192, 200, 204, 212, 218,
+ 219, 229, 230, 239, 243, 247, 251, 258, 260, 271,
+ 270, 304, 303, 342, 350, 349, 358, 364, 370, 375,
+ 377, 379, 386, 394, 396, 393, 413, 418, 425, 424,
+ 439, 447, 453, 460, 459, 474, 478, 486, 504, 505,
+ 510, 512, 514, 516, 518, 520, 522, 525, 531, 532,
+ 537, 548, 549, 555, 561, 562, 567, 570, 574, 579,
+ 583, 587, 588, 592, 598, 603, 608, 609, 614, 615,
+ 620, 621, 623, 628, 630, 642, 643, 651, 653, 657,
+ 705, 706, 708, 714, 792, 794, 800, 802, 806, 812,
+ 813, 818, 817, 897, 898, 902, 904, 906, 908, 912,
+ 914, 919, 923, 927, 931, 937, 942, 948, 954, 956,
+ 959, 958, 969, 970, 974, 978, 981, 986, 991, 994,
+ 998, 1002, 1005, 1010, 1014, 1017, 1019, 1021, 1026, 1028,
+ 1030, 1035, 1037, 1039, 1041, 1043, 1045, 1047, 1049, 1051,
+ 1053, 1055, 1060, 1062, 1065, 1067, 1069, 1072, 1075, 1086,
+ 1089, 1096, 1098, 1100, 1102, 1104, 1107, 1121, 1123, 1127,
+ 1128, 1129, 1130, 1131, 1133, 1135, 1137, 1139, 1141, 1143,
+ 1145, 1147, 1149, 1151, 1153, 1155, 1157, 1159, 1169, 1179,
+ 1189, 1199, 1201, 1203, 1206, 1211, 1215, 1217, 1219, 1221,
+ 1224, 1226, 1229, 1231, 1233, 1235, 1237, 1239, 1241, 1243,
+ 1245, 1248, 1250, 1252, 1254, 1256, 1258, 1262, 1265, 1264,
+ 1277, 1278, 1279, 1284, 1288, 1290, 1292, 1297, 1299, 1302,
+ 1304, 1306, 1311, 1313, 1318, 1319, 1324, 1325, 1331, 1335,
+ 1336, 1337, 1340, 1341, 1344, 1345, 1348, 1352, 1356, 1362,
+ 1368, 1370, 1374, 1378, 1379, 1383, 1384, 1388, 1389, 1394,
+ 1396, 1398, 1401
};
#endif
@@ -124,12 +126,14 @@ static const char *const yytname[] =
"$@13", "formline", "formarg", "sideff", "else", "cont", "mintro",
"nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "formname", "startsub",
"startanonsub", "startformsub", "subname", "proto", "subattrlist",
- "myattrlist", "subsignature", "@14", "optsubbody", "expr", "listexpr",
- "listop", "@15", "method", "subscripted", "termbinop", "termunop",
- "anonymous", "termdo", "term", "@16", "myattrterm", "myterm",
- "optlistexpr", "optexpr", "optrepl", "my_scalar", "my_var",
- "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", "arylen",
- "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
+ "myattrlist", "sigvarname", "sigslurpsigil", "sigslurpelem",
+ "sigdefault", "sigscalarelem", "sigelem", "siglist", "siglistornull",
+ "subsignature", "$@14", "optsubbody", "expr", "listexpr", "listop",
+ "@15", "method", "subscripted", "termbinop", "termunop", "anonymous",
+ "termdo", "term", "@16", "myattrterm", "myterm", "optlistexpr",
+ "optexpr", "optrepl", "my_scalar", "my_var", "refgen_topic", "my_refgen",
+ "amper", "scalar", "ary", "hsh", "arylen", "star", "sliceme", "kvslice",
+ "gelem", "indirob", YY_NULLPTR
};
#endif
@@ -152,73 +156,74 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-#define YYPACT_NINF -412
+#define YYPACT_NINF -440
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-412)))
+ (!!((Yystate) == (-440)))
-#define YYTABLE_NINF -252
+#define YYTABLE_NINF -268
#define yytable_value_is_error(Yytable_value) \
- (!!((Yytable_value) == (-252)))
+ (!!((Yytable_value) == (-268)))
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 903, -412, -412, -412, -412, -412, -412, 8, -412, 2810,
- 16, 1502, 1407, -412, -412, -412, 1973, 2810, 2810, 31,
- 31, 31, -412, 31, 31, -412, -412, 46, -66, -412,
- 2810, -412, -412, -412, 2810, -412, -54, -20, -19, 1880,
- 1785, 31, 1880, 2066, 35, 2810, 62, 2810, 2810, 2810,
- 2810, 2810, 2810, 2810, 2159, 31, 31, 341, -13, -412,
- 7, -412, -412, -412, -412, 2971, -412, -412, -2, 73,
- 79, 82, -412, 76, 123, 180, 92, -412, -412, -412,
- -412, -412, 35, 90, -412, 18, 28, 36, 47, 167,
- 88, 104, 16, -412, 78, -412, 102, 1971, 1407, -412,
- -412, -412, 647, 742, -412, 77, 731, 731, -412, -412,
- -412, -412, -412, -412, -412, 2810, 117, 118, 2810, 122,
- 367, 16, -4, 2971, 126, 2252, 1785, -412, 367, 545,
- -13, -412, 438, 2810, -412, -412, 367, 212, 100, -412,
- -412, 2810, 367, 2903, 2345, 157, -412, -412, -412, 367,
- -13, 731, 731, 731, 71, 71, 219, 221, -412, -412,
- 2810, 2810, 2810, 2810, 2810, 2810, 2438, 2810, 2810, 2810,
- 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810,
- 2810, 2810, -412, -412, -412, 245, 2531, 2810, 2810, 2810,
- 2810, 2810, 2810, 2810, -412, 209, -412, 213, -412, -412,
- -412, -412, -412, 144, 55, -412, -412, 139, -412, -412,
- -412, 16, -412, -412, 2810, 2810, 2810, 2810, 2810, 2810,
- -412, -412, -412, -412, -412, 2810, 2810, 97, -412, -412,
- -412, 141, 173, -412, -412, 256, 145, 2810, -13, -412,
- 242, -412, 2624, 731, 157, 52, 57, 58, -412, 312,
- 230, -412, 2810, 244, 193, 193, -412, 2971, 201, 103,
- -412, 346, 1584, 483, 1768, 724, 502, 2971, 2929, 468,
- 468, 1675, 408, 1863, 630, 731, 731, 2810, 2810, 170,
- 177, 184, -412, 186, 2717, 11, 187, 225, -412, -412,
- 473, 218, 119, 259, 125, 279, 132, 309, 837, -412,
- 252, 235, 2, 288, 2810, 2810, 2810, 2810, -412, 207,
- -412, -412, 236, -412, -412, -412, -412, 1596, 23, -412,
- 2810, 2810, -412, 341, -412, 341, 341, 341, 341, 341,
- 222, -30, -412, 2810, -412, 173, 323, 16, -412, -412,
- 534, -412, 30, 540, -412, -412, -412, 190, 2810, 340,
- -412, -412, 2810, 329, 208, -412, -412, -412, -412, -412,
- 632, -412, -412, 2810, -412, 352, -412, 354, -412, 380,
- -412, 387, -412, -412, -412, 328, -412, -412, -412, 336,
- 301, 341, 302, 306, 341, 307, 308, -412, -412, -412,
- -412, 310, 325, 264, -412, 2810, 334, 335, -412, 2810,
- 338, -412, 343, 426, -412, -412, -412, 42, -412, 211,
- -412, 3013, 429, -412, -412, 344, -412, -412, -412, -412,
- 355, 173, 141, -412, 2810, -412, -412, 435, 435, 2810,
- 2810, 435, -412, 360, 356, 435, 435, 341, -412, -412,
- -412, -412, -412, -412, 390, 5, 173, -412, 370, 435,
- 435, -412, 32, 32, 373, 374, 78, 2810, 2810, 435,
- -412, -412, 932, -412, -412, -412, -412, 466, 1027, -412,
- 78, 78, -412, 435, 376, -412, -412, 435, 435, -412,
- 382, 388, 78, -412, 29, -412, -412, -412, -412, 1122,
- -412, 2810, 78, 78, -412, 435, -412, 411, 471, -412,
- 1217, -412, 392, -412, -412, -412, 78, -412, -412, -412,
- -412, 435, 1690, -412, 1312, 32, 402, -412, -412, 435,
- -412
+ 824, -440, -440, -440, -440, -440, -440, 21, -440, 2826,
+ 44, 1518, 1423, -440, -440, -440, 1989, 2826, 2826, 60,
+ 60, 60, -440, 60, 60, -440, -440, 8, -68, -440,
+ 2826, -440, -440, -440, 2826, -440, -46, -29, -18, 1896,
+ 1801, 60, 1896, 2082, 16, 2826, 137, 2826, 2826, 2826,
+ 2826, 2826, 2826, 2826, 2175, 60, 60, 170, 36, -440,
+ 7, -440, -440, -440, -440, 2945, -440, -440, 17, 126,
+ 209, 221, -440, 89, 239, 266, 113, -440, -440, -440,
+ -440, -440, 16, 106, -440, 29, 32, 57, 61, 149,
+ 66, 70, 44, -440, 102, -440, 116, 325, 1423, -440,
+ -440, -440, 663, 758, -440, 195, 442, 442, -440, -440,
+ -440, -440, -440, -440, -440, 2826, 73, 122, 2826, 127,
+ 318, 44, -8, 2945, 142, 2268, 1801, -440, 318, 561,
+ 36, -440, 485, 2826, -440, -440, 318, 215, 90, -440,
+ -440, 2826, 318, 2919, 2361, 186, -440, -440, -440, 318,
+ 36, 442, 442, 442, 535, 535, 252, 256, -440, -440,
+ 2826, 2826, 2826, 2826, 2826, 2826, 2454, 2826, 2826, 2826,
+ 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826,
+ 2826, 2826, -440, -440, -440, 72, 2547, 2826, 2826, 2826,
+ 2826, 2826, 2826, 2826, -440, 244, -440, 260, -440, -440,
+ -440, -440, -440, 190, 23, -440, -440, 184, -440, -440,
+ -440, 44, -440, -440, 2826, 2826, 2826, 2826, 2826, 2826,
+ -440, -440, -440, -440, -440, 2826, 2826, 217, -440, -440,
+ -440, 194, 227, -440, -440, 295, 187, 2826, 36, -440,
+ 296, -440, 2640, 442, 186, 47, 52, 75, -440, 309,
+ 284, -440, 2826, 301, 251, 251, -440, 2945, 160, 230,
+ -440, 455, 1600, 518, 1879, 498, 646, 2945, 369, 1692,
+ 1692, 419, 1786, 1972, 531, 442, 442, 2826, 2826, 224,
+ 229, 231, -440, 232, 2733, 48, 243, 274, -440, -440,
+ 475, 192, 235, 370, 246, 399, 250, 408, 853, -440,
+ 338, 290, -2, 355, 2826, 2826, 2826, 2826, -440, 299,
+ -440, -440, 297, -440, -440, -440, -440, 1612, 31, -440,
+ 2826, 2826, -440, 170, -440, 170, 170, 170, 170, 170,
+ 303, 19, -440, 2826, -440, 227, 380, 44, -440, -440,
+ 576, -440, 98, 648, -440, -440, -440, 264, 2826, 402,
+ -440, -440, 2826, 418, 270, -440, -440, -440, -440, -440,
+ 661, -440, -440, 2826, -440, 409, -440, 412, -440, 415,
+ -440, 416, -440, -440, -440, 386, -440, -440, -440, 411,
+ 333, 170, 336, 337, 170, 339, 341, -440, -440, -440,
+ -440, 340, 345, 312, -440, 2826, 358, 359, -440, 2826,
+ 363, -440, 112, 459, -440, -440, -440, 107, -440, 275,
+ -440, 2987, 465, -440, -440, 377, -440, -440, -440, -440,
+ 368, 227, 194, -440, 2826, -440, -440, 477, 477, 2826,
+ 2826, 477, -440, 384, 389, 477, 477, 170, -440, -440,
+ -440, 464, 464, -440, -440, -440, 413, 396, -440, -440,
+ -440, -440, 427, 5, 227, -440, 398, 477, 477, -440,
+ 134, 134, 414, 421, 102, 2826, 2826, 477, -440, -440,
+ -440, 423, 423, 112, -440, 948, -440, -440, -440, -440,
+ 499, 1043, -440, 102, 102, -440, 477, 407, -440, -440,
+ 477, 477, -440, 422, 433, 102, 2826, -440, -440, -440,
+ -440, 3, -440, -440, -440, -440, 1138, -440, 2826, 102,
+ 102, -440, 477, -440, 2945, 452, 493, -440, 1233, -440,
+ 436, -440, -440, -440, 102, -440, -440, -440, -440, 477,
+ 1706, -440, 1328, 134, 448, -440, -440, 477, -440
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -226,85 +231,88 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 2, 4, 6, 8, 10, 12, 0, 16, 228,
+ 0, 2, 4, 6, 8, 10, 12, 0, 16, 244,
0, 0, 0, 19, 1, 19, 0, 0, 0, 0,
- 0, 0, 214, 0, 0, 185, 212, 173, 207, 209,
- 203, 84, 217, 84, 195, 216, 205, 0, 0, 198,
- 226, 0, 0, 0, 0, 0, 0, 201, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 229, 102, 215,
- 180, 163, 164, 165, 166, 105, 170, 5, 186, 175,
- 178, 177, 179, 176, 0, 0, 0, 16, 7, 60,
+ 0, 0, 230, 0, 0, 201, 228, 189, 223, 225,
+ 219, 84, 233, 84, 211, 232, 221, 0, 0, 214,
+ 242, 0, 0, 0, 0, 0, 0, 217, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 245, 118, 231,
+ 196, 179, 180, 181, 182, 121, 186, 5, 202, 191,
+ 194, 193, 195, 192, 0, 0, 0, 16, 7, 60,
27, 85, 0, 0, 83, 0, 0, 0, 0, 0,
0, 0, 0, 56, 71, 9, 0, 61, 0, 11,
- 24, 23, 0, 0, 156, 0, 146, 147, 253, 256,
- 255, 254, 242, 243, 240, 226, 0, 0, 0, 0,
- 204, 0, 88, 196, 0, 0, 228, 199, 200, 253,
- 227, 112, 254, 0, 244, 162, 161, 0, 0, 86,
- 87, 226, 171, 0, 0, 219, 223, 225, 224, 202,
- 197, 148, 149, 168, 153, 154, 174, 0, 241, 246,
- 0, 0, 0, 103, 0, 0, 0, 0, 0, 0,
+ 24, 23, 0, 0, 172, 0, 162, 163, 269, 272,
+ 271, 270, 258, 259, 256, 242, 0, 0, 0, 0,
+ 220, 0, 88, 212, 0, 0, 244, 215, 216, 269,
+ 243, 128, 270, 0, 260, 178, 177, 0, 0, 86,
+ 87, 242, 187, 0, 0, 235, 239, 241, 240, 218,
+ 213, 164, 165, 184, 169, 170, 190, 0, 257, 262,
+ 0, 0, 0, 119, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 150, 151, 152, 0, 0, 0, 0, 0,
+ 0, 0, 166, 167, 168, 0, 0, 0, 0, 0,
0, 0, 0, 0, 19, 82, 83, 0, 34, 16,
16, 16, 16, 16, 0, 16, 16, 0, 16, 16,
40, 0, 52, 55, 0, 0, 0, 0, 0, 0,
- 26, 25, 20, 155, 110, 228, 0, 0, 208, 114,
- 89, 0, 90, 206, 210, 0, 0, 0, 106, 158,
- 0, 189, 0, 169, 0, 175, 178, 177, 222, 0,
- 94, 218, 0, 172, 100, 101, 99, 104, 0, 0,
- 128, 0, 141, 137, 138, 134, 135, 132, 0, 143,
- 144, 142, 140, 139, 136, 145, 133, 0, 0, 248,
- 250, 0, 116, 0, 0, 0, 252, 109, 117, 187,
+ 26, 25, 20, 171, 126, 244, 0, 0, 224, 130,
+ 89, 0, 90, 222, 226, 0, 0, 0, 122, 174,
+ 0, 205, 0, 185, 0, 191, 194, 193, 238, 0,
+ 94, 234, 0, 188, 116, 117, 115, 120, 0, 0,
+ 144, 0, 157, 153, 154, 150, 151, 148, 0, 159,
+ 160, 158, 156, 155, 152, 161, 149, 0, 0, 264,
+ 266, 0, 132, 0, 0, 0, 268, 125, 133, 203,
0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
- 0, 29, 0, 0, 76, 0, 0, 0, 238, 0,
- 239, 236, 0, 237, 233, 234, 235, 0, 0, 16,
+ 0, 29, 0, 0, 76, 0, 0, 0, 254, 0,
+ 255, 252, 0, 253, 249, 250, 251, 0, 0, 16,
0, 0, 72, 64, 65, 78, 62, 63, 66, 67,
- 0, 230, 130, 226, 95, 90, 92, 0, 211, 113,
- 0, 157, 174, 0, 220, 221, 93, 0, 0, 0,
- 121, 127, 0, 0, 0, 191, 192, 193, 245, 125,
- 0, 190, 194, 228, 188, 0, 119, 0, 181, 0,
- 182, 0, 14, 16, 28, 88, 16, 16, 33, 0,
- 0, 77, 0, 0, 79, 0, 0, 232, 16, 75,
- 80, 0, 0, 61, 48, 0, 0, 0, 111, 0,
- 0, 115, 0, 0, 91, 159, 107, 172, 131, 0,
- 124, 167, 0, 120, 126, 0, 122, 183, 184, 118,
- 0, 90, 0, 53, 226, 73, 73, 0, 0, 0,
- 0, 0, 43, 0, 0, 0, 0, 231, 213, 96,
- 19, 129, 123, 108, 0, 0, 90, 19, 0, 0,
- 0, 18, 68, 68, 0, 0, 71, 76, 0, 0,
- 38, 39, 0, 21, 98, 97, 30, 0, 0, 35,
- 71, 71, 19, 0, 0, 36, 37, 0, 0, 51,
- 0, 0, 71, 160, 0, 19, 54, 41, 42, 0,
- 69, 0, 71, 71, 44, 0, 47, 58, 0, 22,
- 0, 17, 0, 46, 50, 73, 71, 19, 57, 15,
- 32, 0, 0, 49, 0, 68, 0, 59, 70, 0,
- 45
+ 0, 246, 146, 242, 111, 90, 92, 0, 227, 129,
+ 0, 173, 190, 0, 236, 237, 93, 0, 0, 0,
+ 137, 143, 0, 0, 0, 207, 208, 209, 261, 141,
+ 0, 206, 210, 244, 204, 0, 135, 0, 197, 0,
+ 198, 0, 14, 16, 28, 88, 16, 16, 33, 0,
+ 0, 77, 0, 0, 79, 0, 0, 248, 16, 75,
+ 80, 0, 0, 61, 48, 0, 0, 0, 127, 0,
+ 0, 131, 109, 0, 91, 175, 123, 188, 147, 0,
+ 140, 183, 0, 136, 142, 0, 138, 199, 200, 134,
+ 0, 90, 0, 53, 242, 73, 73, 0, 0, 0,
+ 0, 0, 43, 0, 0, 0, 0, 247, 229, 97,
+ 98, 95, 95, 105, 104, 108, 110, 0, 19, 145,
+ 139, 124, 0, 0, 90, 19, 0, 0, 0, 18,
+ 68, 68, 0, 0, 71, 76, 0, 0, 38, 39,
+ 96, 100, 100, 106, 112, 0, 21, 114, 113, 30,
+ 0, 0, 35, 71, 71, 19, 0, 0, 36, 37,
+ 0, 0, 51, 0, 0, 71, 101, 103, 99, 107,
+ 176, 0, 19, 54, 41, 42, 0, 69, 0, 71,
+ 71, 44, 0, 47, 102, 58, 0, 22, 0, 17,
+ 0, 46, 50, 73, 71, 19, 57, 15, 32, 0,
+ 0, 49, 0, 68, 0, 59, 70, 0, 45
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -412, -412, -412, -412, -412, -412, -412, -412, 3, -412,
- -60, -37, -412, -15, -412, 490, 410, 10, -412, -412,
- -412, -412, -412, -412, -412, -412, -412, -315, -399, -75,
- -411, -412, 53, 204, -234, 19, -412, 318, 499, -412,
- 456, 165, -329, 305, 134, -412, -412, -6, -36, -412,
- -412, -412, -412, -412, -412, -412, -412, 198, -412, -412,
- 415, -106, -125, -412, -412, 241, -412, -412, 357, 303,
- -41, -39, -412, -412, -412, -412, -412, 9
+ -440, -440, -440, -440, -440, -440, -440, -440, 10, -440,
+ -60, -95, -440, -15, -440, 529, 454, -3, -440, -440,
+ -440, -440, -440, -440, -440, -440, -440, -315, -439, -103,
+ -420, -440, 88, 282, -206, 26, -440, 361, 522, -440,
+ 506, 200, -330, 353, 156, -440, -440, 136, -440, 133,
+ -440, -440, 177, -440, -440, -6, -36, -440, -440, -440,
+ -440, -440, -440, -440, -440, 25, -440, -440, 468, -106,
+ -125, -440, -440, 306, -440, -440, 450, 233, -35, -33,
+ -440, -440, -440, -440, -440, 4
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 7, 8, 9, 10, 11, 12, 13, 94, 374,
- 15, 452, 472, 102, 484, 222, 100, 101, 375, 376,
- 303, 457, 505, 433, 447, 499, 508, 96, 475, 212,
- 449, 390, 380, 324, 383, 392, 300, 198, 121, 195,
- 141, 232, 337, 251, 335, 402, 466, 97, 58, 59,
- 333, 287, 60, 61, 62, 63, 64, 65, 117, 66,
- 145, 131, 67, 400, 386, 311, 312, 206, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 158
+ 15, 460, 485, 102, 501, 222, 100, 101, 375, 376,
+ 303, 465, 523, 433, 455, 517, 526, 96, 488, 212,
+ 457, 390, 380, 324, 383, 392, 300, 198, 121, 195,
+ 141, 232, 337, 251, 471, 442, 443, 497, 444, 445,
+ 446, 447, 335, 402, 479, 97, 58, 59, 333, 287,
+ 60, 61, 62, 63, 64, 65, 117, 66, 145, 131,
+ 67, 400, 386, 311, 312, 206, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 158
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -312,232 +320,215 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 103, 236, 389, 57, 130, 147, 403, 148, 14, 224,
- 105, 377, 150, 78, 77, 450, 164, 194, 165, 230,
- 77, 95, 110, 110, 110, 77, 110, 110, 112, 113,
- 114, 108, 115, 116, 119, 241, 109, 138, 19, 20,
- 77, 252, 127, 110, 110, 135, 124, 163, 157, 133,
- 134, 108, 497, 348, 476, 139, 109, 118, 110, 110,
- 140, 187, 231, 188, 163, 159, -247, -249, -247, -249,
- 19, 20, 21, 385, 399, 473, 474, 19, 20, 130,
- 125, 126, 187, 391, 188, -251, 396, 397, -247, 223,
- -247, -249, 445, -249, 512, 210, -16, 238, 186, -222,
- 330, 193, 246, 378, 247, 130, 464, 166, 221, 332,
- 197, -221, 227, 55, 361, 350, 518, 467, 199, 235,
- 57, -223, 310, 211, 229, 55, -225, -224, 200, 110,
- 498, 366, 189, 55, 190, 237, 201, 368, 249, 304,
- 305, 306, 307, 309, 370, 317, 318, 202, 320, 321,
- 160, 161, 162, 143, 254, 255, 256, 55, 258, 259,
- 261, 434, 144, 315, 55, 316, -252, -252, -252, 185,
- 160, 161, 162, 160, 161, 162, 160, 161, 162, 298,
- 290, 291, 292, 293, 294, 295, 296, 297, 208, 191,
- 331, 192, 160, 161, 162, 454, 455, 389, 160, 161,
- 162, 240, 408, 213, 209, 160, 161, 162, 323, 325,
- 326, 327, 328, 329, 322, 106, 107, 225, 226, 57,
- 413, 228, 239, 441, 481, 233, 250, 401, 120, 299,
- 252, 340, 123, 302, 203, 308, 343, 128, 415, 319,
- 136, 334, 336, 142, 339, 149, 347, 151, 152, 153,
- 154, 155, 341, 346, 277, 348, 278, 502, 204, 395,
- 279, 280, 281, 160, 161, 162, 282, 205, 162, 55,
- 373, 353, 354, 355, 160, 161, 162, 315, 360, 316,
- 356, 160, 161, 162, 160, 161, 162, 357, 110, 358,
- 362, 160, 161, 162, 160, 161, 162, 130, 381, 325,
- 384, 384, 349, 214, 215, 216, 217, 283, 379, 55,
- 218, 393, 219, 420, 384, 384, 422, 423, 448, 365,
- 253, 398, 111, 111, 111, 363, 111, 111, 430, 160,
- 161, 162, 160, 161, 162, -31, 388, 160, 161, 162,
- 405, 243, 409, 132, 111, 284, 404, 285, 286, 146,
- 410, 230, 160, 161, 162, 338, 424, 57, 111, 111,
- 367, 257, 416, -79, 417, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 369, 479, 160, 161, 162, 160, 161, 162, 130, 384,
- 418, 453, 207, 437, 456, 487, 488, 419, 460, 461,
- 425, 426, 160, 161, 162, 427, 428, 496, 429, 431,
- 371, 345, 470, 471, 160, 161, 162, 503, 504, 160,
- 161, 162, 482, 384, 384, 462, 432, 170, 171, 132,
- 412, 513, 468, 435, 436, 440, 490, 438, -175, 442,
- 492, 493, 439, 443, 451, 351, 245, 187, 465, 188,
- -175, 381, 384, 179, 180, 459, 444, 489, 506, 181,
- 458, 463, 182, 183, 184, 185, 168, 169, 170, 171,
- 500, 469, 477, 478, 515, 485, 491, -175, -175, -175,
- -175, 507, 520, 494, -175, 384, -175, 495, 288, -175,
- 509, 511, 514, 178, 179, 180, -175, -175, -175, -175,
- 181, 519, 99, 182, 183, 184, 185, 314, 220, 382,
- 480, -175, -175, -175, 301, -175, -175, -175, -175, -175,
- -175, -175, -175, -175, -175, -175, 168, 169, 170, 171,
- -175, 516, 122, -175, -175, -175, -175, -175, 196, -175,
- 421, -252, -175, 170, 171, -214, 160, 161, 162, 344,
- 411, 176, 177, 178, 179, 180, 446, -214, 244, 394,
- 181, 313, 170, 182, 183, 184, 185, 0, 0, 179,
- 180, 0, 364, 0, 0, 181, 0, 0, 182, 183,
- 184, 185, 0, 0, -214, -214, -214, -214, 111, 180,
- 0, -214, 0, -214, 181, 0, -214, 182, 183, 184,
- 185, 0, 0, -214, -214, -214, -214, 160, 161, 162,
- 0, 0, 387, 160, 161, 162, 0, 0, -214, -214,
- -214, 314, -214, -214, -214, -214, -214, -214, -214, -214,
- -214, -214, -214, 406, 0, 0, 0, -214, 0, 407,
- -214, -214, -214, -214, -214, 0, -214, -13, 79, -214,
- 0, 0, 0, 0, 0, 0, 77, 0, 16, 0,
- 17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
- 25, 26, 0, 27, 28, 29, 30, 31, 32, 80,
- 98, 81, 82, 33, 83, 84, 85, 86, 87, 88,
- 170, 171, 0, 89, 90, 91, 92, 34, 0, 35,
- 36, 37, 38, 39, 40, 160, 161, 162, 0, 41,
- 42, 43, 44, 45, 46, 47, 0, 180, 0, 0,
- 0, 0, 181, 48, 0, 182, 183, 184, 185, 0,
- 0, 414, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, -3, 79, 0, 0, 0, 54, 93, 55,
- 56, 77, 0, 16, 0, 17, 18, 19, 20, 21,
- 0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
- 29, 30, 31, 32, 80, 98, 81, 82, 33, 83,
- 84, 85, 86, 87, 88, 0, 0, 0, 89, 90,
- 91, 92, 34, 0, 35, 36, 37, 38, 39, 40,
- 0, 0, 0, 0, 41, 42, 43, 44, 45, 46,
- 47, 180, 0, 0, 0, 0, 181, 0, 48, 182,
- 183, 184, 185, 181, 0, 0, 182, 183, 184, 185,
- 49, 50, 0, 51, 0, 52, 53, 0, 79, 0,
- 0, 0, 54, 93, 55, 56, 77, 372, 16, 0,
- 17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
- 25, 26, 0, 27, 28, 29, 30, 31, 32, 80,
- 98, 81, 82, 33, 83, 84, 85, 86, 87, 88,
- 0, 0, 0, 89, 90, 91, 92, 34, 0, 35,
- 36, 37, 38, 39, 40, 0, 0, 0, 0, 41,
- 42, 43, 44, 45, 46, 47, 1, 2, 3, 4,
- 5, 6, 0, 48, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, 0, 79, 0, 0, 0, 54, 93, 55,
- 56, 77, 483, 16, 0, 17, 18, 19, 20, 21,
- 0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
- 29, 30, 31, 32, 80, 98, 81, 82, 33, 83,
- 84, 85, 86, 87, 88, 0, 0, 0, 89, 90,
- 91, 92, 34, 0, 35, 36, 37, 38, 39, 40,
- 0, 0, 0, 0, 41, 42, 43, 44, 45, 46,
- 47, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 103, 236, 389, 57, 130, 403, 458, 377, 95, 224,
+ 105, 147, 150, 148, 77, 230, 164, 194, 165, 118,
+ 78, 14, 489, 112, 113, 114, 515, 115, 116, 110,
+ 110, 110, 119, 110, 110, 241, 139, 138, 19, 20,
+ 21, 140, 106, 107, 133, 134, 19, 20, 157, 127,
+ 110, 110, 135, 77, 124, 120, 187, 77, 188, 123,
+ 159, -263, 231, -263, 128, 110, 110, 136, 108, 77,
+ 142, 125, 149, 109, 151, 152, 153, 154, 155, 130,
+ 108, 277, 126, 278, -265, 109, -265, 279, 280, 281,
+ 310, 453, -16, 282, 536, 221, 163, 238, -267, 378,
+ 330, 385, 210, 530, 516, 130, 477, 166, 246, 252,
+ 247, 391, 227, 163, 396, 397, -239, 186, 348, 235,
+ 57, -241, 193, 399, 480, 55, 197, 439, 440, 199,
+ 237, 229, 200, 55, 283, 187, 110, 188, 249, 304,
+ 305, 306, 307, 309, -240, 317, 318, 211, 320, 321,
+ 55, 361, 19, 20, 254, 255, 256, 201, 258, 259,
+ 261, 202, 55, 160, 161, 162, 208, -238, 243, 315,
+ 209, 316, 284, 225, 285, 286, -237, 486, 487, 298,
+ 290, 291, 292, 293, 294, 295, 296, 297, 257, 434,
+ 331, 240, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 223, 323, 325,
+ 326, 327, 328, 329, 441, 389, 203, 213, -263, 57,
+ -263, 322, 226, 462, 463, 239, 228, 401, 143, 332,
+ -265, 340, -265, 160, 161, 162, 343, 144, 415, 55,
+ 204, 233, 350, 160, 161, 162, 347, 366, 189, 205,
+ 190, 55, 111, 111, 111, 250, 111, 111, 368, 395,
+ 494, 349, 370, 252, 299, 160, 161, 162, 160, 161,
+ 162, 353, 354, 132, 111, 191, 408, 192, 360, 146,
+ 302, 308, 413, 315, 319, 316, 339, 449, 111, 111,
+ 160, 161, 162, 365, 334, 110, 336, 130, 381, 325,
+ 384, 384, 520, 160, 161, 162, 341, 346, 160, 161,
+ 162, 393, 348, 420, 384, 384, 422, 423, 456, 160,
+ 161, 162, 207, 160, 161, 162, 162, 355, 430, 160,
+ 161, 162, 356, 461, 357, 358, 464, 160, 161, 162,
+ 468, 469, 409, 160, 161, 162, 362, 405, 160, 161,
+ 162, 214, 215, 216, 217, 253, 373, 57, 218, 132,
+ 219, 492, 483, 484, 214, 215, 216, 217, 160, 161,
+ 162, 218, 495, 219, 363, 379, 245, 411, 170, 171,
+ 504, 505, 160, 161, 162, 160, 161, 162, 130, 384,
+ -31, 507, 513, 437, 338, 509, 510, 388, 160, 161,
+ 162, 55, 398, 404, 179, 180, 521, 522, 345, 230,
+ 181, -79, 410, 182, 183, 184, 185, 524, 288, 416,
+ 167, 531, 417, 384, 384, 418, 419, 168, 169, 170,
+ 171, 424, 425, 475, 533, 426, 427, 314, 428, 431,
+ 481, 429, 538, 160, 161, 162, 432, 172, 173, 352,
+ 174, 175, 176, 177, 178, 179, 180, 435, 436, 381,
+ 384, 181, 438, 478, 182, 183, 184, 185, 448, 452,
+ 506, 367, 160, 161, 162, 450, 451, 168, 169, 170,
+ 171, 160, 161, 162, 466, -191, 459, 518, 467, 470,
+ 473, 160, 161, 162, 187, 474, 188, -191, 476, 482,
+ 369, 496, 384, 177, 178, 179, 180, 508, 502, 371,
+ 532, 181, 527, 490, 182, 183, 184, 185, 111, 412,
+ 491, 514, 525, 511, -191, -191, -191, -191, 160, 161,
+ 162, -191, 512, -191, 181, 529, -191, 182, 183, 184,
+ 185, 99, 387, -191, -191, -191, -191, 537, 160, 161,
+ 162, 314, 220, 493, 351, 122, 534, 301, -191, -191,
+ -191, -230, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -230, 364, 421, -268, -191, 170, 171,
+ -191, -191, -191, -191, -191, 180, -191, 382, 196, -191,
+ 181, 170, 171, 182, 183, 184, 185, 344, 472, 454,
+ -230, -230, -230, -230, 179, 180, 499, -230, 498, -230,
+ 181, 244, -230, 182, 183, 184, 185, 0, 180, -230,
+ -230, -230, -230, 181, 394, 0, 182, 183, 184, 185,
+ -268, -268, -268, 185, -230, -230, -230, 0, -230, -230,
+ -230, -230, -230, -230, -230, -230, -230, -230, -230, 160,
+ 161, 162, 0, -230, 313, 0, -230, -230, -230, -230,
+ -230, 0, -230, -13, 79, -230, 0, 0, 0, 0,
+ 0, 0, 77, 0, 16, 406, 17, 18, 19, 20,
+ 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
+ 28, 29, 30, 31, 32, 80, 98, 81, 82, 33,
+ 83, 84, 85, 86, 87, 88, 170, 0, 0, 89,
+ 90, 91, 92, 34, 0, 35, 36, 37, 38, 39,
+ 40, 160, 161, 162, 0, 41, 42, 43, 44, 45,
+ 46, 47, 0, 180, 160, 161, 162, 0, 181, 48,
+ 0, 182, 183, 184, 185, 0, 0, 407, 0, 0,
+ 0, 49, 50, 0, 51, 0, 52, 53, -3, 79,
+ 414, 0, 0, 54, 93, 55, 56, 77, 0, 16,
+ 0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
+ 24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
+ 80, 98, 81, 82, 33, 83, 84, 85, 86, 87,
+ 88, 0, 0, 0, 89, 90, 91, 92, 34, 0,
+ 35, 36, 37, 38, 39, 40, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 1, 2, 3,
+ 4, 5, 6, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
+ 0, 52, 53, 0, 79, 0, 0, 0, 54, 93,
+ 55, 56, 77, 372, 16, 0, 17, 18, 19, 20,
+ 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
+ 28, 29, 30, 31, 32, 80, 98, 81, 82, 33,
+ 83, 84, 85, 86, 87, 88, 0, 0, 0, 89,
+ 90, 91, 92, 34, 0, 35, 36, 37, 38, 39,
+ 40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 48,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 50, 0, 51, 0, 52, 53, 0, 79, 0,
- 0, 0, 54, 93, 55, 56, 77, 486, 16, 0,
- 17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
- 25, 26, 0, 27, 28, 29, 30, 31, 32, 80,
- 98, 81, 82, 33, 83, 84, 85, 86, 87, 88,
- 0, 0, 0, 89, 90, 91, 92, 34, 0, 35,
- 36, 37, 38, 39, 40, 0, 0, 0, 0, 41,
- 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, 0, 79, 0, 0, 0, 54, 93, 55,
- 56, 77, 501, 16, 0, 17, 18, 19, 20, 21,
- 0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
- 29, 30, 31, 32, 80, 98, 81, 82, 33, 83,
- 84, 85, 86, 87, 88, 0, 0, 0, 89, 90,
- 91, 92, 34, 0, 35, 36, 37, 38, 39, 40,
- 0, 0, 0, 0, 41, 42, 43, 44, 45, 46,
- 47, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 49, 50, 0, 51, 0, 52, 53, 0, 79,
+ 0, 0, 0, 54, 93, 55, 56, 77, 500, 16,
+ 0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
+ 24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
+ 80, 98, 81, 82, 33, 83, 84, 85, 86, 87,
+ 88, 0, 0, 0, 89, 90, 91, 92, 34, 0,
+ 35, 36, 37, 38, 39, 40, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
+ 0, 52, 53, 0, 79, 0, 0, 0, 54, 93,
+ 55, 56, 77, 503, 16, 0, 17, 18, 19, 20,
+ 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
+ 28, 29, 30, 31, 32, 80, 98, 81, 82, 33,
+ 83, 84, 85, 86, 87, 88, 0, 0, 0, 89,
+ 90, 91, 92, 34, 0, 35, 36, 37, 38, 39,
+ 40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 48,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 50, 0, 51, 0, 52, 53, 0, 79, 0,
- 0, 0, 54, 93, 55, 56, 77, 510, 16, 0,
- 17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
- 25, 26, 0, 27, 28, 29, 30, 31, 32, 80,
- 98, 81, 82, 33, 83, 84, 85, 86, 87, 88,
- 0, 0, 0, 89, 90, 91, 92, 34, 0, 35,
- 36, 37, 38, 39, 40, 0, 0, 0, 0, 41,
- 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, 0, 79, 0, 0, 0, 54, 93, 55,
- 56, 77, 0, 16, 0, 17, 18, 19, 20, 21,
- 0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
- 29, 30, 31, 32, 80, 98, 81, 82, 33, 83,
- 84, 85, 86, 87, 88, 0, 0, 0, 89, 90,
- 91, 92, 34, 0, 35, 36, 37, 38, 39, 40,
- 0, 0, 0, 0, 41, 42, 43, 44, 45, 46,
- 47, 0, 0, 517, 0, 0, 0, 0, 48, 0,
+ 0, 49, 50, 0, 51, 0, 52, 53, 0, 79,
+ 0, 0, 0, 54, 93, 55, 56, 77, 519, 16,
+ 0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
+ 24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
+ 80, 98, 81, 82, 33, 83, 84, 85, 86, 87,
+ 88, 0, 0, 0, 89, 90, 91, 92, 34, 0,
+ 35, 36, 37, 38, 39, 40, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
+ 0, 52, 53, 0, 79, 0, 0, 0, 54, 93,
+ 55, 56, 77, 528, 16, 0, 17, 18, 19, 20,
+ 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
+ 28, 29, 30, 31, 32, 80, 98, 81, 82, 33,
+ 83, 84, 85, 86, 87, 88, 0, 0, 0, 89,
+ 90, 91, 92, 34, 0, 35, 36, 37, 38, 39,
+ 40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 48,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 50, 0, 51, 0, 52, 53, 0, 79, 0,
- 0, 0, 54, 93, 55, 56, 77, 0, 16, 0,
- 17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
- 25, 26, 0, 27, 28, 29, 30, 31, 32, 80,
- 98, 81, 82, 33, 83, 84, 85, 86, 87, 88,
- 0, 0, 0, 89, 90, 91, 92, 34, 0, 35,
- 36, 37, 38, 39, 40, 0, 0, 0, 0, 41,
- 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, 0, 79, 0, 0, 0, 54, 93, 55,
- 56, 77, 0, 16, 0, 17, 18, 19, 20, 21,
+ 0, 49, 50, 0, 51, 0, 52, 53, 0, 79,
+ 0, 0, 0, 54, 93, 55, 56, 77, 0, 16,
+ 0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
+ 24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
+ 80, 98, 81, 82, 33, 83, 84, 85, 86, 87,
+ 88, 0, 0, 0, 89, 90, 91, 92, 34, 0,
+ 35, 36, 37, 38, 39, 40, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 535,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
+ 0, 52, 53, 0, 79, 0, 0, 0, 54, 93,
+ 55, 56, 77, 0, 16, 0, 17, 18, 19, 20,
+ 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
+ 28, 29, 30, 31, 32, 80, 98, 81, 82, 33,
+ 83, 84, 85, 86, 87, 88, 0, 0, 0, 89,
+ 90, 91, 92, 34, 0, 35, 36, 37, 38, 39,
+ 40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 49, 50, 0, 51, 0, 52, 53, 0, 79,
+ 0, 0, 0, 54, 93, 55, 56, 77, 0, 16,
+ 0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
+ 24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
+ 80, 0, 81, 82, 33, 83, 84, 85, 86, 87,
+ 88, 0, 0, 0, 89, 90, 91, 92, 34, 0,
+ 35, 36, 37, 38, 39, 40, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
+ 0, 52, 53, 79, 0, 0, 0, 0, 54, 93,
+ 55, 56, 0, 16, 0, 17, 18, 19, 20, 21,
0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
- 29, 30, 31, 32, 80, 0, 81, 82, 33, 83,
- 84, 85, 86, 87, 88, 0, 0, 0, 89, 90,
- 91, 92, 34, 0, 35, 36, 37, 38, 39, 40,
+ 29, 30, 31, 32, 0, 0, 0, 0, 33, 0,
+ 0, -268, 0, 0, 0, 0, 0, 0, 168, 169,
+ 170, 171, 34, 0, 35, 36, 37, 38, 39, 40,
0, 0, 0, 0, 41, 42, 43, 44, 45, 46,
- 47, 0, 0, 0, 0, 0, 0, 0, 48, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 174, 175, 176, 177, 178, 179, 180, 48, 0,
+ 0, 0, 181, 0, 0, 182, 183, 184, 185, 0,
49, 50, 0, 51, 0, 52, 53, 79, 0, 0,
- 0, 0, 54, 93, 55, 56, 0, 16, 0, 17,
+ 0, 0, 54, -74, 55, 56, 0, 16, 0, 17,
18, 19, 20, 21, 0, 0, 22, 23, 24, 25,
26, 0, 27, 28, 29, 30, 31, 32, 0, 0,
- 0, 0, 33, 0, 0, -252, 0, 0, 0, 0,
- 0, 0, 168, 169, 170, 171, 34, 0, 35, 36,
+ 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
+ 168, 169, 170, 171, 0, 0, 34, 0, 35, 36,
37, 38, 39, 40, 0, 0, 0, 0, 41, 42,
- 43, 44, 45, 46, 47, 174, 175, 176, 177, 178,
- 179, 180, 48, 0, 0, 0, 181, 0, 0, 182,
- 183, 184, 185, 0, 49, 50, 0, 51, 0, 52,
- 53, 79, 0, 0, 0, 0, 54, -74, 55, 56,
- 0, 16, 0, 17, 18, 19, 20, 21, 0, 0,
- 22, 23, 24, 25, 26, 0, 27, 28, 29, 30,
- 31, 32, 0, 0, 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 168, 169, 170, 171, 0, 0, 0,
- 34, 0, 35, 36, 37, 38, 39, 40, 0, 0,
- 0, 0, 41, 42, 43, 44, 45, 46, 47, 177,
- 178, 179, 180, 0, 0, 0, 48, 181, 0, 0,
- 182, 183, 184, 185, 0, 0, 0, 0, 49, 50,
- 0, 51, 0, 52, 53, 0, 0, 0, 0, -74,
- 54, 0, 55, 56, 77, 0, 16, 0, 17, 18,
- 19, 20, 21, 0, 0, 129, 23, 24, 25, 26,
- 109, 27, 28, 29, 30, 31, 32, 0, 0, 0,
- 0, 33, 0, 0, 0, 0, 168, -252, 170, 171,
- 0, 0, 0, 0, 0, 34, 0, 35, 36, 37,
- 38, 39, 40, 0, 0, 0, 0, 41, 42, 43,
- 44, 45, 46, 47, 179, 180, 0, 0, 0, 0,
- 181, 48, 0, 182, 183, 184, 185, 0, 0, 0,
- 0, 0, 0, 49, 50, 0, 51, 0, 52, 53,
- 0, 0, 0, 0, 0, 54, 0, 55, 56, 77,
- 0, 16, 0, 17, 18, 19, 20, 21, 0, 0,
- 22, 23, 24, 25, 26, 0, 27, 28, 29, 30,
- 31, 32, 0, 0, 0, 0, 33, 0, 0, 0,
- 0, 168, 169, 170, 171, 0, 0, 0, 0, 0,
- 34, 0, 35, 36, 37, 38, 39, 40, 0, 0,
- 0, 0, 41, 42, 43, 44, 45, 46, 47, 179,
- 180, 0, 0, 0, 0, 181, 48, 0, 182, 183,
- 184, 185, 0, 0, 0, 0, 0, 0, 49, 50,
- 0, 51, 0, 52, 53, 0, 0, 0, 0, 0,
- 54, 0, 55, 56, 16, 104, 17, 18, 19, 20,
- 21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
- 28, 29, 30, 31, 32, 0, 0, 0, 0, 33,
- 214, 215, 216, 217, 0, 0, 0, 218, 0, 219,
- 0, 0, 0, 34, 0, 35, 36, 37, 38, 39,
- 40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
- 46, 47, 0, 0, 160, 161, 162, 0, 0, 48,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 49, 50, 0, 51, 0, 52, 53, 0, 0,
- 0, 0, 0, 54, 0, 55, 56, 16, 0, 17,
+ 43, 44, 45, 46, 47, 176, 177, 178, 179, 180,
+ 0, 0, 48, 0, 181, 0, 0, 182, 183, 184,
+ 185, 0, 0, 0, 49, 50, 0, 51, 0, 52,
+ 53, 0, 0, 0, 0, -74, 54, 0, 55, 56,
+ 77, 0, 16, 0, 17, 18, 19, 20, 21, 0,
+ 0, 129, 23, 24, 25, 26, 109, 27, 28, 29,
+ 30, 31, 32, 0, 0, 0, 0, 33, 0, 0,
+ 0, 0, 0, 0, 168, 169, 170, 171, 0, 0,
+ 0, 34, 0, 35, 36, 37, 38, 39, 40, 0,
+ 0, 0, 0, 41, 42, 43, 44, 45, 46, 47,
+ 0, 178, 179, 180, 0, 0, 0, 48, 181, 0,
+ 0, 182, 183, 184, 185, 0, 0, 0, 0, 49,
+ 50, 0, 51, 0, 52, 53, 0, 0, 0, 0,
+ 0, 54, 0, 55, 56, 77, 0, 16, 0, 17,
18, 19, 20, 21, 0, 0, 22, 23, 24, 25,
26, 0, 27, 28, 29, 30, 31, 32, 0, 0,
- 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 35, 36,
+ 0, 0, 33, 0, 0, 0, 0, 168, -268, 170,
+ 171, 0, 0, 0, 0, 0, 34, 0, 35, 36,
37, 38, 39, 40, 0, 0, 0, 0, 41, 42,
- 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
- 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 43, 44, 45, 46, 47, 179, 180, 0, 0, 0,
+ 0, 181, 48, 0, 182, 183, 184, 185, 0, 0,
0, 0, 0, 0, 49, 50, 0, 51, 0, 52,
- 53, 0, 0, 0, 0, 0, 54, 137, 55, 56,
- 16, 0, 17, 18, 19, 20, 21, 0, 0, 22,
+ 53, 0, 0, 0, 0, 0, 54, 0, 55, 56,
+ 16, 104, 17, 18, 19, 20, 21, 0, 0, 22,
23, 24, 25, 26, 0, 27, 28, 29, 30, 31,
32, 0, 0, 0, 0, 33, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 168, 169, 170, 171, 0, 0, 0, 0, 0, 34,
0, 35, 36, 37, 38, 39, 40, 0, 0, 0,
- 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
- 0, 0, 0, 0, 0, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
- 51, 0, 52, 53, 0, 0, 0, 0, 156, 54,
+ 0, 41, 42, 43, 44, 45, 46, 47, 179, 180,
+ 0, 0, 0, 0, 181, 48, 0, 182, 183, 184,
+ 185, 0, 0, 0, 0, 0, 0, 49, 50, 0,
+ 51, 0, 52, 53, 0, 0, 0, 0, 0, 54,
0, 55, 56, 16, 0, 17, 18, 19, 20, 21,
0, 0, 22, 23, 24, 25, 26, 0, 27, 28,
29, 30, 31, 32, 0, 0, 0, 0, 33, 0,
@@ -547,7 +538,7 @@ static const yytype_int16 yytable[] =
47, 0, 0, 0, 0, 0, 0, 0, 48, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49, 50, 0, 51, 0, 52, 53, 0, 0, 0,
- 0, 234, 54, 0, 55, 56, 16, 0, 17, 18,
+ 0, 0, 54, 137, 55, 56, 16, 0, 17, 18,
19, 20, 21, 0, 0, 22, 23, 24, 25, 26,
0, 27, 28, 29, 30, 31, 32, 0, 0, 0,
0, 33, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -556,7 +547,7 @@ static const yytype_int16 yytable[] =
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 48, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 49, 50, 0, 51, 0, 52, 53,
- 0, 0, 0, 0, 248, 54, 0, 55, 56, 16,
+ 0, 0, 0, 0, 156, 54, 0, 55, 56, 16,
0, 17, 18, 19, 20, 21, 0, 0, 22, 23,
24, 25, 26, 0, 27, 28, 29, 30, 31, 32,
0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
@@ -565,7 +556,7 @@ static const yytype_int16 yytable[] =
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 49, 50, 0, 51,
- 0, 52, 53, 0, 0, 0, 0, 260, 54, 0,
+ 0, 52, 53, 0, 0, 0, 0, 234, 54, 0,
55, 56, 16, 0, 17, 18, 19, 20, 21, 0,
0, 22, 23, 24, 25, 26, 0, 27, 28, 29,
30, 31, 32, 0, 0, 0, 0, 33, 0, 0,
@@ -575,7 +566,7 @@ static const yytype_int16 yytable[] =
0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
50, 0, 51, 0, 52, 53, 0, 0, 0, 0,
- 289, 54, 0, 55, 56, 16, 0, 17, 18, 19,
+ 248, 54, 0, 55, 56, 16, 0, 17, 18, 19,
20, 21, 0, 0, 22, 23, 24, 25, 26, 0,
27, 28, 29, 30, 31, 32, 0, 0, 0, 0,
33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -584,7 +575,7 @@ static const yytype_int16 yytable[] =
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 49, 50, 0, 51, 0, 52, 53, 0,
- 0, 0, 0, 342, 54, 0, 55, 56, 16, 0,
+ 0, 0, 0, 260, 54, 0, 55, 56, 16, 0,
17, 18, 19, 20, 21, 0, 0, 22, 23, 24,
25, 26, 0, 27, 28, 29, 30, 31, 32, 0,
0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
@@ -593,7 +584,7 @@ static const yytype_int16 yytable[] =
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 49, 50, 0, 51, 0,
- 52, 53, 0, 0, 0, 0, 359, 54, 0, 55,
+ 52, 53, 0, 0, 0, 0, 289, 54, 0, 55,
56, 16, 0, 17, 18, 19, 20, 21, 0, 0,
22, 23, 24, 25, 26, 0, 27, 28, 29, 30,
31, 32, 0, 0, 0, 0, 33, 0, 0, 0,
@@ -602,7 +593,7 @@ static const yytype_int16 yytable[] =
0, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
- 0, 51, 0, 52, 53, 0, 0, 0, 0, 0,
+ 0, 51, 0, 52, 53, 0, 0, 0, 0, 342,
54, 0, 55, 56, 16, 0, 17, 18, 19, 20,
21, 0, 0, 22, 23, 24, 25, 26, 0, 27,
28, 29, 30, 31, 32, 0, 0, 0, 0, 33,
@@ -610,250 +601,247 @@ static const yytype_int16 yytable[] =
0, 0, 0, 34, 0, 35, 36, 37, 38, 39,
40, 0, 0, 0, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 48,
- 167, 0, 0, 0, 0, 0, 0, 168, 169, 170,
- 171, 49, 50, 0, 51, 0, 52, 53, 0, 0,
- 0, 0, 0, 242, 0, 55, 56, 172, 173, 352,
- 174, 175, 176, 177, 178, 179, 180, 0, 0, 0,
- 0, 181, 167, 0, 182, 183, 184, 185, 0, 168,
- 169, 170, 171, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 172,
- 173, 0, 174, 175, 176, 177, 178, 179, 180, 0,
- 0, 0, 0, 181, 167, 0, 182, 183, 184, 185,
- 0, 168, 169, 170, 171, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 173, 0, 174, 175, 176, 177, 178, 179,
- 180, 0, 0, 0, 0, 181, 0, 0, 182, 183,
- 184, 185
+ 0, 49, 50, 0, 51, 0, 52, 53, 0, 0,
+ 0, 0, 359, 54, 0, 55, 56, 16, 0, 17,
+ 18, 19, 20, 21, 0, 0, 22, 23, 24, 25,
+ 26, 0, 27, 28, 29, 30, 31, 32, 0, 0,
+ 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 35, 36,
+ 37, 38, 39, 40, 0, 0, 0, 0, 41, 42,
+ 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 50, 0, 51, 0, 52,
+ 53, 0, 0, 0, 0, 0, 54, 0, 55, 56,
+ 16, 0, 17, 18, 19, 20, 21, 0, 0, 22,
+ 23, 24, 25, 26, 0, 27, 28, 29, 30, 31,
+ 32, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 35, 36, 37, 38, 39, 40, 0, 0, 0,
+ 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 48, 167, 0, 0, 0,
+ 0, 0, 0, 168, 169, 170, 171, 49, 50, 0,
+ 51, 0, 52, 53, 0, 0, 0, 0, 0, 242,
+ 0, 55, 56, 172, 173, 0, 174, 175, 176, 177,
+ 178, 179, 180, 0, 0, 0, 0, 181, 167, 0,
+ 182, 183, 184, 185, 0, 168, 169, 170, 171, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 173, 0, 174, 175,
+ 176, 177, 178, 179, 180, 0, 0, 0, 0, 181,
+ 0, 0, 182, 183, 184, 185
};
static const yytype_int16 yycheck[] =
{
- 15, 126, 317, 9, 40, 46, 335, 46, 0, 115,
- 16, 9, 48, 10, 9, 426, 9, 77, 11, 23,
- 9, 11, 19, 20, 21, 9, 23, 24, 19, 20,
- 21, 20, 23, 24, 100, 141, 25, 43, 15, 16,
- 9, 11, 39, 40, 41, 42, 100, 77, 54, 40,
- 41, 20, 23, 11, 453, 20, 25, 11, 55, 56,
- 25, 9, 122, 11, 77, 56, 9, 9, 11, 11,
- 15, 16, 17, 307, 104, 43, 44, 15, 16, 115,
- 100, 100, 9, 317, 11, 9, 320, 321, 9, 12,
- 11, 9, 421, 11, 505, 92, 100, 133, 100, 69,
- 225, 9, 143, 101, 143, 141, 101, 100, 98, 12,
- 20, 69, 118, 102, 103, 12, 515, 446, 100, 125,
- 126, 69, 67, 45, 121, 102, 69, 69, 100, 126,
- 101, 12, 9, 102, 11, 126, 100, 12, 144, 199,
- 200, 201, 202, 203, 12, 205, 206, 100, 208, 209,
- 73, 74, 75, 91, 160, 161, 162, 102, 164, 165,
- 166, 395, 100, 204, 102, 204, 95, 96, 97, 98,
- 73, 74, 75, 73, 74, 75, 73, 74, 75, 194,
- 186, 187, 188, 189, 190, 191, 192, 193, 100, 9,
- 226, 11, 73, 74, 75, 429, 430, 512, 73, 74,
- 75, 101, 12, 101, 100, 73, 74, 75, 214, 215,
- 216, 217, 218, 219, 211, 17, 18, 100, 100, 225,
- 12, 99, 10, 12, 458, 99, 69, 333, 30, 20,
- 11, 237, 34, 20, 67, 91, 242, 39, 363, 100,
- 42, 100, 69, 45, 99, 47, 252, 49, 50, 51,
- 52, 53, 10, 23, 9, 11, 11, 491, 91, 319,
- 15, 16, 17, 73, 74, 75, 21, 100, 75, 102,
- 18, 277, 278, 103, 73, 74, 75, 318, 284, 318,
- 103, 73, 74, 75, 73, 74, 75, 103, 285, 103,
- 103, 73, 74, 75, 73, 74, 75, 333, 304, 305,
- 306, 307, 101, 39, 40, 41, 42, 62, 20, 102,
- 46, 317, 48, 373, 320, 321, 376, 377, 424, 101,
- 99, 99, 19, 20, 21, 100, 23, 24, 388, 73,
- 74, 75, 73, 74, 75, 100, 100, 73, 74, 75,
- 337, 143, 348, 40, 41, 100, 23, 102, 103, 46,
- 10, 23, 73, 74, 75, 99, 20, 363, 55, 56,
- 101, 163, 10, 99, 10, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 101, 456, 73, 74, 75, 73, 74, 75, 424, 395,
- 10, 428, 89, 399, 431, 470, 471, 10, 435, 436,
- 99, 99, 73, 74, 75, 99, 99, 482, 100, 99,
- 101, 99, 449, 450, 73, 74, 75, 492, 493, 73,
- 74, 75, 459, 429, 430, 440, 101, 60, 61, 126,
- 101, 506, 447, 99, 99, 9, 473, 99, 0, 10,
- 477, 478, 99, 99, 9, 99, 143, 9, 445, 11,
- 12, 457, 458, 86, 87, 99, 101, 472, 495, 92,
- 100, 71, 95, 96, 97, 98, 58, 59, 60, 61,
- 485, 101, 99, 99, 511, 9, 100, 39, 40, 41,
- 42, 70, 519, 101, 46, 491, 48, 99, 185, 51,
- 19, 99, 507, 85, 86, 87, 58, 59, 60, 61,
- 92, 99, 12, 95, 96, 97, 98, 204, 98, 305,
- 457, 73, 74, 75, 196, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 58, 59, 60, 61,
- 92, 512, 33, 95, 96, 97, 98, 99, 82, 101,
- 375, 58, 104, 60, 61, 0, 73, 74, 75, 244,
- 352, 83, 84, 85, 86, 87, 422, 12, 143, 318,
- 92, 204, 60, 95, 96, 97, 98, -1, -1, 86,
- 87, -1, 99, -1, -1, 92, -1, -1, 95, 96,
- 97, 98, -1, -1, 39, 40, 41, 42, 285, 87,
- -1, 46, -1, 48, 92, -1, 51, 95, 96, 97,
- 98, -1, -1, 58, 59, 60, 61, 73, 74, 75,
- -1, -1, 309, 73, 74, 75, -1, -1, 73, 74,
- 75, 318, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 99, -1, -1, -1, 92, -1, 99,
- 95, 96, 97, 98, 99, -1, 101, 0, 1, 104,
- -1, -1, -1, -1, -1, -1, 9, -1, 11, -1,
- 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
- 23, 24, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 60, 61, -1, 46, 47, 48, 49, 50, -1, 52,
- 53, 54, 55, 56, 57, 73, 74, 75, -1, 62,
- 63, 64, 65, 66, 67, 68, -1, 87, -1, -1,
- -1, -1, 92, 76, -1, 95, 96, 97, 98, -1,
- -1, 99, -1, -1, -1, 88, 89, -1, 91, -1,
- 93, 94, 0, 1, -1, -1, -1, 100, 101, 102,
- 103, 9, -1, 11, -1, 13, 14, 15, 16, 17,
- -1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, -1, -1, -1, 46, 47,
- 48, 49, 50, -1, 52, 53, 54, 55, 56, 57,
- -1, -1, -1, -1, 62, 63, 64, 65, 66, 67,
- 68, 87, -1, -1, -1, -1, 92, -1, 76, 95,
- 96, 97, 98, 92, -1, -1, 95, 96, 97, 98,
- 88, 89, -1, 91, -1, 93, 94, -1, 1, -1,
- -1, -1, 100, 101, 102, 103, 9, 10, 11, -1,
- 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
- 23, 24, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- -1, -1, -1, 46, 47, 48, 49, 50, -1, 52,
- 53, 54, 55, 56, 57, -1, -1, -1, -1, 62,
- 63, 64, 65, 66, 67, 68, 3, 4, 5, 6,
- 7, 8, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, -1, 91, -1,
- 93, 94, -1, 1, -1, -1, -1, 100, 101, 102,
- 103, 9, 10, 11, -1, 13, 14, 15, 16, 17,
- -1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, -1, -1, -1, 46, 47,
- 48, 49, 50, -1, 52, 53, 54, 55, 56, 57,
- -1, -1, -1, -1, 62, 63, 64, 65, 66, 67,
- 68, -1, -1, -1, -1, -1, -1, -1, 76, -1,
+ 15, 126, 317, 9, 40, 335, 426, 9, 11, 115,
+ 16, 46, 48, 46, 9, 23, 9, 77, 11, 11,
+ 10, 0, 461, 19, 20, 21, 23, 23, 24, 19,
+ 20, 21, 100, 23, 24, 141, 20, 43, 15, 16,
+ 17, 25, 17, 18, 40, 41, 15, 16, 54, 39,
+ 40, 41, 42, 9, 100, 30, 9, 9, 11, 34,
+ 56, 9, 122, 11, 39, 55, 56, 42, 20, 9,
+ 45, 100, 47, 25, 49, 50, 51, 52, 53, 115,
+ 20, 9, 100, 11, 9, 25, 11, 15, 16, 17,
+ 67, 421, 100, 21, 533, 98, 77, 133, 9, 101,
+ 225, 307, 92, 523, 101, 141, 101, 100, 143, 11,
+ 143, 317, 118, 77, 320, 321, 69, 100, 11, 125,
+ 126, 69, 9, 104, 454, 102, 20, 15, 16, 100,
+ 126, 121, 100, 102, 62, 9, 126, 11, 144, 199,
+ 200, 201, 202, 203, 69, 205, 206, 45, 208, 209,
+ 102, 103, 15, 16, 160, 161, 162, 100, 164, 165,
+ 166, 100, 102, 73, 74, 75, 100, 69, 143, 204,
+ 100, 204, 100, 100, 102, 103, 69, 43, 44, 194,
+ 186, 187, 188, 189, 190, 191, 192, 193, 163, 395,
+ 226, 101, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 12, 214, 215,
+ 216, 217, 218, 219, 102, 530, 67, 101, 9, 225,
+ 11, 211, 100, 429, 430, 10, 99, 333, 91, 12,
+ 9, 237, 11, 73, 74, 75, 242, 100, 363, 102,
+ 91, 99, 12, 73, 74, 75, 252, 12, 9, 100,
+ 11, 102, 19, 20, 21, 69, 23, 24, 12, 319,
+ 466, 101, 12, 11, 20, 73, 74, 75, 73, 74,
+ 75, 277, 278, 40, 41, 9, 12, 11, 284, 46,
+ 20, 91, 12, 318, 100, 318, 99, 12, 55, 56,
+ 73, 74, 75, 101, 100, 285, 69, 333, 304, 305,
+ 306, 307, 508, 73, 74, 75, 10, 23, 73, 74,
+ 75, 317, 11, 373, 320, 321, 376, 377, 424, 73,
+ 74, 75, 89, 73, 74, 75, 75, 103, 388, 73,
+ 74, 75, 103, 428, 103, 103, 431, 73, 74, 75,
+ 435, 436, 348, 73, 74, 75, 103, 337, 73, 74,
+ 75, 39, 40, 41, 42, 99, 18, 363, 46, 126,
+ 48, 464, 457, 458, 39, 40, 41, 42, 73, 74,
+ 75, 46, 467, 48, 100, 20, 143, 352, 60, 61,
+ 483, 484, 73, 74, 75, 73, 74, 75, 424, 395,
+ 100, 486, 495, 399, 99, 490, 491, 100, 73, 74,
+ 75, 102, 99, 23, 86, 87, 509, 510, 99, 23,
+ 92, 99, 10, 95, 96, 97, 98, 512, 185, 10,
+ 51, 524, 10, 429, 430, 10, 10, 58, 59, 60,
+ 61, 20, 99, 448, 529, 99, 99, 204, 99, 99,
+ 455, 100, 537, 73, 74, 75, 101, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 99, 99, 465,
+ 466, 92, 99, 453, 95, 96, 97, 98, 9, 101,
+ 485, 101, 73, 74, 75, 10, 99, 58, 59, 60,
+ 61, 73, 74, 75, 100, 0, 9, 502, 99, 25,
+ 77, 73, 74, 75, 9, 99, 11, 12, 71, 101,
+ 101, 78, 508, 84, 85, 86, 87, 100, 9, 101,
+ 525, 92, 19, 99, 95, 96, 97, 98, 285, 101,
+ 99, 496, 70, 101, 39, 40, 41, 42, 73, 74,
+ 75, 46, 99, 48, 92, 99, 51, 95, 96, 97,
+ 98, 12, 309, 58, 59, 60, 61, 99, 73, 74,
+ 75, 318, 98, 465, 99, 33, 530, 196, 73, 74,
+ 75, 0, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 12, 99, 375, 58, 92, 60, 61,
+ 95, 96, 97, 98, 99, 87, 101, 305, 82, 104,
+ 92, 60, 61, 95, 96, 97, 98, 244, 442, 422,
+ 39, 40, 41, 42, 86, 87, 473, 46, 472, 48,
+ 92, 143, 51, 95, 96, 97, 98, -1, 87, 58,
+ 59, 60, 61, 92, 318, -1, 95, 96, 97, 98,
+ 95, 96, 97, 98, 73, 74, 75, -1, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 73,
+ 74, 75, -1, 92, 204, -1, 95, 96, 97, 98,
+ 99, -1, 101, 0, 1, 104, -1, -1, -1, -1,
+ -1, -1, 9, -1, 11, 99, 13, 14, 15, 16,
+ 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 60, -1, -1, 46,
+ 47, 48, 49, 50, -1, 52, 53, 54, 55, 56,
+ 57, 73, 74, 75, -1, 62, 63, 64, 65, 66,
+ 67, 68, -1, 87, 73, 74, 75, -1, 92, 76,
+ -1, 95, 96, 97, 98, -1, -1, 99, -1, -1,
+ -1, 88, 89, -1, 91, -1, 93, 94, 0, 1,
+ 99, -1, -1, 100, 101, 102, 103, 9, -1, 11,
+ -1, 13, 14, 15, 16, 17, -1, -1, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, -1, -1, -1, 46, 47, 48, 49, 50, -1,
+ 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
+ 62, 63, 64, 65, 66, 67, 68, 3, 4, 5,
+ 6, 7, 8, -1, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, 89, -1, 91,
+ -1, 93, 94, -1, 1, -1, -1, -1, 100, 101,
+ 102, 103, 9, 10, 11, -1, 13, 14, 15, 16,
+ 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, -1, -1, -1, 46,
+ 47, 48, 49, 50, -1, 52, 53, 54, 55, 56,
+ 57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
+ 67, 68, -1, -1, -1, -1, -1, -1, -1, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, 89, -1, 91, -1, 93, 94, -1, 1, -1,
- -1, -1, 100, 101, 102, 103, 9, 10, 11, -1,
- 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
- 23, 24, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- -1, -1, -1, 46, 47, 48, 49, 50, -1, 52,
- 53, 54, 55, 56, 57, -1, -1, -1, -1, 62,
- 63, 64, 65, 66, 67, 68, -1, -1, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, -1, 91, -1,
- 93, 94, -1, 1, -1, -1, -1, 100, 101, 102,
- 103, 9, 10, 11, -1, 13, 14, 15, 16, 17,
- -1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, -1, -1, -1, 46, 47,
- 48, 49, 50, -1, 52, 53, 54, 55, 56, 57,
- -1, -1, -1, -1, 62, 63, 64, 65, 66, 67,
- 68, -1, -1, -1, -1, -1, -1, -1, 76, -1,
+ -1, 88, 89, -1, 91, -1, 93, 94, -1, 1,
+ -1, -1, -1, 100, 101, 102, 103, 9, 10, 11,
+ -1, 13, 14, 15, 16, 17, -1, -1, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, -1, -1, -1, 46, 47, 48, 49, 50, -1,
+ 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
+ 62, 63, 64, 65, 66, 67, 68, -1, -1, -1,
+ -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, 89, -1, 91,
+ -1, 93, 94, -1, 1, -1, -1, -1, 100, 101,
+ 102, 103, 9, 10, 11, -1, 13, 14, 15, 16,
+ 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, -1, -1, -1, 46,
+ 47, 48, 49, 50, -1, 52, 53, 54, 55, 56,
+ 57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
+ 67, 68, -1, -1, -1, -1, -1, -1, -1, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, 89, -1, 91, -1, 93, 94, -1, 1, -1,
- -1, -1, 100, 101, 102, 103, 9, 10, 11, -1,
- 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
- 23, 24, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- -1, -1, -1, 46, 47, 48, 49, 50, -1, 52,
- 53, 54, 55, 56, 57, -1, -1, -1, -1, 62,
- 63, 64, 65, 66, 67, 68, -1, -1, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, -1, 91, -1,
- 93, 94, -1, 1, -1, -1, -1, 100, 101, 102,
- 103, 9, -1, 11, -1, 13, 14, 15, 16, 17,
- -1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, -1, -1, -1, 46, 47,
- 48, 49, 50, -1, 52, 53, 54, 55, 56, 57,
- -1, -1, -1, -1, 62, 63, 64, 65, 66, 67,
- 68, -1, -1, 71, -1, -1, -1, -1, 76, -1,
+ -1, 88, 89, -1, 91, -1, 93, 94, -1, 1,
+ -1, -1, -1, 100, 101, 102, 103, 9, 10, 11,
+ -1, 13, 14, 15, 16, 17, -1, -1, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, -1, -1, -1, 46, 47, 48, 49, 50, -1,
+ 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
+ 62, 63, 64, 65, 66, 67, 68, -1, -1, -1,
+ -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, 89, -1, 91,
+ -1, 93, 94, -1, 1, -1, -1, -1, 100, 101,
+ 102, 103, 9, 10, 11, -1, 13, 14, 15, 16,
+ 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, -1, -1, -1, 46,
+ 47, 48, 49, 50, -1, 52, 53, 54, 55, 56,
+ 57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
+ 67, 68, -1, -1, -1, -1, -1, -1, -1, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, 89, -1, 91, -1, 93, 94, -1, 1, -1,
- -1, -1, 100, 101, 102, 103, 9, -1, 11, -1,
- 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
- 23, 24, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- -1, -1, -1, 46, 47, 48, 49, 50, -1, 52,
- 53, 54, 55, 56, 57, -1, -1, -1, -1, 62,
- 63, 64, 65, 66, 67, 68, -1, -1, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, -1, 91, -1,
- 93, 94, -1, 1, -1, -1, -1, 100, 101, 102,
- 103, 9, -1, 11, -1, 13, 14, 15, 16, 17,
+ -1, 88, 89, -1, 91, -1, 93, 94, -1, 1,
+ -1, -1, -1, 100, 101, 102, 103, 9, -1, 11,
+ -1, 13, 14, 15, 16, 17, -1, -1, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, -1, -1, -1, 46, 47, 48, 49, 50, -1,
+ 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
+ 62, 63, 64, 65, 66, 67, 68, -1, -1, 71,
+ -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, 89, -1, 91,
+ -1, 93, 94, -1, 1, -1, -1, -1, 100, 101,
+ 102, 103, 9, -1, 11, -1, 13, 14, 15, 16,
+ 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, -1, -1, -1, 46,
+ 47, 48, 49, 50, -1, 52, 53, 54, 55, 56,
+ 57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
+ 67, 68, -1, -1, -1, -1, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 88, 89, -1, 91, -1, 93, 94, -1, 1,
+ -1, -1, -1, 100, 101, 102, 103, 9, -1, 11,
+ -1, 13, 14, 15, 16, 17, -1, -1, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, -1, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, -1, -1, -1, 46, 47, 48, 49, 50, -1,
+ 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
+ 62, 63, 64, 65, 66, 67, 68, -1, -1, -1,
+ -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 88, 89, -1, 91,
+ -1, 93, 94, 1, -1, -1, -1, -1, 100, 101,
+ 102, 103, -1, 11, -1, 13, 14, 15, 16, 17,
-1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
- 28, 29, 30, 31, 32, -1, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, -1, -1, -1, 46, 47,
- 48, 49, 50, -1, 52, 53, 54, 55, 56, 57,
+ 28, 29, 30, 31, -1, -1, -1, -1, 36, -1,
+ -1, 51, -1, -1, -1, -1, -1, -1, 58, 59,
+ 60, 61, 50, -1, 52, 53, 54, 55, 56, 57,
-1, -1, -1, -1, 62, 63, 64, 65, 66, 67,
- 68, -1, -1, -1, -1, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 68, 81, 82, 83, 84, 85, 86, 87, 76, -1,
+ -1, -1, 92, -1, -1, 95, 96, 97, 98, -1,
88, 89, -1, 91, -1, 93, 94, 1, -1, -1,
-1, -1, 100, 101, 102, 103, -1, 11, -1, 13,
14, 15, 16, 17, -1, -1, 20, 21, 22, 23,
24, -1, 26, 27, 28, 29, 30, 31, -1, -1,
- -1, -1, 36, -1, -1, 51, -1, -1, -1, -1,
- -1, -1, 58, 59, 60, 61, 50, -1, 52, 53,
+ -1, -1, 36, -1, -1, -1, -1, -1, -1, -1,
+ 58, 59, 60, 61, -1, -1, 50, -1, 52, 53,
54, 55, 56, 57, -1, -1, -1, -1, 62, 63,
- 64, 65, 66, 67, 68, 81, 82, 83, 84, 85,
- 86, 87, 76, -1, -1, -1, 92, -1, -1, 95,
- 96, 97, 98, -1, 88, 89, -1, 91, -1, 93,
- 94, 1, -1, -1, -1, -1, 100, 101, 102, 103,
- -1, 11, -1, 13, 14, 15, 16, 17, -1, -1,
- 20, 21, 22, 23, 24, -1, 26, 27, 28, 29,
- 30, 31, -1, -1, -1, -1, 36, -1, -1, -1,
- -1, -1, -1, 58, 59, 60, 61, -1, -1, -1,
- 50, -1, 52, 53, 54, 55, 56, 57, -1, -1,
- -1, -1, 62, 63, 64, 65, 66, 67, 68, 84,
- 85, 86, 87, -1, -1, -1, 76, 92, -1, -1,
- 95, 96, 97, 98, -1, -1, -1, -1, 88, 89,
- -1, 91, -1, 93, 94, -1, -1, -1, -1, 99,
- 100, -1, 102, 103, 9, -1, 11, -1, 13, 14,
- 15, 16, 17, -1, -1, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, -1, -1, -1,
- -1, 36, -1, -1, -1, -1, 58, 59, 60, 61,
- -1, -1, -1, -1, -1, 50, -1, 52, 53, 54,
- 55, 56, 57, -1, -1, -1, -1, 62, 63, 64,
- 65, 66, 67, 68, 86, 87, -1, -1, -1, -1,
- 92, 76, -1, 95, 96, 97, 98, -1, -1, -1,
- -1, -1, -1, 88, 89, -1, 91, -1, 93, 94,
- -1, -1, -1, -1, -1, 100, -1, 102, 103, 9,
- -1, 11, -1, 13, 14, 15, 16, 17, -1, -1,
- 20, 21, 22, 23, 24, -1, 26, 27, 28, 29,
- 30, 31, -1, -1, -1, -1, 36, -1, -1, -1,
- -1, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 50, -1, 52, 53, 54, 55, 56, 57, -1, -1,
- -1, -1, 62, 63, 64, 65, 66, 67, 68, 86,
- 87, -1, -1, -1, -1, 92, 76, -1, 95, 96,
- 97, 98, -1, -1, -1, -1, -1, -1, 88, 89,
- -1, 91, -1, 93, 94, -1, -1, -1, -1, -1,
- 100, -1, 102, 103, 11, 12, 13, 14, 15, 16,
- 17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
- 27, 28, 29, 30, 31, -1, -1, -1, -1, 36,
- 39, 40, 41, 42, -1, -1, -1, 46, -1, 48,
- -1, -1, -1, 50, -1, 52, 53, 54, 55, 56,
- 57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
- 67, 68, -1, -1, 73, 74, 75, -1, -1, 76,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, 89, -1, 91, -1, 93, 94, -1, -1,
- -1, -1, -1, 100, -1, 102, 103, 11, -1, 13,
+ 64, 65, 66, 67, 68, 83, 84, 85, 86, 87,
+ -1, -1, 76, -1, 92, -1, -1, 95, 96, 97,
+ 98, -1, -1, -1, 88, 89, -1, 91, -1, 93,
+ 94, -1, -1, -1, -1, 99, 100, -1, 102, 103,
+ 9, -1, 11, -1, 13, 14, 15, 16, 17, -1,
+ -1, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, -1, -1, -1, -1, 36, -1, -1,
+ -1, -1, -1, -1, 58, 59, 60, 61, -1, -1,
+ -1, 50, -1, 52, 53, 54, 55, 56, 57, -1,
+ -1, -1, -1, 62, 63, 64, 65, 66, 67, 68,
+ -1, 85, 86, 87, -1, -1, -1, 76, 92, -1,
+ -1, 95, 96, 97, 98, -1, -1, -1, -1, 88,
+ 89, -1, 91, -1, 93, 94, -1, -1, -1, -1,
+ -1, 100, -1, 102, 103, 9, -1, 11, -1, 13,
14, 15, 16, 17, -1, -1, 20, 21, 22, 23,
24, -1, 26, 27, 28, 29, 30, 31, -1, -1,
- -1, -1, 36, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 50, -1, 52, 53,
+ -1, -1, 36, -1, -1, -1, -1, 58, 59, 60,
+ 61, -1, -1, -1, -1, -1, 50, -1, 52, 53,
54, 55, 56, 57, -1, -1, -1, -1, 62, 63,
- 64, 65, 66, 67, 68, -1, -1, -1, -1, -1,
- -1, -1, 76, -1, -1, -1, -1, -1, -1, -1,
+ 64, 65, 66, 67, 68, 86, 87, -1, -1, -1,
+ -1, 92, 76, -1, 95, 96, 97, 98, -1, -1,
-1, -1, -1, -1, 88, 89, -1, 91, -1, 93,
- 94, -1, -1, -1, -1, -1, 100, 101, 102, 103,
- 11, -1, 13, 14, 15, 16, 17, -1, -1, 20,
+ 94, -1, -1, -1, -1, -1, 100, -1, 102, 103,
+ 11, 12, 13, 14, 15, 16, 17, -1, -1, 20,
21, 22, 23, 24, -1, 26, 27, 28, 29, 30,
31, -1, -1, -1, -1, 36, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
+ 58, 59, 60, 61, -1, -1, -1, -1, -1, 50,
-1, 52, 53, 54, 55, 56, 57, -1, -1, -1,
- -1, 62, 63, 64, 65, 66, 67, 68, -1, -1,
- -1, -1, -1, -1, -1, 76, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, 89, -1,
- 91, -1, 93, 94, -1, -1, -1, -1, 99, 100,
+ -1, 62, 63, 64, 65, 66, 67, 68, 86, 87,
+ -1, -1, -1, -1, 92, 76, -1, 95, 96, 97,
+ 98, -1, -1, -1, -1, -1, -1, 88, 89, -1,
+ 91, -1, 93, 94, -1, -1, -1, -1, -1, 100,
-1, 102, 103, 11, -1, 13, 14, 15, 16, 17,
-1, -1, 20, 21, 22, 23, 24, -1, 26, 27,
28, 29, 30, 31, -1, -1, -1, -1, 36, -1,
@@ -863,7 +851,7 @@ static const yytype_int16 yycheck[] =
68, -1, -1, -1, -1, -1, -1, -1, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
88, 89, -1, 91, -1, 93, 94, -1, -1, -1,
- -1, 99, 100, -1, 102, 103, 11, -1, 13, 14,
+ -1, -1, 100, 101, 102, 103, 11, -1, 13, 14,
15, 16, 17, -1, -1, 20, 21, 22, 23, 24,
-1, 26, 27, 28, 29, 30, 31, -1, -1, -1,
-1, 36, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -918,7 +906,7 @@ static const yytype_int16 yycheck[] =
-1, -1, 62, 63, 64, 65, 66, 67, 68, -1,
-1, -1, -1, -1, -1, -1, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 88, 89,
- -1, 91, -1, 93, 94, -1, -1, -1, -1, -1,
+ -1, 91, -1, 93, 94, -1, -1, -1, -1, 99,
100, -1, 102, 103, 11, -1, 13, 14, 15, 16,
17, -1, -1, 20, 21, 22, 23, 24, -1, 26,
27, 28, 29, 30, 31, -1, -1, -1, -1, 36,
@@ -926,20 +914,34 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, 50, -1, 52, 53, 54, 55, 56,
57, -1, -1, -1, -1, 62, 63, 64, 65, 66,
67, 68, -1, -1, -1, -1, -1, -1, -1, 76,
- 51, -1, -1, -1, -1, -1, -1, 58, 59, 60,
- 61, 88, 89, -1, 91, -1, 93, 94, -1, -1,
- -1, -1, -1, 100, -1, 102, 103, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, -1, -1, -1,
- -1, 92, 51, -1, 95, 96, 97, 98, -1, 58,
- 59, 60, 61, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
- 79, -1, 81, 82, 83, 84, 85, 86, 87, -1,
- -1, -1, -1, 92, 51, -1, 95, 96, 97, 98,
- -1, 58, 59, 60, 61, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 79, -1, 81, 82, 83, 84, 85, 86,
- 87, -1, -1, -1, -1, 92, -1, -1, 95, 96,
- 97, 98
+ -1, 88, 89, -1, 91, -1, 93, 94, -1, -1,
+ -1, -1, 99, 100, -1, 102, 103, 11, -1, 13,
+ 14, 15, 16, 17, -1, -1, 20, 21, 22, 23,
+ 24, -1, 26, 27, 28, 29, 30, 31, -1, -1,
+ -1, -1, 36, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 50, -1, 52, 53,
+ 54, 55, 56, 57, -1, -1, -1, -1, 62, 63,
+ 64, 65, 66, 67, 68, -1, -1, -1, -1, -1,
+ -1, -1, 76, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 88, 89, -1, 91, -1, 93,
+ 94, -1, -1, -1, -1, -1, 100, -1, 102, 103,
+ 11, -1, 13, 14, 15, 16, 17, -1, -1, 20,
+ 21, 22, 23, 24, -1, 26, 27, 28, 29, 30,
+ 31, -1, -1, -1, -1, 36, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
+ -1, 52, 53, 54, 55, 56, 57, -1, -1, -1,
+ -1, 62, 63, 64, 65, 66, 67, 68, -1, -1,
+ -1, -1, -1, -1, -1, 76, 51, -1, -1, -1,
+ -1, -1, -1, 58, 59, 60, 61, 88, 89, -1,
+ 91, -1, 93, 94, -1, -1, -1, -1, -1, 100,
+ -1, 102, 103, 78, 79, -1, 81, 82, 83, 84,
+ 85, 86, 87, -1, -1, -1, -1, 92, 51, -1,
+ 95, 96, 97, 98, -1, 58, 59, 60, 61, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 79, -1, 81, 82,
+ 83, 84, 85, 86, 87, -1, -1, -1, -1, 92,
+ -1, -1, 95, 96, 97, 98
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -951,54 +953,55 @@ static const yytype_uint8 yystos[] =
16, 17, 20, 21, 22, 23, 24, 26, 27, 28,
29, 30, 31, 36, 50, 52, 53, 54, 55, 56,
57, 62, 63, 64, 65, 66, 67, 68, 76, 88,
- 89, 91, 93, 94, 100, 102, 103, 152, 153, 154,
- 157, 158, 159, 160, 161, 162, 164, 167, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 9, 113, 1,
+ 89, 91, 93, 94, 100, 102, 103, 160, 161, 162,
+ 165, 166, 167, 168, 169, 170, 172, 175, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 9, 113, 1,
32, 34, 35, 37, 38, 39, 40, 41, 42, 46,
- 47, 48, 49, 101, 113, 122, 132, 152, 33, 120,
- 121, 122, 118, 118, 12, 152, 162, 162, 20, 25,
- 113, 174, 182, 182, 182, 182, 182, 163, 11, 100,
- 162, 143, 143, 162, 100, 100, 100, 113, 162, 20,
- 153, 166, 174, 182, 182, 113, 162, 101, 152, 20,
- 25, 145, 162, 91, 100, 165, 174, 175, 176, 162,
- 153, 162, 162, 162, 162, 162, 99, 152, 182, 182,
+ 47, 48, 49, 101, 113, 122, 132, 160, 33, 120,
+ 121, 122, 118, 118, 12, 160, 170, 170, 20, 25,
+ 113, 182, 190, 190, 190, 190, 190, 171, 11, 100,
+ 170, 143, 143, 170, 100, 100, 100, 113, 170, 20,
+ 161, 174, 182, 190, 190, 113, 170, 101, 160, 20,
+ 25, 145, 170, 91, 100, 173, 182, 183, 184, 170,
+ 161, 170, 170, 170, 170, 170, 99, 160, 190, 190,
73, 74, 75, 77, 9, 11, 100, 51, 58, 59,
60, 61, 78, 79, 81, 82, 83, 84, 85, 86,
87, 92, 95, 96, 97, 98, 100, 9, 11, 9,
11, 9, 11, 9, 115, 144, 145, 20, 142, 100,
- 100, 100, 100, 67, 91, 100, 172, 174, 100, 100,
+ 100, 100, 100, 67, 91, 100, 180, 182, 100, 100,
113, 45, 134, 101, 39, 40, 41, 42, 46, 48,
- 121, 122, 120, 12, 166, 100, 100, 152, 99, 113,
- 23, 115, 146, 99, 99, 152, 167, 182, 153, 10,
- 101, 166, 100, 162, 165, 174, 175, 176, 99, 152,
- 69, 148, 11, 99, 152, 152, 152, 162, 152, 152,
- 99, 152, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 9, 11, 15,
- 16, 17, 21, 62, 100, 102, 103, 156, 174, 99,
- 152, 152, 152, 152, 152, 152, 152, 152, 118, 20,
+ 121, 122, 120, 12, 174, 100, 100, 160, 99, 113,
+ 23, 115, 146, 99, 99, 160, 175, 190, 161, 10,
+ 101, 174, 100, 170, 173, 182, 183, 184, 99, 160,
+ 69, 148, 11, 99, 160, 160, 160, 170, 160, 160,
+ 99, 160, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170, 9, 11, 15,
+ 16, 17, 21, 62, 100, 102, 103, 164, 182, 99,
+ 160, 160, 160, 160, 160, 160, 160, 160, 118, 20,
141, 142, 20, 125, 115, 115, 115, 115, 91, 115,
- 67, 170, 171, 173, 174, 175, 176, 115, 115, 100,
- 115, 115, 113, 152, 138, 152, 152, 152, 152, 152,
- 167, 153, 12, 155, 100, 149, 69, 147, 99, 99,
- 152, 10, 99, 152, 148, 99, 23, 152, 11, 101,
- 12, 99, 80, 152, 152, 103, 103, 103, 103, 99,
- 152, 103, 103, 100, 99, 101, 12, 101, 12, 101,
+ 67, 178, 179, 181, 182, 183, 184, 115, 115, 100,
+ 115, 115, 113, 160, 138, 160, 160, 160, 160, 160,
+ 175, 161, 12, 163, 100, 157, 69, 147, 99, 99,
+ 160, 10, 99, 160, 148, 99, 23, 160, 11, 101,
+ 12, 99, 80, 160, 160, 103, 103, 103, 103, 99,
+ 160, 103, 103, 100, 99, 101, 12, 101, 12, 101,
12, 101, 10, 18, 114, 123, 124, 9, 101, 20,
- 137, 152, 138, 139, 152, 139, 169, 174, 100, 132,
- 136, 139, 140, 152, 170, 115, 139, 139, 99, 104,
- 168, 166, 150, 147, 23, 113, 99, 99, 12, 152,
- 10, 162, 101, 12, 99, 167, 10, 10, 10, 10,
+ 137, 160, 138, 139, 160, 139, 177, 182, 100, 132,
+ 136, 139, 140, 160, 178, 115, 139, 139, 99, 104,
+ 176, 174, 158, 147, 23, 113, 99, 99, 12, 160,
+ 10, 170, 101, 12, 99, 175, 10, 10, 10, 10,
115, 146, 115, 115, 20, 99, 99, 99, 99, 100,
- 115, 99, 101, 128, 139, 99, 99, 152, 99, 99,
- 9, 12, 10, 99, 101, 147, 149, 129, 166, 135,
- 135, 9, 116, 116, 139, 139, 116, 126, 100, 99,
- 116, 116, 118, 71, 101, 113, 151, 147, 118, 101,
- 116, 116, 117, 43, 44, 133, 133, 99, 99, 134,
- 137, 139, 116, 10, 119, 9, 10, 134, 134, 118,
- 116, 100, 116, 116, 101, 99, 134, 23, 101, 130,
- 118, 10, 139, 134, 134, 127, 116, 70, 131, 19,
- 10, 99, 135, 134, 118, 116, 140, 71, 133, 99,
- 116
+ 115, 99, 101, 128, 139, 99, 99, 160, 99, 15,
+ 16, 102, 150, 151, 153, 154, 155, 156, 9, 12,
+ 10, 99, 101, 147, 157, 129, 174, 135, 135, 9,
+ 116, 116, 139, 139, 116, 126, 100, 99, 116, 116,
+ 25, 149, 149, 77, 99, 118, 71, 101, 113, 159,
+ 147, 118, 101, 116, 116, 117, 43, 44, 133, 133,
+ 99, 99, 134, 137, 139, 116, 78, 152, 152, 154,
+ 10, 119, 9, 10, 134, 134, 118, 116, 100, 116,
+ 116, 101, 99, 134, 170, 23, 101, 130, 118, 10,
+ 139, 134, 134, 127, 116, 70, 131, 19, 10, 99,
+ 135, 134, 118, 116, 140, 71, 133, 99, 116
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -1013,23 +1016,25 @@ static const yytype_uint8 yyr1[] =
132, 132, 132, 132, 132, 132, 132, 132, 133, 133,
133, 134, 134, 135, 136, 136, 137, 137, 138, 139,
140, 141, 141, 142, 143, 144, 145, 145, 146, 146,
- 147, 147, 147, 148, 148, 150, 149, 151, 151, 152,
- 152, 152, 152, 153, 153, 153, 154, 154, 154, 154,
- 154, 154, 154, 154, 155, 154, 156, 156, 157, 157,
- 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
- 157, 157, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 158, 158, 159, 159, 159, 159,
- 159, 159, 159, 159, 159, 160, 160, 160, 160, 160,
- 160, 161, 161, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 163, 162, 162, 162, 162, 162, 164, 164,
- 164, 165, 165, 165, 165, 165, 166, 166, 167, 167,
- 168, 168, 169, 170, 170, 170, 171, 171, 172, 172,
- 173, 174, 175, 176, 177, 177, 178, 179, 179, 180,
- 180, 181, 181, 182, 182, 182, 182
+ 147, 147, 147, 148, 148, 149, 149, 150, 150, 151,
+ 152, 152, 152, 153, 154, 154, 155, 155, 155, 156,
+ 156, 158, 157, 159, 159, 160, 160, 160, 160, 161,
+ 161, 161, 162, 162, 162, 162, 162, 162, 162, 162,
+ 163, 162, 164, 164, 165, 165, 165, 165, 165, 165,
+ 165, 165, 165, 165, 165, 165, 165, 165, 166, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 167, 167, 167, 167, 167, 167, 167, 167,
+ 167, 168, 168, 168, 168, 168, 168, 169, 169, 170,
+ 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170, 170, 171, 170,
+ 170, 170, 170, 170, 172, 172, 172, 173, 173, 173,
+ 173, 173, 174, 174, 175, 175, 176, 176, 177, 178,
+ 178, 178, 179, 179, 180, 180, 181, 182, 183, 184,
+ 185, 185, 186, 187, 187, 188, 188, 189, 189, 190,
+ 190, 190, 190
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -1044,23 +1049,25 @@ static const yytype_uint8 yyr2[] =
1, 1, 3, 3, 3, 3, 3, 3, 0, 2,
6, 0, 2, 0, 0, 1, 0, 1, 1, 1,
1, 1, 0, 0, 0, 0, 1, 1, 0, 1,
- 0, 2, 1, 2, 1, 0, 3, 1, 1, 3,
- 3, 3, 1, 2, 3, 1, 3, 5, 6, 3,
- 3, 5, 2, 4, 0, 5, 1, 1, 5, 4,
- 5, 4, 5, 6, 5, 4, 5, 4, 3, 6,
- 4, 5, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 4, 3, 5,
- 8, 2, 2, 1, 1, 1, 1, 5, 2, 3,
- 1, 2, 3, 1, 2, 1, 1, 1, 1, 1,
- 1, 4, 4, 5, 5, 1, 1, 3, 4, 3,
- 4, 4, 4, 4, 4, 1, 2, 2, 1, 2,
- 2, 1, 2, 1, 2, 1, 3, 1, 3, 1,
- 3, 4, 0, 6, 1, 1, 1, 1, 3, 2,
- 4, 3, 2, 1, 1, 1, 0, 1, 0, 1,
- 0, 2, 1, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 1, 3, 1,
- 3, 1, 3, 1, 1, 1, 1
+ 0, 2, 1, 2, 1, 0, 1, 1, 1, 3,
+ 0, 1, 2, 3, 1, 1, 2, 3, 1, 0,
+ 1, 0, 4, 1, 1, 3, 3, 3, 1, 2,
+ 3, 1, 3, 5, 6, 3, 3, 5, 2, 4,
+ 0, 5, 1, 1, 5, 4, 5, 4, 5, 6,
+ 5, 4, 5, 4, 3, 6, 4, 5, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 3, 2, 4, 3, 5, 8, 2, 2, 1,
+ 1, 1, 1, 5, 2, 3, 1, 2, 3, 1,
+ 2, 1, 1, 1, 1, 1, 1, 4, 4, 5,
+ 5, 1, 1, 3, 4, 3, 4, 4, 4, 4,
+ 4, 1, 2, 2, 1, 2, 2, 1, 2, 1,
+ 2, 1, 3, 1, 3, 1, 3, 4, 0, 6,
+ 1, 1, 1, 1, 3, 2, 4, 3, 2, 1,
+ 1, 1, 0, 1, 0, 1, 0, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+ 2, 4, 2, 1, 3, 1, 3, 1, 3, 1,
+ 1, 1, 1
};
typedef enum {
@@ -1091,15 +1098,17 @@ static const toketypes yy_type_tab[] =
toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival,
toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_ival, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval
+ toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval
};
/* Generated from:
- * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
+ * 719f2ad40259ac9c064749d399f2c7d1e1131abbc8c1f1ec0558cac2d8f2bc4c perly.y
* 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
* ex: set ro: */
diff --git a/perly.y b/perly.y
index 6eb4b23aad..f28124d9f4 100644
--- a/perly.y
+++ b/perly.y
@@ -74,7 +74,10 @@
%type <opval> formname subname proto optsubbody cont my_scalar my_var
%type <opval> refgen_topic formblock
%type <opval> subattrlist myattrlist myattrterm myterm
-%type <opval> subsignature termbinop termunop anonymous termdo
+%type <opval> termbinop termunop anonymous termdo
+%type <ival> sigslurpsigil
+%type <opval> sigvarname sigdefault sigscalarelem sigslurpelem
+%type <opval> sigelem siglist siglistornull subsignature
%type <opval> formstmtseq formline formarg
%nonassoc <ival> PREC_LOW
@@ -628,25 +631,268 @@ myattrlist: COLONATTR THING
{ $$ = (OP*)NULL; }
;
-/* Subroutine signature */
-subsignature: '('
- {
- /* We shouldn't get here otherwise */
- assert(FEATURE_SIGNATURES_IS_ENABLED);
- Perl_ck_warner_d(aTHX_
- packWARN(WARN_EXPERIMENTAL__SIGNATURES),
- "The signatures feature is experimental");
- $<opval>$ = parse_subsignature();
+
+/* --------------------------------------
+ * subroutine signature parsing
+ */
+
+/* the '' or 'foo' part of a '$' or '@foo' etc signature variable */
+sigvarname: /* NULL */
+ { $$ = (OP*)NULL; }
+ | PRIVATEREF
+ {
+ $$ = $1;
+ PL_parser->in_my = 0;
+ }
+ ;
+
+sigslurpsigil:
+ '@'
+ { $$ = '@'; }
+ | '%'
+ { $$ = '%'; }
+
+/* @, %, @foo, %foo */
+sigslurpelem: sigslurpsigil sigvarname sigdefault/* def only to catch errors */
+ {
+ I32 sigil = $1;
+ OP *var = $2;
+ OP *defexpr = $3;
+ int type = (sigil == '@' ? OP_PADAV : OP_PADHV);
+
+ if (PL_parser->sig_slurpy)
+ yyerror("Multiple slurpy parameters not allowed");
+ PL_parser->sig_slurpy = sigil;
+
+ if (defexpr)
+ yyerror("a slurpy parameter may not have "
+ "a default value");
+
+ if (var) {
+ OP *slice;
+
+ var->op_type = type;
+ var->op_ppaddr = PL_ppaddr[type];
+ var->op_flags = (OPf_WANT_LIST | OPf_MOD);
+ var->op_private = OPpLVAL_INTRO;
+
+ slice = PL_parser->sig_elems
+ ? op_prepend_elem(OP_ASLICE,
+ newOP(OP_PUSHMARK, 0),
+ newLISTOP(OP_ASLICE, 0,
+ list(newRANGE(0,
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems)),
+ newUNOP(OP_AV2ARYLEN, 0,
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_AV2ARYLEN)))),
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_ASLICE)))
+ : newUNOP(OP_RV2AV, 0, newGVOP(OP_GV, 0, PL_defgv));
+ $$ = newSTATEOP(0, NULL,
+ newASSIGNOP(OPf_STACKED, var, 0, slice));
+ }
+ else
+ $$ = (OP*)NULL;
+ }
+ ;
+
+/* default part of sub signature scalar element: i.e. '= default_expr' */
+sigdefault: /* NULL */
+ { $$ = (OP*)NULL; }
+ | ASSIGNOP
+ { $$ = newOP(OP_NULL, 0); }
+ | ASSIGNOP term
+ { $$ = $2; }
+
+
+/* subroutine signature scalar element: e.g. '$x', '$=', '$x = $default' */
+sigscalarelem:
+ '$' sigvarname sigdefault
+ {
+ OP *var = $2;
+ OP *defexpr = $3;
+ OP *argn = NULL;
+ OP *expr = NULL;
+
+ if (PL_parser->sig_slurpy)
+ yyerror("Slurpy parameter not last");
+
+ PL_parser->sig_elems++;
+
+ if (var) {
+ var->op_type = OP_PADSV;
+ var->op_ppaddr = PL_ppaddr[OP_PADSV];
+ var->op_flags = (OPf_WANT_SCALAR | OPf_MOD);
+ var->op_private = OPpLVAL_INTRO;
+ }
+
+ /* $_[N] */
+ argn = newBINOP(OP_AELEM, 0,
+ ref(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv)),
+ OP_RV2AV),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems - 1)));
+
+ if (defexpr) {
+ PL_parser->sig_optelems++;
+ /* is it '$var=undef', '$=' ? */
+ if ( ( defexpr->op_type == OP_NULL
+ || defexpr->op_type == OP_UNDEF)
+ && !(defexpr->op_flags & OPf_KIDS))
+ {
+ if (var) {
+ /* '$=' is legal, '$var=' isn't */
+ if (defexpr->op_type == OP_NULL)
+ yyerror("Optional parameter "
+ "lacks default expression");
+ else
+ expr = argn;
+ }
+ op_free(defexpr);
+ }
+ else {
+ /* @_ >= N */
+ OP *ge_op =
+ newBINOP(OP_GE, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems)));
+
+ expr = var
+ ? newCONDOP(0, ge_op, argn, defexpr)
+ : newLOGOP(OP_OR, 0, ge_op, defexpr);
+ }
+ }
+ else {
+ if (PL_parser->sig_optelems)
+ yyerror("Mandatory parameter "
+ "follows optional parameter");
+ expr = argn;
+ }
+
+ if (var)
+ expr = newASSIGNOP(OPf_STACKED, var, 0, expr);
+ if (expr)
+ $$ = op_prepend_elem(OP_LINESEQ,
+ newSTATEOP(0, NULL, NULL),
+ expr);
+ else
+ $$ = (OP*)NULL;
+ }
+ ;
+
+
+/* subroutine signature element: e.g. '$x = $default' or '%h' */
+sigelem: sigscalarelem
+ { parser->expect = XSIGVAR; $$ = $1; }
+ | sigslurpelem
+ { parser->expect = XSIGVAR; $$ = $1; }
+ ;
+
+/* list of subroutine signature elements */
+siglist:
+ siglist ','
+ { $$ = $1; }
+ | siglist ',' sigelem
+ {
+ $$ = op_append_list(OP_LINESEQ, $1, $3);
}
- ')'
+ | sigelem %prec PREC_LOW
+ { $$ = $1; }
+ ;
+
+/* () or (....) */
+siglistornull: /* NULL */
+ { $$ = (OP*)NULL; }
+ | siglist
+ { $$ = $1; }
+
+/* Subroutine signature */
+subsignature: '('
+ {
+ ENTER;
+ SAVEINT(PL_parser->sig_elems);
+ SAVEINT(PL_parser->sig_optelems);
+ SAVEI8(PL_parser->sig_slurpy);
+ PL_parser->sig_elems = 0;
+ PL_parser->sig_optelems = 0;
+ PL_parser->sig_slurpy = 0;
+ parser->expect = XSIGVAR;
+ }
+ siglistornull
+ ')'
{
- $$ = op_append_list(OP_LINESEQ, $<opval>2,
- newSTATEOP(0, NULL, sawparens(newNULLLIST())));
- parser->expect = XATTRBLOCK;
+ OP *sigops = $3;
+ int min_arity =
+ PL_parser->sig_elems - PL_parser->sig_optelems;
+
+ assert(FEATURE_SIGNATURES_IS_ENABLED);
+
+ /* We shouldn't get here otherwise */
+ Perl_ck_warner_d(aTHX_
+ packWARN(WARN_EXPERIMENTAL__SIGNATURES),
+ "The signatures feature is experimental");
+
+ /* handle odd/even for %foo */
+ if (PL_parser->sig_slurpy == '%') {
+ OP *chkop =
+ newLOGOP(
+ (PL_parser->sig_elems & 1)
+ ? OP_OR : OP_AND,
+ 0,
+ newBINOP(OP_BIT_AND, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0, newSViv(1))),
+ op_convert_list(OP_DIE, 0,
+ op_convert_list(OP_SPRINTF, 0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0,
+ newSVpvs("Odd name/value argument for subroutine at %s line %d.\n")),
+ newSLICEOP(0,
+ op_append_list(OP_LIST,
+ newSVOP(OP_CONST, 0, newSViv(1)),
+ newSVOP(OP_CONST, 0, newSViv(2))),
+ newOP(OP_CALLER, 0))))));
+ if (PL_parser->sig_optelems)
+ chkop = newLOGOP(OP_AND, 0,
+ newBINOP(OP_GT, 0,
+ scalar(newUNOP(OP_RV2AV, 0,
+ newGVOP(OP_GV, 0, PL_defgv))),
+ newSVOP(OP_CONST, 0,
+ newSViv(PL_parser->sig_elems))),
+ chkop);
+ sigops = op_prepend_elem(OP_LINESEQ,
+ chkop, sigops);
+
+ }
+ if (min_arity)
+ sigops = op_prepend_elem(OP_LINESEQ,
+ Perl_check_arity(aTHX_ min_arity,
+ FALSE),
+ sigops);
+ if (!PL_parser->sig_slurpy)
+ sigops = op_prepend_elem(OP_LINESEQ,
+ Perl_check_arity(aTHX_
+ PL_parser->sig_elems, TRUE),
+ sigops);
+
+ $$ = op_append_elem(OP_LINESEQ, sigops,
+ newSTATEOP(0, NULL, NULL));
+
+ parser->expect = XATTRBLOCK;
+ LEAVE;
}
;
+
+
/* Optional subroutine body, for named subroutine declaration */
optsubbody: block
| ';' { $$ = (OP*)NULL; }
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 146cd52911..19e9dffdb3 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -44,6 +44,22 @@ letter.
=over 4
+=item a signature parameter must start with '$', '@' or '%'
+
+(F) Each subroutine signature parameter declaration must start with a valid
+sigil; for example:
+
+ sub foo ($a, $, $b = 1, @c) {}
+
+=item a slurpy parameter may not have a default value
+
+(F) Only scalar subroutine signature parameters may have a default value;
+for example:
+
+ sub foo ($a = 1) {} # legal
+ sub foo (@a = (1)) {} # invalid
+ sub foo (%a = (a => b)) {} # invalid
+
=item accept() on closed socket %s
(W closed) You tried to do an accept on a closed socket. Did you forget
@@ -2576,6 +2592,22 @@ declaration. The '_' in a prototype must be followed by a ';',
indicating the rest of the parameters are optional, or one of '@'
or '%', since those two will accept 0 or more final parameters.
+=item illegal character following sigil in a subroutine signature
+
+(F) A parameter in a subroutine signature contained an unexpected character
+following the C<$>, C<@> or C<%> sigil character. Normally the sigil
+should be followed by the variable name or C<=> etc. Perhaps you are
+trying use a prototype while in the scope of C<use feature 'signatures'>?
+For example:
+
+ sub foo ($$) {} # legal - a prototype
+
+ use feature 'signatures;
+ sub foo ($$) {} # illegal - was expecting a signature
+ sub foo ($a, $b)
+ :prototype($$) {} # legal
+
+
=item Illegal character \%o (carriage return)
(F) Perl normally treats carriage returns in the program text as it
@@ -3641,6 +3673,15 @@ mutable before freeing the ops.
(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
They're written like C<$foo[1][2][3]>, as in C.
+=item Multiple slurpy parameters not allowed
+
+(F) In subroutine signatures, a slurpy parameter (C<@> or C<%>) must be
+the last parameter, and there must not be more than one of them; for
+example:
+
+ sub foo ($a, @b) {} # legal
+ sub foo ($a, @b, %) {} # invalid
+
=item '/' must follow a numeric type in unpack
(F) You had an unpack template that contained a '/', but this did not
@@ -4053,6 +4094,19 @@ doesn't somehow point to a valid subroutine. See L<overload>.
(W syntax) A format specified more picture fields than the next line
supplied. See L<perlform>.
+=item '#' not allowed immediately following a sigil in a subroutine signature
+
+(F) In a subroutine signature definition, a comment following a sigil
+(C<$>, C<@> or C<%>), needs to be separated by whitespace or a commma etc.,
+in particular to avoid confusion with the C<$#> variable. For example:
+
+ # bad
+ sub f ($# ignore first arg
+ , $b) {}
+ # good
+ sub f ($, # ignore first arg
+ $b) {}
+
=item %s: not found
(A) You've accidentally run your script through the Bourne shell instead
diff --git a/proto.h b/proto.h
index 0d554b919b..befd902553 100644
--- a/proto.h
+++ b/proto.h
@@ -266,6 +266,7 @@ PERL_CALLCONV U32 Perl_cast_ulong(NV f)
PERL_CALLCONV UV Perl_cast_uv(NV f)
__attribute__warn_unused_result__;
+PERL_CALLCONV OP* Perl_check_arity(pTHX_ int arity, bool max);
PERL_CALLCONV bool Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len);
#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT \
assert(s)
@@ -2449,9 +2450,6 @@ PERL_CALLCONV OP* Perl_parse_fullstmt(pTHX_ U32 flags);
PERL_CALLCONV SV* Perl_parse_label(pTHX_ U32 flags);
PERL_CALLCONV OP* Perl_parse_listexpr(pTHX_ U32 flags);
PERL_CALLCONV OP* Perl_parse_stmtseq(pTHX_ U32 flags);
-PERL_CALLCONV OP * Perl_parse_subsignature(pTHX)
- __attribute__warn_unused_result__;
-
PERL_CALLCONV OP* Perl_parse_termexpr(pTHX_ U32 flags);
PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt);
#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \
diff --git a/sv.c b/sv.c
index c77a8bb570..7459d7061d 100644
--- a/sv.c
+++ b/sv.c
@@ -12981,8 +12981,9 @@ Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param)
parser->in_my = proto->in_my;
parser->in_my_stash = hv_dup(proto->in_my_stash, param);
parser->error_count = proto->error_count;
-
-
+ parser->sig_elems = proto->sig_elems;
+ parser->sig_optelems= proto->sig_optelems;
+ parser->sig_slurpy = proto->sig_slurpy;
parser->linestr = sv_dup_inc(proto->linestr, param);
{
diff --git a/t/op/signatures.t b/t/op/signatures.t
index 217efa3add..3db1b40aa0 100644
--- a/t/op/signatures.t
+++ b/t/op/signatures.t
@@ -415,7 +415,8 @@ like $@, qr/\AToo many arguments for subroutine at \(eval \d+\) line 1\.\n\z/;
is $a, 123;
eval "#line 8 foo\nsub t024 (\$a =) { }";
-is $@, "Optional parameter lacks default expression at foo line 8\.\n";
+is $@,
+ qq{Optional parameter lacks default expression at foo line 8, near "=) "\n};
sub t025 ($ = undef) { $a // "z" }
is prototype(\&t025), undef;
@@ -557,10 +558,13 @@ like $@, qr/\AToo many arguments for subroutine at \(eval \d+\) line 1\.\n\z/;
is $a, 123;
eval "#line 8 foo\nsub t030 (\$a = 222, \$b) { }";
-is $@, "Mandatory parameter follows optional parameter at foo line 8\.\n";
+is $@, qq{Mandatory parameter follows optional parameter at foo line 8, near "\$b) "\n};
eval "#line 8 foo\nsub t031 (\$a = 222, \$b = 333, \$c, \$d) { }";
-is $@, "Mandatory parameter follows optional parameter at foo line 8\.\n";
+is $@, <<EOF;
+Mandatory parameter follows optional parameter at foo line 8, near "\$c,"
+Mandatory parameter follows optional parameter at foo line 8, near "\$d) "
+EOF
sub t034 (@abc) { join("/", @abc).";".scalar(@abc) }
is prototype(\&t034), undef;
@@ -575,10 +579,10 @@ is eval("t034(456, 789, 987, 654, 321, 111)"), "456/789/987/654/321/111;6";
is $a, 123;
eval "#line 8 foo\nsub t136 (\@abc = 222) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t137 (\@abc =) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "=) "\n};
sub t035 (@) { $a }
is prototype(\&t035), undef;
@@ -593,10 +597,10 @@ is eval("t035(456, 789, 987, 654, 321, 111)"), 123;
is $a, 123;
eval "#line 8 foo\nsub t138 (\@ = 222) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t139 (\@ =) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "=) "\n};
sub t039 (%abc) { join("/", map { $_."=".$abc{$_} } sort keys %abc) }
is prototype(\&t039), undef;
@@ -615,10 +619,10 @@ is eval("t039(456, 789, 987, 654, 321, 111)"), "321=111/456=789/987=654";
is $a, 123;
eval "#line 8 foo\nsub t140 (\%abc = 222) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t141 (\%abc =) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "=) "\n};
sub t040 (%) { $a }
is prototype(\&t040), undef;
@@ -637,10 +641,10 @@ is eval("t040(456, 789, 987, 654, 321, 111)"), 123;
is $a, 123;
eval "#line 8 foo\nsub t142 (\% = 222) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t143 (\% =) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{a slurpy parameter may not have a default value at foo line 8, near "=) "\n};
sub t041 ($a, @b) { $a.";".join("/", @b) }
is prototype(\&t041), undef;
@@ -873,67 +877,70 @@ is eval("t058(456, 789, 987, 654, 321, 111)"), "456;789;987/654/321/111;4";
is $a, 123;
eval "#line 8 foo\nsub t059 (\@a, \$b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$b) "\n};
eval "#line 8 foo\nsub t060 (\@a, \$b = 222) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t061 (\@a, \@b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\@b) "\n};
eval "#line 8 foo\nsub t062 (\@a, \%b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "%b) "\n};
eval "#line 8 foo\nsub t063 (\@, \$b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$b) "\n};
eval "#line 8 foo\nsub t064 (\@, \$b = 222) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t065 (\@, \@b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\@b) "\n};
eval "#line 8 foo\nsub t066 (\@, \%b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "%b) "\n};
eval "#line 8 foo\nsub t067 (\@a, \$) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$) "\n};
eval "#line 8 foo\nsub t068 (\@a, \$ = 222) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t069 (\@a, \@) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\@) "\n};
eval "#line 8 foo\nsub t070 (\@a, \%) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\%) "\n};
eval "#line 8 foo\nsub t071 (\@, \$) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$) "\n};
eval "#line 8 foo\nsub t072 (\@, \$ = 222) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "222) "\n};
eval "#line 8 foo\nsub t073 (\@, \@) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\@) "\n};
eval "#line 8 foo\nsub t074 (\@, \%) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Multiple slurpy parameters not allowed at foo line 8, near "\%) "\n};
eval "#line 8 foo\nsub t075 (\%a, \$b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$b) "\n};
eval "#line 8 foo\nsub t076 (\%, \$b) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$b) "\n};
eval "#line 8 foo\nsub t077 (\$a, \@b, \$c) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$c) "\n};
eval "#line 8 foo\nsub t078 (\$a, \%b, \$c) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, qq{Slurpy parameter not last at foo line 8, near "\$c) "\n};
eval "#line 8 foo\nsub t079 (\$a, \@b, \$c, \$d) { }";
-is $@, "Slurpy parameter not last at foo line 8\.\n";
+is $@, <<EOF;
+Slurpy parameter not last at foo line 8, near "\$c,"
+Slurpy parameter not last at foo line 8, near "\$d) "
+EOF
sub t080 ($a,,, $b) { $a.$b }
is prototype(\&t080), undef;
@@ -962,10 +969,10 @@ like $@, qr/\AToo many arguments for subroutine at \(eval \d+\) line 1\.\n\z/;
is $a, 123;
eval "#line 8 foo\nsub t082 (, \$a) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{syntax error at foo line 8, near "(,"\n};
eval "#line 8 foo\nsub t083 (,) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{syntax error at foo line 8, near "(,"\n};
sub t084($a,$b){ $a.$b }
is prototype(\&t084), undef;
@@ -1058,38 +1065,52 @@ is $a, 123;
eval "#line 8 foo\nsub t088 (\$ #foo\na) { }";
is $@, "";
+
eval "#line 8 foo\nsub t089 (\$#foo\na) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+like $@, qr{\A'#' not allowed immediately following a sigil in a subroutine signature at foo line 8, near "\(\$"\n};
eval "#line 8 foo\nsub t090 (\@ #foo\na) { }";
is $@, "";
eval "#line 8 foo\nsub t091 (\@#foo\na) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+like $@, qr{\A'#' not allowed immediately following a sigil in a subroutine signature at foo line 8, near "\(\@"\n};
eval "#line 8 foo\nsub t092 (\% #foo\na) { }";
is $@, "";
eval "#line 8 foo\nsub t093 (\%#foo\na) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+like $@, qr{\A'#' not allowed immediately following a sigil in a subroutine signature at foo line 8, near "\(%"\n};
eval "#line 8 foo\nsub t094 (123) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+like $@, qr{\Aa signature parameter must start with '\$', '\@' or '%' at foo line 8, near "\(1"\n};
eval "#line 8 foo\nsub t095 (\$a, 123) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, <<EOF;
+a signature parameter must start with '\$', '\@' or '%' at foo line 8, near ", 1"
+syntax error at foo line 8, near ", 123"
+EOF
eval "#line 8 foo\nsub t096 (\$a 123) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, qq{syntax error at foo line 8, near "\$a 123"\n};
eval "#line 8 foo\nsub t097 (\$a { }) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, <<EOF;
+syntax error at foo line 8, near "\$a { "
+a signature parameter must start with '\$', '\@' or '%' at foo line 8, near "{ }"
+Missing right curly or square bracket at foo line 8, at end of line
+EOF
eval "#line 8 foo\nsub t098 (\$a; \$b) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, <<EOF;
+syntax error at foo line 8, at EOF
+syntax error at foo line 8, near "\$b) "
+EOF
eval "#line 8 foo\nsub t099 (\$\$) { }";
-like $@, qr/\AParse error at foo line 8\.\n/;
+is $@, <<EOF;
+illegal character following sigil in a subroutine signature at foo line 8, near "(\$"
+syntax error at foo line 8, near "\$\$"
+EOF
eval "#line 8 foo\nsub t101 (\@_) { }";
like $@, qr/\ACan't use global \@_ in "my" at foo line 8/;
@@ -1286,10 +1307,6 @@ while(<$kh>) {
# $y should be an error after $x=foo. The exact error we get may
# differ if this is __END__ or s or some other special keyword.
eval 'sub ($x = ' . $word . ', $y) {}';
- local $::TODO = 'does not work yet'
- if $word =~ /^(?:chmod|chown|die|exec|glob|kill|mkdir|print
- |printf|return|reverse|select|setpgrp|sort|split
- |system|unlink|utime|warn)\z/x;
isnt $@, "", "$word does not swallow trailing comma";
}
}
diff --git a/toke.c b/toke.c
index 440353cf00..09d15a950d 100644
--- a/toke.c
+++ b/toke.c
@@ -4403,7 +4403,7 @@ S_tokenize_use(pTHX_ int is_use, char *s) {
static const char* const exp_name[] =
{ "OPERATOR", "TERM", "REF", "STATE", "BLOCK", "ATTRBLOCK",
"ATTRTERM", "TERMBLOCK", "XBLOCKTERM", "POSTDEREF",
- "TERMORDORDOR"
+ "SIGVAR", "TERMORDORDOR"
};
#endif
@@ -4807,6 +4807,67 @@ Perl_yylex(pTHX)
PL_oldbufptr = s;
PL_parser->saw_infix_sigil = 0;
+ if (PL_expect == XSIGVAR) {
+ /* we expect the sigil and optional var name part of a
+ * signature element here. Since a '$' is not necessarily
+ * followed by a var name, handle it specially here; the general
+ * yylex code would otherwise try to interpret whatever follows
+ * as a var; e.g. ($, ...) would be seen as the var '$,'
+ */
+
+ char sigil;
+
+ s = skipspace(s);
+ sigil = *s++;
+ PL_bufptr = s; /* for error reporting */
+ switch (sigil) {
+ case '$':
+ case '@':
+ case '%':
+ /* spot stuff that looks like an prototype */
+ if (strchr("$:@%&*;\\[]", *s)) {
+ yyerror("illegal character following sigil in a subroutine signature");
+ break;
+ }
+ /* '$#' is banned, while '$ # comment' isn't */
+ if (*s == '#') {
+ yyerror("'#' not allowed immediately following a sigil in a subroutine signature");
+ break;
+ }
+ s = skipspace(s);
+ if (isIDFIRST_lazy_if(s, UTF)) {
+ char *dest = PL_tokenbuf + 1;
+ /* on next call to yylex this causes pending_ident()
+ * to allocmy() etc */
+ PL_in_my = KEY_my;
+ /* read var name, including sigil, into PL_tokenbuf */
+ PL_tokenbuf[0] = sigil;
+ parse_ident(&s, &dest, dest + sizeof(PL_tokenbuf) - 1,
+ 0, cBOOL(UTF), FALSE);
+ *dest = '\0';
+ assert(PL_tokenbuf[1]); /* we have a variable name */
+ force_ident_maybe_lex(sigil);
+ }
+ PL_expect = XOPERATOR;
+ break;
+
+ case ')':
+ PL_expect = XBLOCK;
+ break;
+ case ',': /* handle ($a,,$b) */
+ break;
+
+ default:
+ yyerror("a signature parameter must start with '$', '@' or '%'");
+ /* very crude error recovery: skip to likely next signature
+ * element */
+ while (*s && *s != '$' && *s != '@' && *s != '%' && *s != ')')
+ s++;
+ break;
+ }
+ TOKEN(sigil);
+ }
+
retry:
switch (*s) {
default:
@@ -11736,219 +11797,6 @@ Perl_parse_stmtseq(pTHX_ U32 flags)
return stmtseqop;
}
-#define parse_opt_lexvar() S_parse_opt_lexvar(aTHX)
-static OP *
-S_parse_opt_lexvar(pTHX)
-{
- I32 sigil, c;
- char *s, *d;
- OP *var;
- lex_token_boundary();
- sigil = lex_read_unichar(0);
- if (lex_peek_unichar(0) == '#') {
- qerror(Perl_mess(aTHX_ "Parse error"));
- return NULL;
- }
- lex_read_space(0);
- c = lex_peek_unichar(0);
- if (c == -1 || !(UTF ? isIDFIRST_uni(c) : isIDFIRST_A(c)))
- return NULL;
- s = PL_bufptr;
- d = PL_tokenbuf + 1;
- PL_tokenbuf[0] = (char)sigil;
- parse_ident(&s, &d, PL_tokenbuf + sizeof(PL_tokenbuf) - 1, 0,
- cBOOL(UTF), FALSE);
- PL_bufptr = s;
- if (d == PL_tokenbuf+1)
- return NULL;
- var = newOP(sigil == '$' ? OP_PADSV : sigil == '@' ? OP_PADAV : OP_PADHV,
- OPf_MOD | (OPpLVAL_INTRO<<8));
- var->op_targ = allocmy(PL_tokenbuf, d - PL_tokenbuf, UTF ? SVf_UTF8 : 0);
- return var;
-}
-
-OP *
-Perl_parse_subsignature(pTHX)
-{
- I32 c;
- int prev_type = 0, pos = 0, min_arity = 0, max_arity = 0;
- OP *initops = NULL;
- lex_read_space(0);
- c = lex_peek_unichar(0);
- while (c != /*(*/')') {
- switch (c) {
- case '$': {
- OP *var, *expr;
- if (prev_type == 2)
- qerror(Perl_mess(aTHX_ "Slurpy parameter not last"));
- var = parse_opt_lexvar();
- expr = var ?
- newBINOP(OP_AELEM, 0,
- ref(newUNOP(OP_RV2AV, 0, newGVOP(OP_GV, 0, PL_defgv)),
- OP_RV2AV),
- newSVOP(OP_CONST, 0, newSViv(pos))) :
- NULL;
- lex_read_space(0);
- c = lex_peek_unichar(0);
- if (c == '=') {
- lex_token_boundary();
- lex_read_unichar(0);
- lex_read_space(0);
- c = lex_peek_unichar(0);
- if (c == ',' || c == /*(*/')') {
- if (var)
- qerror(Perl_mess(aTHX_ "Optional parameter "
- "lacks default expression"));
- } else {
- OP *defexpr = parse_termexpr(0);
- if (defexpr->op_type == OP_UNDEF
- && !(defexpr->op_flags & OPf_KIDS))
- {
- op_free(defexpr);
- } else {
- OP *ifop =
- newBINOP(OP_GE, 0,
- scalar(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv))),
- newSVOP(OP_CONST, 0, newSViv(pos+1)));
- expr = var ?
- newCONDOP(0, ifop, expr, defexpr) :
- newLOGOP(OP_OR, 0, ifop, defexpr);
- }
- }
- prev_type = 1;
- } else {
- if (prev_type == 1)
- qerror(Perl_mess(aTHX_ "Mandatory parameter "
- "follows optional parameter"));
- prev_type = 0;
- min_arity = pos + 1;
- }
- if (var) expr = newASSIGNOP(OPf_STACKED, var, 0, expr);
- if (expr)
- initops = op_append_list(OP_LINESEQ, initops,
- newSTATEOP(0, NULL, expr));
- max_arity = ++pos;
- } break;
- case '@':
- case '%': {
- OP *var;
- if (prev_type == 2)
- qerror(Perl_mess(aTHX_ "Slurpy parameter not last"));
- var = parse_opt_lexvar();
- if (c == '%') {
- OP *chkop = newLOGOP((pos & 1) ? OP_OR : OP_AND, 0,
- newBINOP(OP_BIT_AND, 0,
- scalar(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv))),
- newSVOP(OP_CONST, 0, newSViv(1))),
- op_convert_list(OP_DIE, 0,
- op_convert_list(OP_SPRINTF, 0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0,
- newSVpvs("Odd name/value argument for subroutine at %s line %d.\n")),
- newSLICEOP(0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0, newSViv(1)),
- newSVOP(OP_CONST, 0, newSViv(2))),
- newOP(OP_CALLER, 0))))));
- if (pos != min_arity)
- chkop = newLOGOP(OP_AND, 0,
- newBINOP(OP_GT, 0,
- scalar(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv))),
- newSVOP(OP_CONST, 0, newSViv(pos))),
- chkop);
- initops = op_append_list(OP_LINESEQ,
- newSTATEOP(0, NULL, chkop),
- initops);
- }
- if (var) {
- OP *slice = pos ?
- op_prepend_elem(OP_ASLICE,
- newOP(OP_PUSHMARK, 0),
- newLISTOP(OP_ASLICE, 0,
- list(newRANGE(0,
- newSVOP(OP_CONST, 0, newSViv(pos)),
- newUNOP(OP_AV2ARYLEN, 0,
- ref(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv)),
- OP_AV2ARYLEN)))),
- ref(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv)),
- OP_ASLICE))) :
- newUNOP(OP_RV2AV, 0, newGVOP(OP_GV, 0, PL_defgv));
- initops = op_append_list(OP_LINESEQ, initops,
- newSTATEOP(0, NULL,
- newASSIGNOP(OPf_STACKED, var, 0, slice)));
- }
- prev_type = 2;
- max_arity = -1;
- } break;
- default:
- parse_error:
- qerror(Perl_mess(aTHX_ "Parse error"));
- return NULL;
- }
- lex_read_space(0);
- c = lex_peek_unichar(0);
- switch (c) {
- case /*(*/')': break;
- case ',':
- do {
- lex_token_boundary();
- lex_read_unichar(0);
- lex_read_space(0);
- c = lex_peek_unichar(0);
- } while (c == ',');
- break;
- default:
- goto parse_error;
- }
- }
- if (min_arity != 0) {
- initops = op_append_list(OP_LINESEQ,
- newSTATEOP(0, NULL,
- newLOGOP(OP_OR, 0,
- newBINOP(OP_GE, 0,
- scalar(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv))),
- newSVOP(OP_CONST, 0, newSViv(min_arity))),
- op_convert_list(OP_DIE, 0,
- op_convert_list(OP_SPRINTF, 0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0,
- newSVpvs("Too few arguments for subroutine at %s line %d.\n")),
- newSLICEOP(0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0, newSViv(1)),
- newSVOP(OP_CONST, 0, newSViv(2))),
- newOP(OP_CALLER, 0))))))),
- initops);
- }
- if (max_arity != -1) {
- initops = op_append_list(OP_LINESEQ,
- newSTATEOP(0, NULL,
- newLOGOP(OP_OR, 0,
- newBINOP(OP_LE, 0,
- scalar(newUNOP(OP_RV2AV, 0,
- newGVOP(OP_GV, 0, PL_defgv))),
- newSVOP(OP_CONST, 0, newSViv(max_arity))),
- op_convert_list(OP_DIE, 0,
- op_convert_list(OP_SPRINTF, 0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0,
- newSVpvs("Too many arguments for subroutine at %s line %d.\n")),
- newSLICEOP(0,
- op_append_list(OP_LIST,
- newSVOP(OP_CONST, 0, newSViv(1)),
- newSVOP(OP_CONST, 0, newSViv(2))),
- newOP(OP_CALLER, 0))))))),
- initops);
- }
- return initops;
-}
-
/*
* ex: set ts=8 sts=4 sw=4 et:
*/