diff options
author | David Mitchell <davem@iabyn.com> | 2011-10-12 14:01:50 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2012-06-13 13:25:50 +0100 |
commit | d63c20f27b4a88c274844b2b635deb3c6588cccd (patch) | |
tree | 419e8d46117855aa07627636841d9a7208f0320e | |
parent | 2866decb530d50f622ad6853fed7f30562e474ce (diff) | |
download | perl-d63c20f27b4a88c274844b2b635deb3c6588cccd.tar.gz |
make qr/(?{})/ behave with closures
With this commit, qr// with a literal (compile-time) code block
will Do the Right Thing as regards closures and the scope of lexical vars;
in particular, the following now creates three regexes that match 1, 2
and 3:
for my $i (0..2) {
push @r, qr/^(??{$i})$/;
}
"1" =~ $r[1]; # matches
Previously, $i would be evaluated as undef in all 3 patterns.
This is achieved by wrapping the compilation of the pattern within a
new anonymous CV, which is then attached to the pattern. At run-time
pp_qr() clones the CV as well as copying the REGEXP; and when the code
block is executed, it does so using the pad of the cloned CV.
Which makes everything come out all right in the wash.
The CV is stored in a new field of the REGEXP, called qr_anoncv.
Note that run-time qr//s are still not fixed, e.g. qr/$foo(?{...})/;
nor is it yet fixed where the qr// is embedded within another pattern:
continuing with the code example from above,
my $i = 99;
"1" =~ $r[1]; # bare qr: matches: correct!
"X99" =~ /X$r[1]/; # embedded qr: matches: whoops, it's still
seeing the wrong $i
-rw-r--r-- | dump.c | 3 | ||||
-rw-r--r-- | embed.fnc | 2 | ||||
-rw-r--r-- | embed.h | 2 | ||||
-rw-r--r-- | ext/Devel-Peek/t/Peek.t | 3 | ||||
-rw-r--r-- | op.c | 107 | ||||
-rw-r--r-- | op.h | 5 | ||||
-rw-r--r-- | perly.act | 114 | ||||
-rw-r--r-- | perly.h | 13 | ||||
-rw-r--r-- | perly.tab | 1077 | ||||
-rw-r--r-- | perly.y | 19 | ||||
-rw-r--r-- | pp_hot.c | 8 | ||||
-rw-r--r-- | proto.h | 2 | ||||
-rw-r--r-- | regcomp.c | 8 | ||||
-rw-r--r-- | regcomp.h | 1 | ||||
-rw-r--r-- | regexec.c | 4 | ||||
-rw-r--r-- | regexp.h | 3 | ||||
-rw-r--r-- | t/lib/strict/subs | 8 | ||||
-rw-r--r-- | t/lib/strict/vars | 8 | ||||
-rw-r--r-- | t/re/pat_re_eval.t | 30 | ||||
-rw-r--r-- | t/re/re_tests | 2 | ||||
-rw-r--r-- | toke.c | 16 |
21 files changed, 805 insertions, 630 deletions
@@ -634,6 +634,7 @@ const struct flag_to_name pmflags_flags_names[] = { {PMf_RETAINT, ",RETAINT"}, {PMf_EVAL, ",EVAL"}, {PMf_NONDESTRUCT, ",NONDESTRUCT"}, + {PMf_HAS_CV, ",HAS_CV"}, }; static SV * @@ -2066,6 +2067,8 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo PTR2UV(r->pprivate)); Perl_dump_indent(aTHX_ level, file, " OFFS = 0x%"UVxf"\n", PTR2UV(r->offs)); + Perl_dump_indent(aTHX_ level, file, " QR_ANONCV = 0x%"UVxf"\n", + PTR2UV(r->qr_anoncv)); #ifdef PERL_OLD_COPY_ON_WRITE Perl_dump_indent(aTHX_ level, file, " SAVED_COPY = 0x%"UVxf"\n", PTR2UV(r->saved_copy)); @@ -1024,7 +1024,7 @@ Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV s |void |pidgone |Pid_t pid|int status #endif : Used in perly.y -p |OP* |pmruntime |NN OP *o|NN OP *expr|bool isreg +p |OP* |pmruntime |NN OP *o|NN OP *expr|bool isreg|I32 floor #if defined(PERL_IN_OP_C) s |OP* |pmtrans |NN OP* o|NN OP* expr|NN OP* repl #endif @@ -1174,7 +1174,7 @@ #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) -#define pmruntime(a,b,c) Perl_pmruntime(aTHX_ a,b,c) +#define pmruntime(a,b,c,d) Perl_pmruntime(aTHX_ a,b,c,d) #define re_op_compile(a,b,c) Perl_re_op_compile(aTHX_ a,b,c) #define refcounted_he_chain_2hv(a,b) Perl_refcounted_he_chain_2hv(aTHX_ a,b) #define refcounted_he_fetch_pv(a,b,c,d) Perl_refcounted_he_fetch_pv(aTHX_ a,b,c,d) diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t index 0a812d0270..534c6d716b 100644 --- a/ext/Devel-Peek/t/Peek.t +++ b/ext/Devel-Peek/t/Peek.t @@ -357,7 +357,8 @@ do_test('reference to regexp', PAREN_NAMES = 0x0 SUBSTRS = $ADDR PPRIVATE = $ADDR - OFFS = $ADDR' + OFFS = $ADDR + QR_ANONCV = 0x0' )); } else { do_test('reference to regexp', @@ -2673,7 +2673,7 @@ Perl_bind_match(pTHX_ I32 type, OP *left, OP *right) } else return bind_match(type, left, - pmruntime(newPMOP(OP_MATCH, 0), right, 0)); + pmruntime(newPMOP(OP_MATCH, 0), right, 0, 0)); } OP * @@ -4243,10 +4243,14 @@ Perl_newPMOP(pTHX_ I32 type, I32 flags) * split "pattern", which aren't. In the former case, expr will be a list * if the pattern contains more than one term (eg /a$b/) or if it contains * a replacement, ie s/// or tr///. + * + * When the pattern has been compiled within a new anon CV (for + * qr/(?{...})/ ), then floor indicates the savestack level just before + * the new sub was created */ OP * -Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) +Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg, I32 floor) { dVAR; PMOP *pm; @@ -4304,10 +4308,10 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) else if (expr->op_type != OP_CONST) is_compiletime = 0; - /* are we using an external (non-perl) re engine? */ + /* are we using an external (non-perl) re engine? */ - eng = current_re_engine(); - ext_eng = (eng && eng != &PL_core_reg_engine); + eng = current_re_engine(); + ext_eng = (eng && eng != &PL_core_reg_engine); /* for perl engine: * concatenate adjacent CONSTs for non-code case @@ -4323,8 +4327,8 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) while (kid) { if (kid->op_type == OP_NULL && (kid->op_flags & OPf_SPECIAL)) { /* do {...} */ - if (ext_eng || !is_compiletime/*XXX tmp*/ - || o->op_type == OP_QR/*XXX tmp*/) { + if (ext_eng || !is_compiletime/*XXX tmp*/ ) { + /* discard DO block */ assert(okid); okid->op_sibling = kid->op_sibling; kid->op_sibling = NULL; @@ -4364,6 +4368,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) && kid->op_sibling && kid->op_sibling->op_type == OP_CONST) { + /* concat adjacent CONSTs */ OP *o = kid->op_sibling; SV* sv = cSVOPx_sv(kid); SvREADONLY_off(sv); @@ -4382,14 +4387,16 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) PL_hints |= HINT_BLOCK_SCOPE; pm = (PMOP*)o; + assert(floor==0 || (pm->op_pmflags & PMf_HAS_CV)); if (is_compiletime) { - U32 pm_flags = pm->op_pmflags & RXf_PMf_COMPILETIME; + U32 pm_flags = pm->op_pmflags & (RXf_PMf_COMPILETIME|PMf_HAS_CV); if (o->op_flags & OPf_SPECIAL) pm_flags |= RXf_SPLIT; if (!has_code || ext_eng) { + /* compile-time simple constant pattern */ SV *pat; assert( expr->op_type == OP_CONST || ( expr->op_type == OP_LIST @@ -4402,6 +4409,18 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) pat = ((SVOP*)(expr->op_type == OP_LIST ? cLISTOPx(expr)->op_first->op_sibling : expr))->op_sv; + + if ((pm->op_pmflags & PMf_HAS_CV) && !has_code) { + /* whoops! we guessed that a qr// had a code block, but we + * were wrong (e.g. /[(?{}]/ ). Throw away the PL_compcv + * that isn't required now. Note that we have to be pretty + * confident that nothing used that CV's pad while the + * regex was parsed */ + assert(AvFILLp(PL_comppad) == 0); /* just @_ */ + LEAVE_SCOPE(floor); + pm->op_pmflags &= ~PMf_HAS_CV; + } + if (DO_UTF8(pat)) { assert (SvUTF8(pat)); } else if (SvUTF8(pat)) { @@ -4422,11 +4441,35 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) #endif } else { - pm->op_code_list = expr; - PM_SETRE(pm, re_op_compile(NULL, expr, pm_flags)); + /* compile-time pattern that includes literal code blocks */ + REGEXP* re = re_op_compile(NULL, expr, pm_flags); + PM_SETRE(pm, re); + if (pm->op_pmflags & PMf_HAS_CV) { + CV *cv; + /* this QR op (and the anon sub we embed it in) is never + * actually executed. It's just a placeholder where we can + * squirrel away expr in op_code_list without the peephole + * optimiser etc processing it for a second time */ + OP *qr = newPMOP(OP_QR, 0); + ((PMOP*)qr)->op_code_list = expr; + + /* handle the implicit sub{} wrapped round the qr/(?{..})/ */ + SvREFCNT_inc_simple_void(PL_compcv); + cv = newATTRSUB(floor, 0, NULL, NULL, qr); + ((struct regexp *)SvANY(re))->qr_anoncv = cv; + + /* attach the anon CV to the pad so that + * pad_fixup_inner_anons() can find it */ + (void)pad_add_anon(cv, o->op_type); + SvREFCNT_inc_simple_void(cv); + } + else { + pm->op_code_list = expr; + } } } else { + /* runtime pattern: build chain of regcomp etc ops */ bool reglist; reglist = isreg && expr->op_type == OP_LIST; @@ -4438,6 +4481,46 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) ? OP_REGCRESET : OP_REGCMAYBE),0,expr); + if (pm->op_pmflags & PMf_HAS_CV) { + /* we have a runtime qr with literal code. This means + * that the qr// has been wrapped in a new CV, which + * means that runtime consts, vars etc will have been compiled + * against a new pad. So... we need to execute those ops + * within the environment of the new CV. So wrap them in a call + * to a new anon sub. i.e. for + * + * qr/a$b(?{...})/, + * + * we build an anon sub that looks like + * + * sub { "a", $b, '(?{...})' } + * + * and call it, passing the returned list to regcomp. + * Or to put it another way, the list of ops that get executed + * are: + * + * normal PMf_HAS_CV + * ------ ------------------- + * pushmark (for regcomp) + * pushmark (for entersub) + * pushmark (for refgen) + * anoncode + * refgen + * entersub + * regcreset regcreset + * pushmark pushmark + * const("a") const("a") + * gvsv(b) gvsv(b) + * const("(?{...})") const("(?{...})") + * leavesub + * regcomp regcomp + */ + + SvREFCNT_inc_simple_void(PL_compcv); + expr = list(force_list(newUNOP(OP_ENTERSUB, 0, + scalar(newANONATTRSUB(floor, NULL, NULL, expr))))); + } + NewOp(1101, rcop, 1, LOGOP); rcop->op_type = OP_REGCOMP; rcop->op_ppaddr = PL_ppaddr[OP_REGCOMP]; @@ -4454,7 +4537,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) if (PL_hints & HINT_RE_EVAL) PL_cv_has_eval = 1; /* establish postfix order */ - if (pm->op_pmflags & PMf_KEEP || !(PL_hints & HINT_RE_EVAL)) { + if (expr->op_type == OP_REGCRESET || expr->op_type == OP_REGCMAYBE) { LINKLIST(expr); rcop->op_next = expr; ((UNOP*)expr)->op_first->op_next = (OP*)rcop; @@ -9101,7 +9184,7 @@ Perl_ck_split(pTHX_ OP *o) if (kid->op_type != OP_MATCH || kid->op_flags & OPf_STACKED) { OP * const sibl = kid->op_sibling; kid->op_sibling = 0; - kid = pmruntime( newPMOP(OP_MATCH, OPf_SPECIAL), kid, 0); + kid = pmruntime( newPMOP(OP_MATCH, OPf_SPECIAL), kid, 0, 0); if (cLISTOPo->op_first == cLISTOPo->op_last) cLISTOPo->op_last = kid; cLISTOPo->op_first = kid; @@ -434,7 +434,10 @@ struct pmop { /* Return substituted string instead of modifying it. */ #define PMf_NONDESTRUCT (1<<(PMf_BASE_SHIFT+9)) -#if PMf_BASE_SHIFT+9 > 31 +/* the pattern has a CV attached (currently only under qr/...(?{}).../) */ +#define PMf_HAS_CV (1<<(PMf_BASE_SHIFT+10)) + +#if PMf_BASE_SHIFT+10 > 31 # error Too many PMf_ bits used. See above and regnodes.h for any spare in middle #endif @@ -1552,14 +1552,28 @@ case 2: case 193: #line 1261 "perly.y" - { (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1); - TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); - TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')'); + { + if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS + && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR + && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV)) + { + (yyval.ival) = start_subparse(FALSE, CVf_ANON); + SAVEFREESV(PL_compcv); + } else + (yyval.ival) = 0; + ;} + break; + + case 194: +#line 1272 "perly.y" + { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); + TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'('); + TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')'); ;} break; - case 196: -#line 1268 "perly.y" + case 197: +#line 1279 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -1567,8 +1581,8 @@ case 2: ;} break; - case 198: -#line 1278 "perly.y" + case 199: +#line 1289 "perly.y" { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); DO_MAD( token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d'); @@ -1578,128 +1592,128 @@ case 2: ;} break; - case 199: -#line 1286 "perly.y" + case 200: +#line 1297 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d'); ;} break; - case 200: -#line 1293 "perly.y" + case 201: +#line 1304 "perly.y" { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); ;} break; - case 201: -#line 1298 "perly.y" + case 202: +#line 1309 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); ;} break; - case 202: -#line 1303 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} - break; - case 203: -#line 1305 "perly.y" +#line 1314 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 204: -#line 1307 "perly.y" +#line 1316 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 205: -#line 1312 "perly.y" - { (yyval.opval) = (OP*)NULL; ;} +#line 1318 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 206: -#line 1314 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} +#line 1323 "perly.y" + { (yyval.opval) = (OP*)NULL; ;} break; case 207: -#line 1318 "perly.y" - { (yyval.opval) = (OP*)NULL; ;} +#line 1325 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 208: -#line 1320 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} +#line 1329 "perly.y" + { (yyval.opval) = (OP*)NULL; ;} break; case 209: -#line 1326 "perly.y" - { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} +#line 1331 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 210: -#line 1330 "perly.y" +#line 1337 "perly.y" + { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} + break; + + case 211: +#line 1341 "perly.y" { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&'); ;} break; - case 211: -#line 1336 "perly.y" + case 212: +#line 1347 "perly.y" { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$'); ;} break; - case 212: -#line 1342 "perly.y" + case 213: +#line 1353 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 213: -#line 1348 "perly.y" + case 214: +#line 1359 "perly.y" { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%'); ;} break; - case 214: -#line 1354 "perly.y" + case 215: +#line 1365 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l'); ;} break; - case 215: -#line 1360 "perly.y" + case 216: +#line 1371 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*'); ;} break; - case 216: -#line 1367 "perly.y" + case 217: +#line 1378 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 217: -#line 1369 "perly.y" + case 218: +#line 1380 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 218: -#line 1371 "perly.y" + case 219: +#line 1382 "perly.y" { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;} break; - case 219: -#line 1374 "perly.y" + case 220: +#line 1385 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; @@ -1707,6 +1721,6 @@ case 2: /* Generated from: - * ff01d43de6f749eba3bfeffd39928772fe7e1bebe039506b8465c05941209aa8 perly.y + * 27cce68ad4844f1b8053bfc11206fb9f559e08be6cefd4a986aaa606c0e5fb38 perly.y * 53f57d7143a42b3c008841a14d158bcf9cab64b2904b07ef5e95051fe9a8a875 regen_perly.pl * ex: set ro: */ @@ -5,13 +5,12 @@ */ #ifdef PERL_CORE - -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -216,7 +215,7 @@ typedef union YYSTYPE { -/* Line 1676 of yacc.c */ +/* Line 1685 of yacc.c */ I32 ival; /* __DEFAULT__ (marker for regen_perly.pl; must always be 1st union member) */ @@ -236,7 +235,7 @@ typedef union YYSTYPE -/* Line 1676 of yacc.c */ +/* Line 1685 of yacc.c */ } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -248,6 +247,6 @@ typedef union YYSTYPE /* Generated from: - * ff01d43de6f749eba3bfeffd39928772fe7e1bebe039506b8465c05941209aa8 perly.y + * 27cce68ad4844f1b8053bfc11206fb9f559e08be6cefd4a986aaa606c0e5fb38 perly.y * 53f57d7143a42b3c008841a14d158bcf9cab64b2904b07ef5e95051fe9a8a875 regen_perly.pl * ex: set ro: */ @@ -6,16 +6,16 @@ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2772 +#define YYLAST 2768 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 101 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 61 +#define YYNNTS 62 /* YYNRULES -- Number of rules. */ -#define YYNRULES 219 +#define YYNRULES 220 /* YYNRULES -- Number of states. */ -#define YYNSTATES 445 +#define YYNSTATES 446 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -87,16 +87,17 @@ static const yytype_uint16 yyprhs[] = 595, 599, 601, 604, 606, 608, 610, 612, 614, 616, 621, 627, 629, 631, 635, 640, 644, 646, 649, 652, 654, 657, 660, 662, 665, 667, 670, 672, 676, 678, - 682, 684, 688, 693, 698, 700, 702, 704, 706, 710, - 713, 717, 720, 722, 724, 726, 727, 729, 730, 732, - 734, 737, 740, 743, 746, 749, 752, 754, 756, 758 + 682, 684, 688, 693, 694, 700, 702, 704, 706, 708, + 712, 715, 719, 722, 724, 726, 728, 729, 731, 732, + 734, 736, 739, 742, 745, 748, 751, 754, 756, 758, + 760 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 102, 0, -1, -1, 3, 103, 110, 114, -1, -1, - 4, 104, 153, -1, -1, 5, 105, 109, -1, -1, + 4, 104, 154, -1, -1, 5, 105, 109, -1, -1, 6, 106, 117, -1, -1, 7, 107, 115, -1, -1, 8, 108, 114, -1, 9, 110, 114, 10, -1, -1, -1, 9, 113, 114, 10, -1, -1, -1, 114, 115, @@ -104,15 +105,15 @@ static const yytype_int16 yyrhs[] = -1, 33, -1, 100, -1, 35, 133, 130, 109, -1, 36, 131, 134, 135, 136, 138, -1, 69, 131, 134, 135, 136, 138, -1, 38, 21, 21, 20, -1, -1, - 39, 131, 118, 21, 21, 152, 20, -1, 42, 99, + 39, 131, 118, 21, 21, 153, 20, -1, 42, 99, 110, 127, 98, 112, 121, -1, 43, 99, 110, 129, 98, 112, 121, -1, 48, 99, 110, 111, 127, 98, 112, -1, 49, 99, 110, 127, 98, 112, -1, 50, 109, -1, 40, 99, 110, 125, 98, 123, 112, 122, -1, 41, 99, 110, 126, 98, 123, 112, 122, -1, 47, 99, 110, 128, 20, 125, 20, 123, 128, 98, - 112, -1, 47, 68, 110, 154, 99, 127, 98, 112, - 122, -1, 47, 156, 99, 110, 127, 98, 112, 122, + 112, -1, 47, 68, 110, 155, 99, 127, 98, 112, + 122, -1, 47, 157, 99, 110, 127, 98, 112, 122, -1, 47, 99, 110, 127, 98, 112, 122, -1, 109, 122, -1, -1, 38, 21, 21, 9, 110, 119, 114, 10, -1, 120, 20, -1, 20, -1, 1, -1, 139, @@ -126,14 +127,14 @@ static const yytype_int16 yyrhs[] = 71, -1, 71, 24, -1, 71, -1, 109, -1, 20, -1, 139, 75, 139, -1, 139, 74, 139, -1, 139, 73, 139, -1, 140, -1, 140, 77, -1, 140, 77, - 149, -1, 149, -1, 58, 161, 140, -1, 56, 99, - 161, 139, 98, -1, 149, 97, 143, 99, 153, 98, - -1, 149, 97, 143, -1, 22, 161, 152, -1, 23, - 161, 99, 153, 98, -1, 58, 152, -1, 56, 99, - 153, 98, -1, -1, 31, 132, 109, 142, 152, -1, - 22, -1, 156, -1, 160, 9, 139, 20, 10, -1, - 156, 11, 139, 12, -1, 149, 97, 11, 139, 12, - -1, 144, 11, 139, 12, -1, 156, 9, 139, 20, + 149, -1, 149, -1, 58, 162, 140, -1, 56, 99, + 162, 139, 98, -1, 149, 97, 143, 99, 154, 98, + -1, 149, 97, 143, -1, 22, 162, 153, -1, 23, + 162, 99, 154, 98, -1, 58, 153, -1, 56, 99, + 154, 98, -1, -1, 31, 132, 109, 142, 153, -1, + 22, -1, 157, -1, 161, 9, 139, 20, 10, -1, + 157, 11, 139, 12, -1, 149, 97, 11, 139, 12, + -1, 144, 11, 139, 12, -1, 157, 9, 139, 20, 10, -1, 149, 97, 9, 139, 20, 10, -1, 144, 9, 139, 20, 10, -1, 149, 97, 99, 98, -1, 149, 97, 99, 139, 98, -1, 144, 99, 139, 98, @@ -151,26 +152,27 @@ static const yytype_int16 yyrhs[] = 65, 139, 20, 10, -1, 65, 20, 10, -1, 37, 132, 135, 136, 109, -1, 64, 149, -1, 64, 109, -1, 64, 21, 99, 98, -1, 64, 21, 99, 139, - 98, -1, 64, 156, 99, 98, -1, 64, 156, 99, + 98, -1, 64, 157, 99, 98, -1, 64, 157, 99, 139, 98, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, 79, 149, 80, 149, -1, 90, 149, -1, - 150, -1, 67, 149, -1, 99, 139, 98, -1, 27, - -1, 99, 98, -1, 156, -1, 160, -1, 158, -1, - 157, -1, 159, -1, 144, -1, 157, 11, 139, 12, - -1, 157, 9, 139, 20, 10, -1, 24, -1, 155, - -1, 155, 99, 98, -1, 155, 99, 139, 98, -1, - 66, 21, 152, -1, 51, -1, 51, 149, -1, 76, + 151, -1, 67, 149, -1, 99, 139, 98, -1, 27, + -1, 99, 98, -1, 157, -1, 161, -1, 159, -1, + 158, -1, 160, -1, 144, -1, 158, 11, 139, 12, + -1, 158, 9, 139, 20, 10, -1, 24, -1, 156, + -1, 156, 99, 98, -1, 156, 99, 139, 98, -1, + 66, 21, 153, -1, 51, -1, 51, 149, -1, 76, 140, -1, 57, -1, 57, 109, -1, 57, 149, -1, 70, -1, 70, 149, -1, 30, -1, 30, 149, -1, 54, -1, 54, 99, 98, -1, 28, -1, 28, 99, 98, -1, 29, -1, 55, 99, 98, -1, 55, 99, - 139, 98, -1, 25, 99, 140, 98, -1, 21, -1, - 141, -1, 53, -1, 32, -1, 68, 151, 137, -1, - 68, 151, -1, 99, 139, 98, -1, 99, 98, -1, - 156, -1, 158, -1, 157, -1, -1, 140, -1, -1, - 139, -1, 156, -1, 19, 161, -1, 15, 161, -1, - 16, 161, -1, 17, 161, -1, 63, 161, -1, 18, - 161, -1, 21, -1, 156, -1, 109, -1, 26, -1 + 139, 98, -1, -1, 25, 150, 99, 140, 98, -1, + 21, -1, 141, -1, 53, -1, 32, -1, 68, 152, + 137, -1, 68, 152, -1, 99, 139, 98, -1, 99, + 98, -1, 157, -1, 159, -1, 158, -1, -1, 140, + -1, -1, 139, -1, 157, -1, 19, 162, -1, 15, + 162, -1, 16, 162, -1, 17, 162, -1, 63, 162, + -1, 18, 162, -1, 21, -1, 157, -1, 109, -1, + 26, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -195,9 +197,10 @@ static const yytype_uint16 yyrline[] = 1116, 1121, 1123, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1149, 1160, 1162, 1164, 1169, 1182, 1187, 1192, 1196, 1200, 1204, 1208, 1212, 1216, 1220, 1222, 1225, 1229, 1235, 1237, - 1242, 1245, 1254, 1260, 1265, 1266, 1267, 1273, 1277, 1285, - 1292, 1297, 1302, 1304, 1306, 1311, 1313, 1318, 1319, 1325, - 1329, 1335, 1341, 1347, 1353, 1359, 1366, 1368, 1370, 1373 + 1242, 1245, 1254, 1261, 1260, 1276, 1277, 1278, 1284, 1288, + 1296, 1303, 1308, 1313, 1315, 1317, 1322, 1324, 1329, 1330, + 1336, 1340, 1346, 1352, 1358, 1364, 1370, 1377, 1379, 1381, + 1384 }; #endif @@ -227,8 +230,8 @@ static const char *const yytname[] = "startanonsub", "startformsub", "subname", "proto", "subattrlist", "myattrlist", "subbody", "expr", "listexpr", "listop", "@9", "method", "subscripted", "termbinop", "termunop", "anonymous", "termdo", "term", - "myattrterm", "myterm", "optlistexpr", "optexpr", "my_scalar", "amper", - "scalar", "ary", "hsh", "arylen", "star", "indirob", 0 + "@10", "myattrterm", "myterm", "optlistexpr", "optexpr", "my_scalar", + "amper", "scalar", "ary", "hsh", "arylen", "star", "indirob", 0 }; #endif @@ -273,9 +276,10 @@ static const yytype_uint8 yyr1[] = 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, - 151, 151, 151, 151, 151, 152, 152, 153, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 161, 161, 161 + 149, 149, 149, 150, 149, 149, 149, 149, 149, 151, + 151, 152, 152, 152, 152, 152, 153, 153, 154, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 162, 162, + 162 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -300,9 +304,10 @@ static const yytype_uint8 yyr2[] = 3, 1, 2, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 3, 4, 3, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 3, 1, 3, - 1, 3, 4, 4, 1, 1, 1, 1, 3, 2, - 3, 2, 1, 1, 1, 0, 1, 0, 1, 1, - 2, 2, 2, 2, 2, 2, 1, 1, 1, 1 + 1, 3, 4, 0, 5, 1, 1, 1, 1, 3, + 2, 3, 2, 1, 1, 1, 0, 1, 0, 1, + 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -310,198 +315,216 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 2, 4, 6, 8, 10, 12, 0, 15, 207, + 0, 2, 4, 6, 8, 10, 12, 0, 15, 208, 0, 0, 0, 19, 1, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 194, 0, 0, 171, 0, 161, - 188, 190, 184, 74, 197, 74, 176, 196, 186, 0, - 0, 179, 205, 0, 0, 0, 0, 0, 0, 182, - 0, 0, 0, 0, 0, 0, 0, 208, 89, 195, + 0, 0, 0, 0, 195, 0, 0, 171, 193, 161, + 188, 190, 184, 74, 198, 74, 176, 197, 186, 0, + 0, 179, 206, 0, 0, 0, 0, 0, 0, 182, + 0, 0, 0, 0, 0, 0, 0, 209, 89, 196, 168, 152, 153, 154, 155, 92, 158, 5, 172, 163, 166, 165, 167, 164, 15, 7, 49, 48, 25, 75, 73, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 73, 26, 60, 9, 0, 50, 0, 11, 22, - 21, 0, 0, 142, 0, 133, 134, 216, 219, 218, - 217, 211, 212, 213, 215, 210, 205, 0, 0, 0, - 0, 185, 0, 77, 177, 0, 0, 207, 180, 181, - 216, 206, 99, 217, 0, 214, 194, 147, 146, 163, - 0, 0, 205, 159, 0, 199, 202, 204, 203, 183, + 21, 0, 0, 142, 0, 133, 134, 217, 220, 219, + 218, 212, 213, 214, 216, 211, 206, 0, 0, 0, + 0, 185, 0, 77, 177, 0, 0, 208, 180, 181, + 217, 207, 99, 218, 0, 215, 195, 147, 146, 163, + 0, 0, 206, 159, 0, 200, 203, 205, 204, 183, 178, 135, 136, 157, 140, 139, 162, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 137, 0, 0, 0, 0, 0, 0, 0, 19, 72, 0, 0, 31, 15, 15, 15, 15, 15, 15, 0, 15, 15, 37, 0, 0, 44, 47, 0, 0, - 0, 0, 0, 0, 24, 23, 20, 141, 97, 207, + 0, 0, 0, 0, 24, 23, 20, 141, 97, 208, 0, 0, 189, 101, 78, 79, 187, 191, 0, 0, - 0, 93, 0, 0, 144, 0, 175, 201, 0, 83, - 198, 0, 160, 88, 87, 86, 91, 0, 0, 115, + 0, 93, 0, 0, 144, 0, 175, 202, 0, 83, + 199, 0, 160, 88, 87, 86, 91, 0, 0, 115, 0, 128, 124, 125, 121, 122, 119, 0, 131, 130, 129, 127, 126, 123, 132, 120, 0, 0, 103, 0, 96, 104, 173, 0, 0, 0, 0, 0, 0, 0, 71, 0, 76, 77, 0, 0, 65, 0, 0, 0, 0, 0, 15, 16, 0, 77, 61, 53, 54, 67, - 51, 52, 55, 56, 0, 193, 117, 205, 81, 0, - 192, 100, 0, 148, 0, 150, 0, 143, 200, 82, + 51, 52, 55, 56, 0, 0, 117, 206, 81, 0, + 192, 100, 0, 148, 0, 150, 0, 143, 201, 82, 0, 0, 0, 108, 114, 0, 0, 0, 112, 0, - 207, 174, 0, 106, 0, 169, 0, 14, 27, 79, + 208, 174, 0, 106, 0, 169, 0, 14, 27, 79, 15, 30, 0, 0, 66, 0, 0, 68, 70, 0, - 0, 209, 64, 69, 0, 0, 50, 0, 0, 0, - 79, 98, 102, 80, 145, 94, 149, 151, 118, 0, - 111, 156, 0, 107, 113, 0, 109, 170, 105, 0, - 45, 205, 62, 62, 0, 0, 0, 0, 65, 0, - 0, 0, 0, 116, 110, 95, 85, 84, 28, 19, - 0, 0, 0, 18, 57, 57, 0, 60, 0, 0, - 0, 36, 29, 0, 32, 60, 60, 19, 0, 0, - 33, 34, 0, 43, 62, 60, 35, 46, 38, 39, - 0, 58, 0, 60, 0, 42, 17, 0, 41, 0, - 0, 0, 57, 40, 59 + 0, 210, 64, 69, 0, 0, 50, 0, 0, 0, + 79, 98, 194, 102, 80, 145, 94, 149, 151, 118, + 0, 111, 156, 0, 107, 113, 0, 109, 170, 105, + 0, 45, 206, 62, 62, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 116, 110, 95, 85, 84, 28, + 19, 0, 0, 0, 18, 57, 57, 0, 60, 0, + 0, 0, 36, 29, 0, 32, 60, 60, 19, 0, + 0, 33, 34, 0, 43, 62, 60, 35, 46, 38, + 39, 0, 58, 0, 60, 0, 42, 17, 0, 41, + 0, 0, 0, 57, 40, 59 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 7, 8, 9, 10, 11, 12, 13, 109, 15, - 358, 404, 417, 101, 216, 99, 100, 285, 399, 95, - 420, 206, 401, 353, 343, 298, 346, 355, 349, 281, - 191, 122, 190, 283, 225, 309, 240, 398, 96, 58, - 59, 307, 270, 60, 61, 62, 63, 64, 65, 66, - 145, 132, 67, 350, 68, 69, 70, 71, 72, 73, - 111 + 358, 405, 418, 101, 216, 99, 100, 285, 400, 95, + 421, 206, 402, 353, 343, 298, 346, 355, 349, 281, + 191, 122, 190, 283, 225, 309, 240, 399, 96, 58, + 59, 307, 270, 60, 61, 62, 63, 64, 65, 118, + 66, 145, 132, 67, 350, 68, 69, 70, 71, 72, + 73, 111 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -353 +#define YYPACT_NINF -402 static const yytype_int16 yypact[] = { - 591, -353, -353, -353, -353, -353, -353, 25, -353, 2536, - 45, 977, 885, -353, -353, -353, 1650, 2536, 2536, 65, - 65, 65, 65, 65, -353, 65, 65, -353, -54, 105, - 3, -353, 2536, -353, -353, -353, 2536, -353, 9, 24, - 31, 1472, 1383, 65, 1561, 1737, 115, 2536, 23, 2536, - 2536, 2536, 2536, 2536, 2536, 2536, 1824, 91, 71, -353, - 6, -353, -353, -353, -353, 2597, -353, -353, 53, 62, - 89, -353, -353, 147, -353, -353, -353, -353, -353, -353, - -353, 159, -353, 93, 106, 110, 114, 8, 123, 126, - 45, -353, -353, 142, -353, 170, 355, 885, -353, -353, - -353, 425, 517, -353, -10, 162, 162, -353, -353, -353, - -353, -353, -353, -353, -353, -353, 2536, 130, 2536, 2536, - 133, 1188, 45, 210, 2597, 139, 1913, 1383, -353, 1188, - 1293, 71, -353, 1217, 2536, -353, 140, -353, 1188, 13, - 230, 14, 2536, 1188, 2002, 173, -353, -353, -353, 1188, - 71, 162, 162, 162, 101, 101, 253, 46, 2536, 2536, - 2536, 2536, 2536, 2536, 2091, 2536, 2536, 2536, 2536, 2536, - 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, - -353, -353, 26, 2180, 2536, 2536, 2536, 2536, 2536, -353, - 232, 244, 246, -353, -353, -353, -353, -353, -353, -353, - 169, -353, -353, -353, 244, 45, -353, -353, 2536, 2536, - 2536, 2536, 2536, 2536, -353, -353, -353, -353, -353, 2536, - -17, -6, -353, -353, -353, 198, -353, -353, 219, 174, - 2536, 71, 2269, 2358, -353, 261, -353, -353, 301, 252, - -353, 2536, 285, 225, 225, -353, 2597, 141, 40, -353, - 309, 2675, 1457, 1264, 413, 259, 2597, 2558, 1055, 1055, - 327, 242, 1368, 1013, 162, 162, 2536, 2536, -353, 2447, - 208, -353, -353, 411, 177, 54, 188, 58, 200, 609, - -353, 45, -353, 210, 117, 288, 2536, 2536, 2536, 2536, - 295, 1067, -353, -353, 2536, 210, -353, 91, -353, 91, - 91, 91, 91, 91, 217, -353, -353, 2536, 294, 45, - -353, -353, 424, -353, 429, -353, 503, -353, -353, -353, - 85, 2536, 313, -353, -353, 2536, 213, 94, -353, 516, - 2536, -353, 314, -353, 315, -353, 320, -353, -353, 198, - -353, -353, 298, 233, 91, 234, 235, 91, -353, 239, - 243, -353, -353, -353, 240, 321, 144, 2536, 2536, 245, - 198, -353, -353, -353, -353, -353, -353, -353, -353, 97, - -353, 2636, 337, -353, -353, 256, -353, -353, -353, 153, - -353, 2536, -353, -353, 341, 341, 2536, 341, 2536, 260, - 280, 341, 153, -353, -353, -353, -353, -353, -353, -353, - 360, 341, 341, -353, 183, 183, 287, 142, 370, 341, - 341, -353, -353, 701, -353, 142, 142, -353, 341, 258, - -353, -353, 341, -353, -353, 142, -353, -353, -353, -353, - 793, -353, 2536, 142, 1157, -353, -353, 293, -353, 302, - 341, 341, 183, -353, -353 + 587, -402, -402, -402, -402, -402, -402, 11, -402, 2532, + 8, 973, 881, -402, -402, -402, 1646, 2532, 2532, 172, + 172, 172, 172, 172, -402, 172, 172, -402, -402, 23, + -62, -402, 2532, -402, -402, -402, 2532, -402, -33, -26, + -18, 1468, 1379, 172, 1557, 1733, 67, 2532, 48, 2532, + 2532, 2532, 2532, 2532, 2532, 2532, 1820, 52, 32, -402, + 12, -402, -402, -402, -402, 2593, -402, -402, 17, 123, + 185, -402, -402, 122, -402, -402, -402, -402, -402, -402, + -402, 98, -402, 37, 38, 45, 49, 7, 62, 65, + 8, -402, -402, 119, -402, 152, 1555, 881, -402, -402, + -402, 421, 513, -402, -6, 162, 162, -402, -402, -402, + -402, -402, -402, -402, -402, -402, 2532, 74, 90, 2532, + 88, 1184, 8, 181, 2593, 111, 1909, 1379, -402, 1184, + 1289, 32, -402, 1213, 2532, -402, 126, -402, 1184, 24, + 217, 110, 2532, 1184, 1998, 157, -402, -402, -402, 1184, + 32, 162, 162, 162, 63, 63, 218, 191, 2532, 2532, + 2532, 2532, 2532, 2532, 2087, 2532, 2532, 2532, 2532, 2532, + 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, + -402, -402, 29, 2176, 2532, 2532, 2532, 2532, 2532, -402, + 210, 216, 219, -402, -402, -402, -402, -402, -402, -402, + 135, -402, -402, -402, 216, 8, -402, -402, 2532, 2532, + 2532, 2532, 2532, 2532, -402, -402, -402, -402, -402, 2532, + 2532, -3, -402, -402, -402, 168, -402, -402, 283, 144, + 2532, 32, 2265, 2354, -402, 234, -402, -402, 316, 229, + -402, 2532, 257, 196, 196, -402, 2593, 143, 40, -402, + 330, 2671, 1453, 1260, 409, -8, 2593, 2554, 315, 315, + 1050, 247, 1364, 326, 162, 162, 2532, 2532, -402, 2443, + 170, -402, -402, 407, 177, 47, 188, 93, 199, 605, + -402, 8, -402, 181, 81, 254, 2532, 2532, 2532, 2532, + 261, 1063, -402, -402, 2532, 181, -402, 52, -402, 52, + 52, 52, 52, 52, 192, -57, -402, 2532, 267, 8, + -402, -402, 420, -402, 425, -402, 499, -402, -402, -402, + 96, 2532, 287, -402, -402, 2532, 213, 117, -402, 512, + 2532, -402, 292, -402, 293, -402, 295, -402, -402, 168, + -402, -402, 296, 215, 52, 222, 226, 52, -402, 231, + 238, -402, -402, -402, 232, 318, 252, 2532, 2532, 245, + 168, -402, -402, -402, -402, -402, -402, -402, -402, -402, + 140, -402, 2632, 306, -402, -402, 248, -402, -402, -402, + 87, -402, 2532, -402, -402, 336, 336, 2532, 336, 2532, + 249, 253, 336, 87, -402, -402, -402, -402, -402, -402, + -402, 332, 336, 336, -402, 53, 53, 281, 119, 363, + 336, 336, -402, -402, 697, -402, 119, 119, -402, 336, + 285, -402, -402, 336, -402, -402, 119, -402, -402, -402, + -402, 789, -402, 2532, 119, 1153, -402, -402, 288, -402, + 294, 336, 336, 53, -402, -402 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -353, -353, -353, -353, -353, -353, -353, -353, 2, -56, - -353, -96, -353, -7, 381, 304, -1, -353, -353, -287, - -352, -117, -339, -353, 15, -106, -275, -29, -353, -353, - -71, 371, -353, 204, -211, -318, -353, 17, -9, -41, - -353, -353, -353, -353, -353, -353, -353, -353, 194, -353, - -353, -111, -124, -353, -353, 7, 368, 369, -353, -353, - 36 + -402, -402, -402, -402, -402, -402, -402, -402, 2, -56, + -402, -88, -402, -7, 373, 297, -10, -402, -402, -276, + -401, -98, -345, -402, 21, -67, -275, -39, -402, -402, + 9, 362, -402, 202, -221, -315, -402, 22, -9, -40, + -402, -402, -402, -402, -402, -402, -402, -402, 194, -402, + -402, -402, -112, -124, -402, -402, 6, 369, 377, -402, + -402, 35 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -195 +#define YYTABLE_NINF -196 static const yytype_int16 yytable[] = { - 57, 131, 217, 229, 352, 218, 306, 104, 102, 150, - 94, 193, 75, 93, 93, 162, 354, 163, 189, 359, - 204, 379, 184, 19, 185, 14, 110, 110, 110, 110, - 110, 236, 110, 110, 235, 266, 141, 267, 19, 20, - 21, 19, 392, 128, 402, 118, 137, 157, 268, 133, - 110, 139, 323, 421, 74, 146, 112, 113, 114, 115, - 161, 116, 117, 158, 159, 160, 333, 158, 159, 160, - 335, 184, 339, 185, 74, 131, 198, 220, 134, 135, - 19, 305, 389, 390, 360, 434, 107, 158, 159, 160, - 444, 108, 203, 231, 200, 304, 215, 368, 186, 93, - 187, 131, 120, 93, 93, 164, 373, 199, 125, 393, - 221, 406, 233, 158, 159, 160, 119, 228, 57, 158, - 159, 160, 144, 126, 223, 269, 340, 158, 159, 160, - 127, 158, 159, 160, 133, 238, 142, 341, 286, 287, - 288, 289, 290, 291, 242, 293, 294, 352, 161, 243, - 244, 245, 183, 247, 248, 250, 188, 437, 158, 159, - 160, 322, 74, 230, 158, 159, 160, 158, 159, 160, - 158, 159, 160, 396, 273, 274, 275, 276, 277, 278, - 192, 345, 279, 348, 208, 209, 210, 211, 205, 271, - 207, 212, 194, 213, -195, -195, 362, 332, 182, 297, - 299, 300, 301, 302, 303, 195, 375, 296, 334, 196, - 57, 105, 106, 197, 158, 159, 160, 158, 159, 160, - 336, 312, 201, 314, 316, 202, 121, 418, 419, 219, - 124, 222, 320, 372, 224, 129, 357, 226, 138, 232, - 234, 143, -68, 149, 239, 151, 152, 153, 154, 155, - 158, 159, 160, 280, 179, 180, 181, 326, 327, 182, - 329, 158, 159, 160, 241, 282, 131, 284, 292, 308, - 400, 317, 311, 158, 159, 160, 319, 344, 299, 347, - 299, 93, 356, 338, 380, 347, 158, 159, 160, 405, - 423, 407, 158, 159, 160, 411, 321, 351, 428, 429, - 160, 166, 167, 168, 169, 415, 416, 330, 435, 342, - 19, 364, 369, 425, 426, 361, 438, 310, 363, 381, - 168, 57, 431, 370, 376, 377, 433, 176, 177, 178, - 378, 382, 383, 384, 179, 180, 181, 385, 387, 182, - 131, 388, 386, 391, 442, 443, 178, 394, 347, 347, - 403, 179, 180, 181, 395, 246, 182, 432, 409, 251, + 57, 94, 131, 229, 218, 422, 217, 104, 102, 306, + 150, 14, 75, 93, 93, 352, 354, 74, 189, 359, + 161, 162, 19, 163, 380, 110, 110, 110, 110, 110, + 236, 110, 110, 184, 119, 185, 141, 120, 266, 403, + 267, 362, 445, 128, 19, 393, 137, 157, 133, 110, + 139, 268, 323, 168, 146, 112, 113, 114, 115, 333, + 116, 117, 339, 19, 20, 21, 125, 158, 159, 160, + 158, 159, 160, 126, 360, 198, 131, 134, 135, 178, + 435, 127, 390, 391, 179, 180, 181, 215, 142, 182, + 340, 193, 203, 200, 231, 304, 74, 419, 420, 93, + 204, 341, 131, 93, 93, 335, 199, 397, 369, 161, + 221, 164, 407, 158, 159, 160, 183, 228, 57, 192, + 158, 159, 160, 233, 223, 158, 159, 160, 269, 374, + 235, 188, 184, 133, 185, 238, 194, 195, 286, 287, + 288, 289, 290, 291, 196, 293, 294, 144, 197, 243, + 244, 245, 394, 247, 248, 250, -196, -196, 438, 352, + 182, 201, 230, 322, 202, 205, 158, 159, 160, 158, + 159, 160, 207, 219, 273, 274, 275, 276, 277, 278, + 305, 74, 279, 158, 159, 160, 222, 19, 271, 220, + 158, 159, 160, 107, 186, 363, 187, 332, 108, 297, + 299, 300, 301, 302, 303, 224, 376, 296, 334, 226, + 57, 105, 106, 158, 159, 160, 158, 159, 160, 336, + 345, 312, 348, 314, 316, 232, 121, 234, 239, 241, + 124, 280, 320, 373, 292, 129, 357, 282, 138, 308, + 284, 143, 311, 149, 317, 151, 152, 153, 154, 155, + 158, 159, 160, 319, 179, 180, 181, 326, 327, 182, + 329, 158, 159, 160, 158, 159, 160, 131, 321, 330, + 401, 160, 158, 159, 160, 342, 19, 344, 299, 347, + 299, 93, 356, 338, 381, 347, 158, 159, 160, 242, + 361, 364, 208, 209, 210, 211, 351, 371, 406, 212, + 408, 213, 377, 378, 412, 379, 166, 167, 168, 169, + 424, 365, 370, 383, 416, 417, 395, 382, 429, 430, + 384, 57, 426, 427, 385, 158, 159, 160, 436, 386, + 388, 432, 176, 177, 178, 434, 439, 387, 389, 179, + 180, 181, 131, 392, 182, 404, 396, 410, 347, 347, + -68, 411, 415, 443, 444, 246, 158, 159, 160, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 158, 159, 160, 347, 410, 344, - 414, 397, 158, 159, 160, 422, 166, 167, 168, 169, - 424, 440, 413, 98, 397, 208, 209, 210, 211, 318, - 441, 214, 212, 408, 213, 439, 123, 324, 295, 412, - 430, 175, 176, 177, 178, 93, 147, 148, 0, 179, - 180, 181, 0, 347, 182, -13, 76, 0, 158, 159, - 160, 0, 93, 0, 74, 0, 16, 0, 17, 18, + 262, 263, 264, 265, 166, 167, 168, 169, 347, 423, + 344, 310, 398, 425, 433, 98, 441, 168, 169, 158, + 159, 160, 442, 414, 214, 398, 440, 123, 174, 175, + 176, 177, 178, 158, 159, 160, 295, 179, 180, 181, + 409, 431, 182, 178, 318, 413, 93, 147, 179, 180, + 181, -13, 76, 182, 347, 148, 0, 0, 324, 0, + 74, 0, 16, 93, 17, 18, 19, 20, 21, 22, + 23, 77, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 78, 97, 79, 80, 35, 81, + 82, 83, 84, 85, 86, 0, 0, 0, 87, 88, + 89, 90, 36, 0, 37, 38, 39, 40, 41, 42, + 158, 159, 160, 0, 43, 44, 45, 46, 47, 48, + 91, 49, 0, 158, 159, 160, 178, 50, 158, 159, + 160, 179, 180, 181, 0, 331, 182, 0, 0, 51, + 52, 53, 0, -3, 76, 0, 54, 55, 366, 372, + 56, 92, 74, 367, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, + 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, + 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, + 41, 42, 158, 159, 160, 0, 43, 44, 45, 46, + 47, 48, 91, 49, 0, 158, 159, 160, 0, 50, + 1, 2, 3, 4, 5, 6, 0, 368, 0, 0, + 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, + 375, 0, 56, 92, 74, 337, 16, 0, 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, 37, 38, - 39, 40, 41, 42, 158, 159, 160, 0, 43, 44, - 45, 46, 47, 48, 91, 49, 0, 158, 159, 160, - 178, 50, 158, 159, 160, 179, 180, 181, 0, 331, - 182, 0, 0, 51, 52, 53, 0, -3, 76, 371, - 54, 55, 365, 0, 56, 92, 74, 366, 16, 0, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 91, 49, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 76, 0, + 54, 55, 0, 0, 56, 92, 74, 428, 16, 0, 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, - 37, 38, 39, 40, 41, 42, 158, 159, 160, 0, - 43, 44, 45, 46, 47, 48, 91, 49, 0, 158, - 159, 160, 0, 50, 1, 2, 3, 4, 5, 6, - 0, 367, 0, 0, 0, 51, 52, 53, 0, 0, - 76, 0, 54, 55, 374, 0, 56, 92, 74, 337, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 91, 49, 0, 0, + 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, + 76, 0, 54, 55, 0, 0, 56, 92, 74, 437, 16, 0, 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, 35, 81, 82, 83, @@ -511,7 +534,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, 0, 0, 56, 92, - 74, 427, 16, 0, 17, 18, 19, 20, 21, 22, + 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, 88, @@ -520,120 +543,84 @@ static const yytype_int16 yytable[] = 91, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, 0, 0, - 56, 92, 74, 436, 16, 0, 17, 18, 19, 20, + 56, 92, 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 78, 97, 79, 80, + 29, 30, 31, 32, 33, 34, 78, 0, 79, 80, 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 91, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, - 0, 0, 56, 92, 74, 0, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 77, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 78, 97, - 79, 80, 35, 81, 82, 83, 84, 85, 86, 0, - 0, 0, 87, 88, 89, 90, 36, 0, 37, 38, - 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 91, 49, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 52, 53, 0, 0, 76, 0, - 54, 55, 0, 0, 56, 92, 74, 0, 16, 0, - 17, 18, 19, 20, 21, 22, 23, 77, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 78, 0, 79, 80, 35, 81, 82, 83, 84, 85, - 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, - 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 91, 49, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 53, 76, 0, - 0, 0, 54, 55, 168, 169, 56, 92, 16, 0, - 17, 18, 19, 20, 21, 22, 23, -63, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 178, 0, 0, 0, 35, 179, 180, 181, 0, 0, - 182, 0, 0, 0, 166, 167, 168, 169, 36, 0, - 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 0, 49, 174, 175, - 176, 177, 178, 50, 0, 0, 0, 179, 180, 181, - 0, 0, 182, 0, 0, 51, 52, 53, 76, 0, - 0, 0, 54, 55, 0, 0, 56, 0, 16, 0, - 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 37, 38, 39, 40, 41, 42, 0, -163, 0, 0, - 43, 44, 45, 46, 47, 48, 184, 49, 185, -163, - 0, 0, 0, 50, 0, 0, 0, -163, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 53, 0, 168, - 169, 0, 54, 55, 0, -63, 56, -163, -163, -163, - -163, 0, 0, 0, -163, 0, -163, 0, 0, -163, - 0, 0, 0, 0, 177, 178, -163, -163, -163, -163, - 179, 180, 181, 0, 0, 182, 0, 0, 0, 0, - -163, -163, -163, -194, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -194, 0, 0, 0, -163, - -163, -163, 0, -194, -163, -163, 0, 0, 0, 0, - 0, 0, 0, 166, -195, 168, 169, 0, 0, 0, - 0, 0, 0, -194, -194, -194, -194, 0, 0, 0, - -194, 0, -194, 0, 0, -194, 0, 0, 0, 0, - 177, 178, -194, -194, -194, -194, 179, 180, 181, 0, - 0, 182, 0, 0, 0, 0, -194, -194, -194, 0, - -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, 0, 0, 0, 0, -194, -194, -194, 0, 0, - -194, -194, 74, 0, 16, 0, 17, 18, 19, 20, - 21, 22, 23, 0, 130, 25, 26, 27, 28, 108, + 0, 51, 52, 53, 76, 0, 0, 0, 54, 55, + 0, 0, 56, 92, 16, 0, 17, 18, 19, 20, + 21, 22, 23, -63, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 166, 167, 168, - 169, 0, 0, 0, 36, 0, 37, 38, 39, 40, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 166, + 167, 168, 169, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 0, 49, 177, 178, 0, 0, 0, 50, - 179, 180, 181, 0, 0, 182, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, - 0, 74, 56, 16, 0, 17, 18, 19, 20, 21, - 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, -195, 0, 168, 169, - 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 0, 49, 177, 178, 0, 0, 0, 50, 179, - 180, 181, 0, 0, 182, 0, 0, 0, 0, 0, - 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, - 74, 56, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 0, 136, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, - 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 0, - 56, 16, 103, 17, 18, 19, 20, 21, 22, 23, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 0, - 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 16, 56, - 17, 18, 19, 20, 21, 22, 23, 140, 24, 25, + 47, 48, 0, 49, 175, 176, 177, 178, 0, 50, + 0, 0, 179, 180, 181, 0, 0, 182, 0, 0, + 0, 51, 52, 53, 76, 0, 0, 0, 54, 55, + 0, 0, 56, 0, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, + 41, 42, 0, -163, 0, 0, 43, 44, 45, 46, + 47, 48, 184, 49, 185, -163, 0, 0, 0, 50, + 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 0, 168, 169, 0, 54, 55, + 0, -63, 56, -163, -163, -163, -163, 0, 0, 0, + -163, 0, -163, 0, 0, -163, 0, 0, 0, 0, + 177, 178, -163, -163, -163, -163, 179, 180, 181, 0, + 0, 182, 0, 0, 0, 0, -163, -163, -163, -195, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -195, 0, 0, 0, -163, -163, -163, 0, -195, + -163, -163, 0, 0, 0, 0, 0, 0, 0, 166, + -196, 168, 169, 0, 0, 0, 0, 0, 0, -195, + -195, -195, -195, 0, 0, 0, -195, 0, -195, 0, + 0, -195, 0, 0, 0, 0, 177, 178, -195, -195, + -195, -195, 179, 180, 181, 0, 0, 182, 0, 0, + 0, 0, -195, -195, -195, 0, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, 0, 0, 0, + 0, -195, -195, -195, 0, 0, -195, -195, 74, 0, + 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, + 130, 25, 26, 27, 28, 108, 29, 30, 31, 32, + 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 166, 167, 168, 169, 0, 0, 0, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 0, 49, + 177, 178, 0, 0, 0, 50, 179, 180, 181, 0, + 0, 182, 0, 0, 0, 0, 0, 51, 52, 53, + 0, 0, 0, 0, 54, 55, 0, 74, 56, 16, + 0, 17, 18, 19, 20, 21, 22, 23, 0, 24, + 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, -196, 0, 168, 169, 0, 0, 0, 36, + 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 0, 49, 177, + 178, 0, 0, 0, 50, 179, 180, 181, 0, 0, + 182, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 0, 74, 56, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 0, 136, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 0, 0, 0, 0, 35, 208, 209, 210, 211, 0, + 0, 0, 212, 0, 213, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 0, 49, 158, 159, + 160, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 54, 55, 0, 16, 56, 17, 18, 19, - 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, - 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, - 55, 0, 156, 56, 16, 0, 17, 18, 19, 20, - 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, + 0, 0, 54, 55, 0, 0, 56, 16, 103, 17, + 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, + 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, + 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 54, 55, 0, 16, 56, 17, 18, 19, 20, + 21, 22, 23, 140, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, @@ -641,25 +628,7 @@ static const yytype_int16 yytable[] = 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, - 0, 227, 56, 16, 0, 17, 18, 19, 20, 21, - 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, - 237, 56, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, - 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 249, - 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 0, 16, 56, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -667,7 +636,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 272, 56, + 53, 0, 0, 0, 0, 54, 55, 0, 156, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, @@ -676,7 +645,7 @@ static const yytype_int16 yytable[] = 0, 0, 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 0, 0, 54, 55, 0, 313, 56, 16, + 0, 0, 0, 0, 54, 55, 0, 227, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, @@ -685,7 +654,7 @@ static const yytype_int16 yytable[] = 0, 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 0, 0, 54, 55, 0, 315, 56, 16, 0, + 0, 0, 0, 54, 55, 0, 237, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, @@ -694,96 +663,149 @@ static const yytype_int16 yytable[] = 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 54, 55, 0, 328, 56, 16, 0, 17, + 0, 0, 54, 55, 0, 249, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, - 165, 0, 50, 0, 0, 0, 0, 166, 167, 168, - 169, 0, 0, 0, 51, 52, 53, 0, 0, 0, - 0, 54, 55, 0, 0, 56, 170, 171, 325, 172, - 173, 174, 175, 176, 177, 178, 0, 0, 0, 165, - 179, 180, 181, 0, 0, 182, 166, 167, 168, 169, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 54, 55, 0, 272, 56, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 54, 55, 0, 313, 56, 16, 0, 17, 18, 19, + 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, + 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, + 55, 0, 315, 56, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, + 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 0, 49, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, + 0, 328, 56, 16, 0, 17, 18, 19, 20, 21, + 22, 23, 0, 24, 25, 26, 27, 28, 0, 29, + 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, + 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 0, 49, 0, 0, 0, 165, 0, 50, 0, + 0, 0, 0, 166, 167, 168, 169, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, + 0, 56, 170, 171, 325, 172, 173, 174, 175, 176, + 177, 178, 0, 0, 0, 165, 179, 180, 181, 0, + 0, 182, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 170, 171, 0, 172, 173, - 174, 175, 176, 177, 178, 0, 0, 0, 165, 179, - 180, 181, 0, 0, 182, 166, 167, 168, 169, 0, + 0, 170, 171, 0, 172, 173, 174, 175, 176, 177, + 178, 0, 0, 0, 165, 179, 180, 181, 0, 0, + 182, 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 171, 0, 172, 173, 174, - 175, 176, 177, 178, 0, 0, 0, -195, 179, 180, - 181, 0, 0, 182, 166, 167, 168, 169, 0, 0, + 0, 171, 0, 172, 173, 174, 175, 176, 177, 178, + 0, 0, 0, -196, 179, 180, 181, 0, 0, 182, + 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, - 176, 177, 178, 0, 0, 0, 0, 179, 180, 181, - 0, 0, 182 + 0, 0, 172, 173, 174, 175, 176, 177, 178, 0, + 0, 0, 0, 179, 180, 181, 0, 0, 182 }; static const yytype_int16 yycheck[] = { - 9, 42, 12, 127, 291, 116, 12, 16, 15, 50, - 11, 82, 10, 11, 12, 9, 291, 11, 74, 294, - 91, 339, 9, 15, 11, 0, 19, 20, 21, 22, - 23, 142, 25, 26, 20, 9, 45, 11, 15, 16, - 17, 15, 360, 41, 383, 99, 44, 56, 22, 42, - 43, 44, 12, 405, 9, 48, 20, 21, 22, 23, - 77, 25, 26, 73, 74, 75, 12, 73, 74, 75, - 12, 9, 283, 11, 9, 116, 68, 118, 42, 43, - 15, 98, 357, 358, 295, 424, 21, 73, 74, 75, - 442, 26, 90, 134, 87, 219, 97, 12, 9, 97, - 11, 142, 99, 101, 102, 99, 12, 99, 99, 12, - 119, 386, 99, 73, 74, 75, 11, 126, 127, 73, - 74, 75, 99, 99, 122, 99, 9, 73, 74, 75, - 99, 73, 74, 75, 127, 144, 21, 20, 194, 195, - 196, 197, 198, 199, 98, 201, 202, 434, 77, 158, - 159, 160, 99, 162, 163, 164, 9, 432, 73, 74, - 75, 20, 9, 127, 73, 74, 75, 73, 74, 75, - 73, 74, 75, 20, 183, 184, 185, 186, 187, 188, - 21, 287, 189, 289, 40, 41, 42, 43, 46, 182, - 20, 47, 99, 49, 93, 94, 307, 20, 97, 208, - 209, 210, 211, 212, 213, 99, 330, 205, 20, 99, - 219, 17, 18, 99, 73, 74, 75, 73, 74, 75, - 20, 230, 99, 232, 233, 99, 32, 44, 45, 99, - 36, 98, 241, 20, 24, 41, 292, 98, 44, 99, - 10, 47, 98, 49, 71, 51, 52, 53, 54, 55, - 73, 74, 75, 21, 92, 93, 94, 266, 267, 97, - 269, 73, 74, 75, 11, 21, 307, 21, 99, 71, - 381, 10, 98, 73, 74, 75, 24, 286, 287, 288, - 289, 279, 291, 281, 340, 294, 73, 74, 75, 385, - 407, 387, 73, 74, 75, 391, 11, 290, 415, 416, - 75, 59, 60, 61, 62, 401, 402, 99, 425, 21, - 15, 309, 321, 409, 410, 98, 433, 98, 24, 21, - 61, 330, 418, 10, 10, 10, 422, 85, 86, 87, - 10, 98, 98, 98, 92, 93, 94, 98, 98, 97, - 381, 20, 99, 98, 440, 441, 87, 10, 357, 358, - 9, 92, 93, 94, 98, 161, 97, 99, 98, 165, + 9, 11, 42, 127, 116, 406, 12, 16, 15, 12, + 50, 0, 10, 11, 12, 291, 291, 9, 74, 294, + 77, 9, 15, 11, 339, 19, 20, 21, 22, 23, + 142, 25, 26, 9, 11, 11, 45, 99, 9, 384, + 11, 98, 443, 41, 15, 360, 44, 56, 42, 43, + 44, 22, 12, 61, 48, 20, 21, 22, 23, 12, + 25, 26, 283, 15, 16, 17, 99, 73, 74, 75, + 73, 74, 75, 99, 295, 68, 116, 42, 43, 87, + 425, 99, 357, 358, 92, 93, 94, 97, 21, 97, + 9, 82, 90, 87, 134, 219, 9, 44, 45, 97, + 91, 20, 142, 101, 102, 12, 99, 20, 12, 77, + 119, 99, 387, 73, 74, 75, 99, 126, 127, 21, + 73, 74, 75, 99, 122, 73, 74, 75, 99, 12, + 20, 9, 9, 127, 11, 144, 99, 99, 194, 195, + 196, 197, 198, 199, 99, 201, 202, 99, 99, 158, + 159, 160, 12, 162, 163, 164, 93, 94, 433, 435, + 97, 99, 127, 20, 99, 46, 73, 74, 75, 73, + 74, 75, 20, 99, 183, 184, 185, 186, 187, 188, + 220, 9, 189, 73, 74, 75, 98, 15, 182, 99, + 73, 74, 75, 21, 9, 307, 11, 20, 26, 208, + 209, 210, 211, 212, 213, 24, 330, 205, 20, 98, + 219, 17, 18, 73, 74, 75, 73, 74, 75, 20, + 287, 230, 289, 232, 233, 99, 32, 10, 71, 11, + 36, 21, 241, 20, 99, 41, 292, 21, 44, 71, + 21, 47, 98, 49, 10, 51, 52, 53, 54, 55, + 73, 74, 75, 24, 92, 93, 94, 266, 267, 97, + 269, 73, 74, 75, 73, 74, 75, 307, 11, 99, + 382, 75, 73, 74, 75, 21, 15, 286, 287, 288, + 289, 279, 291, 281, 340, 294, 73, 74, 75, 98, + 98, 24, 40, 41, 42, 43, 290, 10, 386, 47, + 388, 49, 10, 10, 392, 10, 59, 60, 61, 62, + 408, 309, 321, 98, 402, 403, 10, 21, 416, 417, + 98, 330, 410, 411, 98, 73, 74, 75, 426, 98, + 98, 419, 85, 86, 87, 423, 434, 99, 20, 92, + 93, 94, 382, 98, 97, 9, 98, 98, 357, 358, + 98, 98, 20, 441, 442, 161, 73, 74, 75, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 73, 74, 75, 386, 98, 388, - 20, 379, 73, 74, 75, 98, 59, 60, 61, 62, - 20, 98, 399, 12, 392, 40, 41, 42, 43, 98, - 98, 97, 47, 388, 49, 434, 35, 98, 204, 392, - 417, 84, 85, 86, 87, 413, 48, 48, -1, 92, - 93, 94, -1, 432, 97, 0, 1, -1, 73, 74, - 75, -1, 430, -1, 9, -1, 11, -1, 13, 14, + 176, 177, 178, 179, 59, 60, 61, 62, 387, 98, + 389, 98, 380, 20, 99, 12, 98, 61, 62, 73, + 74, 75, 98, 400, 97, 393, 435, 35, 83, 84, + 85, 86, 87, 73, 74, 75, 204, 92, 93, 94, + 389, 418, 97, 87, 98, 393, 414, 48, 92, 93, + 94, 0, 1, 97, 433, 48, -1, -1, 98, -1, + 9, -1, 11, 431, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, -1, -1, -1, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, 58, + 73, 74, 75, -1, 63, 64, 65, 66, 67, 68, + 69, 70, -1, 73, 74, 75, 87, 76, 73, 74, + 75, 92, 93, 94, -1, 98, 97, -1, -1, 88, + 89, 90, -1, 0, 1, -1, 95, 96, 98, 325, + 99, 100, 9, 98, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 73, 74, 75, -1, 63, 64, 65, 66, + 67, 68, 69, 70, -1, 73, 74, 75, -1, 76, + 3, 4, 5, 6, 7, 8, -1, 98, -1, -1, + -1, 88, 89, 90, -1, -1, 1, -1, 95, 96, + 98, -1, 99, 100, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, 58, 73, 74, 75, -1, 63, 64, - 65, 66, 67, 68, 69, 70, -1, 73, 74, 75, - 87, 76, 73, 74, 75, 92, 93, 94, -1, 98, - 97, -1, -1, 88, 89, 90, -1, 0, 1, 325, - 95, 96, 98, -1, 99, 100, 9, 98, 11, -1, + 55, 56, 57, 58, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, + -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 88, 89, 90, -1, -1, 1, -1, + 95, 96, -1, -1, 99, 100, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 73, 74, 75, -1, - 63, 64, 65, 66, 67, 68, 69, 70, -1, 73, - 74, 75, -1, 76, 3, 4, 5, 6, 7, 8, - -1, 98, -1, -1, -1, 88, 89, 90, -1, -1, - 1, -1, 95, 96, 98, -1, 99, 100, 9, 10, + 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, -1, + 1, -1, 95, 96, -1, -1, 99, 100, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -793,7 +815,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, -1, -1, 1, -1, 95, 96, -1, -1, 99, 100, - 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, + 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, 47, 48, @@ -802,120 +824,84 @@ static const yytype_int16 yycheck[] = 69, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, -1, -1, 1, -1, 95, 96, -1, -1, - 99, 100, 9, 10, 11, -1, 13, 14, 15, 16, + 99, 100, 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 88, 89, 90, -1, -1, 1, -1, 95, 96, - -1, -1, 99, 100, 9, -1, 11, -1, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, - -1, -1, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, 58, -1, -1, -1, -1, 63, 64, - 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, - -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 88, 89, 90, -1, -1, 1, -1, - 95, 96, -1, -1, 99, 100, 9, -1, 11, -1, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - 33, -1, 35, 36, 37, 38, 39, 40, 41, 42, - 43, -1, -1, -1, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, - -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 88, 89, 90, 1, -1, - -1, -1, 95, 96, 61, 62, 99, 100, 11, -1, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - 87, -1, -1, -1, 37, 92, 93, 94, -1, -1, - 97, -1, -1, -1, 59, 60, 61, 62, 51, -1, - 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, - 63, 64, 65, 66, 67, 68, -1, 70, 83, 84, - 85, 86, 87, 76, -1, -1, -1, 92, 93, 94, - -1, -1, 97, -1, -1, 88, 89, 90, 1, -1, - -1, -1, 95, 96, -1, -1, 99, -1, 11, -1, - 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, - 53, 54, 55, 56, 57, 58, -1, 0, -1, -1, - 63, 64, 65, 66, 67, 68, 9, 70, 11, 12, - -1, -1, -1, 76, -1, -1, -1, 20, -1, -1, - -1, -1, -1, -1, -1, 88, 89, 90, -1, 61, - 62, -1, 95, 96, -1, 98, 99, 40, 41, 42, - 43, -1, -1, -1, 47, -1, 49, -1, -1, 52, - -1, -1, -1, -1, 86, 87, 59, 60, 61, 62, - 92, 93, 94, -1, -1, 97, -1, -1, -1, -1, - 73, 74, 75, 0, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 12, -1, -1, -1, 92, - 93, 94, -1, 20, 97, 98, -1, -1, -1, -1, - -1, -1, -1, 59, 60, 61, 62, -1, -1, -1, - -1, -1, -1, 40, 41, 42, 43, -1, -1, -1, + -1, 88, 89, 90, 1, -1, -1, -1, 95, 96, + -1, -1, 99, 100, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, 59, + 60, 61, 62, -1, 51, -1, 53, 54, 55, 56, + 57, 58, -1, -1, -1, -1, 63, 64, 65, 66, + 67, 68, -1, 70, 84, 85, 86, 87, -1, 76, + -1, -1, 92, 93, 94, -1, -1, 97, -1, -1, + -1, 88, 89, 90, 1, -1, -1, -1, 95, 96, + -1, -1, 99, -1, 11, -1, 13, 14, 15, 16, + 17, 18, 19, -1, 21, 22, 23, 24, 25, -1, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 51, -1, 53, 54, 55, 56, + 57, 58, -1, 0, -1, -1, 63, 64, 65, 66, + 67, 68, 9, 70, 11, 12, -1, -1, -1, 76, + -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, + -1, 88, 89, 90, -1, 61, 62, -1, 95, 96, + -1, 98, 99, 40, 41, 42, 43, -1, -1, -1, 47, -1, 49, -1, -1, 52, -1, -1, -1, -1, 86, 87, 59, 60, 61, 62, 92, 93, 94, -1, - -1, 97, -1, -1, -1, -1, 73, 74, 75, -1, + -1, 97, -1, -1, -1, -1, 73, 74, 75, 0, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, -1, -1, -1, -1, 92, 93, 94, -1, -1, - 97, 98, 9, -1, 11, -1, 13, 14, 15, 16, - 17, 18, 19, -1, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, - 37, -1, -1, -1, -1, -1, -1, 59, 60, 61, - 62, -1, -1, -1, 51, -1, 53, 54, 55, 56, - 57, 58, -1, -1, -1, -1, 63, 64, 65, 66, - 67, 68, -1, 70, 86, 87, -1, -1, -1, 76, - 92, 93, 94, -1, -1, 97, -1, -1, -1, -1, - -1, 88, 89, 90, -1, -1, -1, -1, 95, 96, - -1, 9, 99, 11, -1, 13, 14, 15, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, - -1, -1, -1, -1, -1, -1, 59, -1, 61, 62, - -1, -1, -1, 51, -1, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, 63, 64, 65, 66, 67, - 68, -1, 70, 86, 87, -1, -1, -1, 76, 92, - 93, 94, -1, -1, 97, -1, -1, -1, -1, -1, - 88, 89, 90, -1, -1, -1, -1, 95, 96, -1, - 9, 99, 11, -1, 13, 14, 15, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, -1, 27, 28, - 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, -1, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, - -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, - 89, 90, -1, -1, -1, -1, 95, 96, -1, -1, - 99, 11, 12, 13, 14, 15, 16, 17, 18, 19, - -1, 21, 22, 23, 24, 25, -1, 27, 28, 29, - 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 51, -1, 53, 54, 55, 56, 57, 58, -1, - -1, -1, -1, 63, 64, 65, 66, 67, 68, -1, - 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, -1, -1, -1, -1, 95, 96, -1, 11, 99, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 87, 12, -1, -1, -1, 92, 93, 94, -1, 20, + 97, 98, -1, -1, -1, -1, -1, -1, -1, 59, + 60, 61, 62, -1, -1, -1, -1, -1, -1, 40, + 41, 42, 43, -1, -1, -1, 47, -1, 49, -1, + -1, 52, -1, -1, -1, -1, 86, 87, 59, 60, + 61, 62, 92, 93, 94, -1, -1, 97, -1, -1, + -1, -1, 73, 74, 75, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, -1, -1, + -1, 92, 93, 94, -1, -1, 97, 98, 9, -1, + 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, -1, -1, 37, -1, -1, -1, + -1, -1, -1, 59, 60, 61, 62, -1, -1, -1, + 51, -1, 53, 54, 55, 56, 57, 58, -1, -1, + -1, -1, 63, 64, 65, 66, 67, 68, -1, 70, + 86, 87, -1, -1, -1, 76, 92, 93, 94, -1, + -1, 97, -1, -1, -1, -1, -1, 88, 89, 90, + -1, -1, -1, -1, 95, 96, -1, 9, 99, 11, + -1, 13, 14, 15, 16, 17, 18, 19, -1, 21, + 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, + 32, -1, -1, -1, -1, 37, -1, -1, -1, -1, + -1, -1, 59, -1, 61, 62, -1, -1, -1, 51, + -1, 53, 54, 55, 56, 57, 58, -1, -1, -1, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 86, + 87, -1, -1, -1, 76, 92, 93, 94, -1, -1, + 97, -1, -1, -1, -1, -1, 88, 89, 90, -1, + -1, -1, -1, 95, 96, -1, 9, 99, 11, -1, + 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, + -1, -1, -1, -1, 37, 40, 41, 42, 43, -1, + -1, -1, 47, -1, 49, -1, -1, -1, 51, -1, 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, - 63, 64, 65, 66, 67, 68, -1, 70, -1, -1, - -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, + 63, 64, 65, 66, 67, 68, -1, 70, 73, 74, + 75, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, -1, -1, - -1, -1, 95, 96, -1, 11, 99, 13, 14, 15, - 16, 17, 18, 19, -1, 21, 22, 23, 24, 25, - -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, - -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, 54, 55, - 56, 57, 58, -1, -1, -1, -1, 63, 64, 65, - 66, 67, 68, -1, 70, -1, -1, -1, -1, -1, - 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 88, 89, 90, -1, -1, -1, -1, 95, - 96, -1, 98, 99, 11, -1, 13, 14, 15, 16, - 17, 18, 19, -1, 21, 22, 23, 24, 25, -1, + -1, -1, 95, 96, -1, -1, 99, 11, 12, 13, + 14, 15, 16, 17, 18, 19, -1, 21, 22, 23, + 24, 25, -1, 27, 28, 29, 30, 31, 32, -1, + -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, + 54, 55, 56, 57, 58, -1, -1, -1, -1, 63, + 64, 65, 66, 67, 68, -1, 70, -1, -1, -1, + -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 88, 89, 90, -1, -1, -1, + -1, 95, 96, -1, 11, 99, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, 54, 55, 56, @@ -923,25 +909,7 @@ static const yytype_int16 yycheck[] = 67, 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, -1, -1, -1, -1, 95, 96, - -1, 98, 99, 11, -1, 13, 14, 15, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 51, -1, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, 63, 64, 65, 66, 67, - 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 88, 89, 90, -1, -1, -1, -1, 95, 96, -1, - 98, 99, 11, -1, 13, 14, 15, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, -1, 27, 28, - 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, -1, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, - -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, - 89, 90, -1, -1, -1, -1, 95, 96, -1, 98, - 99, 11, -1, 13, 14, 15, 16, 17, 18, 19, + -1, 11, 99, 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -983,23 +951,58 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, 54, 55, 56, 57, 58, -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, -1, 70, -1, -1, -1, - 52, -1, 76, -1, -1, -1, -1, 59, 60, 61, - 62, -1, -1, -1, 88, 89, 90, -1, -1, -1, - -1, 95, 96, -1, -1, 99, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, -1, -1, -1, 52, - 92, 93, 94, -1, -1, 97, 59, 60, 61, 62, + -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 88, 89, 90, -1, -1, -1, + -1, 95, 96, -1, 98, 99, 11, -1, 13, 14, + 15, 16, 17, 18, 19, -1, 21, 22, 23, 24, + 25, -1, 27, 28, 29, 30, 31, 32, -1, -1, + -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 51, -1, 53, 54, + 55, 56, 57, 58, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, -1, 70, -1, -1, -1, -1, + -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 88, 89, 90, -1, -1, -1, -1, + 95, 96, -1, 98, 99, 11, -1, 13, 14, 15, + 16, 17, 18, 19, -1, 21, 22, 23, 24, 25, + -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, + -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 51, -1, 53, 54, 55, + 56, 57, 58, -1, -1, -1, -1, 63, 64, 65, + 66, 67, 68, -1, 70, -1, -1, -1, -1, -1, + 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 88, 89, 90, -1, -1, -1, -1, 95, + 96, -1, 98, 99, 11, -1, 13, 14, 15, 16, + 17, 18, 19, -1, 21, 22, 23, 24, 25, -1, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 51, -1, 53, 54, 55, 56, + 57, 58, -1, -1, -1, -1, 63, 64, 65, 66, + 67, 68, -1, 70, -1, -1, -1, -1, -1, 76, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 88, 89, 90, -1, -1, -1, -1, 95, 96, + -1, 98, 99, 11, -1, 13, 14, 15, 16, 17, + 18, 19, -1, 21, 22, 23, 24, 25, -1, 27, + 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 51, -1, 53, 54, 55, 56, 57, + 58, -1, -1, -1, -1, 63, 64, 65, 66, 67, + 68, -1, 70, -1, -1, -1, 52, -1, 76, -1, + -1, -1, -1, 59, 60, 61, 62, -1, -1, -1, + 88, 89, 90, -1, -1, -1, -1, 95, 96, -1, + -1, 99, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, -1, -1, 52, 92, 93, 94, -1, + -1, 97, 59, 60, 61, 62, -1, -1, -1, -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, 52, 92, - 93, 94, -1, -1, 97, 59, 60, 61, 62, -1, + -1, 78, 79, -1, 81, 82, 83, 84, 85, 86, + 87, -1, -1, -1, 52, 92, 93, 94, -1, -1, + 97, 59, 60, 61, 62, -1, -1, -1, -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, 52, 92, 93, - 94, -1, -1, 97, 59, 60, 61, 62, -1, -1, + -1, 79, -1, 81, 82, 83, 84, 85, 86, 87, + -1, -1, -1, 52, 92, 93, 94, -1, -1, 97, + 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, - 85, 86, 87, -1, -1, -1, -1, 92, 93, 94, - -1, -1, 97 + -1, -1, 81, 82, 83, 84, 85, 86, 87, -1, + -1, -1, -1, 92, 93, 94, -1, -1, 97 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1012,45 +1015,45 @@ static const yytype_uint8 yystos[] = 28, 29, 30, 31, 32, 37, 51, 53, 54, 55, 56, 57, 58, 63, 64, 65, 66, 67, 68, 70, 76, 88, 89, 90, 95, 96, 99, 139, 140, 141, - 144, 145, 146, 147, 148, 149, 150, 153, 155, 156, - 157, 158, 159, 160, 9, 109, 1, 20, 33, 35, + 144, 145, 146, 147, 148, 149, 151, 154, 156, 157, + 158, 159, 160, 161, 9, 109, 1, 20, 33, 35, 36, 38, 39, 40, 41, 42, 43, 47, 48, 49, 50, 69, 100, 109, 117, 120, 139, 34, 115, 116, 117, 114, 114, 12, 139, 149, 149, 21, 26, 109, - 156, 161, 161, 161, 161, 161, 161, 161, 99, 11, + 157, 162, 162, 162, 162, 162, 162, 162, 150, 11, 99, 149, 132, 132, 149, 99, 99, 99, 109, 149, - 21, 140, 152, 156, 161, 161, 21, 109, 149, 156, - 20, 139, 21, 149, 99, 151, 156, 157, 158, 149, + 21, 140, 153, 157, 162, 162, 21, 109, 149, 157, + 20, 139, 21, 149, 99, 152, 157, 158, 159, 149, 140, 149, 149, 149, 149, 149, 98, 139, 73, 74, 75, 77, 9, 11, 99, 52, 59, 60, 61, 62, 78, 79, 81, 82, 83, 84, 85, 86, 87, 92, 93, 94, 97, 99, 9, 11, 9, 11, 9, 110, 133, 131, 21, 131, 99, 99, 99, 99, 68, 99, - 156, 99, 99, 109, 131, 46, 122, 20, 40, 41, - 42, 43, 47, 49, 116, 117, 115, 12, 152, 99, - 140, 139, 98, 109, 24, 135, 98, 98, 139, 153, - 161, 140, 99, 99, 10, 20, 152, 98, 139, 71, + 157, 99, 99, 109, 131, 46, 122, 20, 40, 41, + 42, 43, 47, 49, 116, 117, 115, 12, 153, 99, + 99, 139, 98, 109, 24, 135, 98, 98, 139, 154, + 162, 140, 99, 99, 10, 20, 153, 98, 139, 71, 137, 11, 98, 139, 139, 139, 149, 139, 139, 98, 139, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 9, 11, 22, 99, - 143, 156, 98, 139, 139, 139, 139, 139, 139, 114, + 143, 157, 98, 139, 139, 139, 139, 139, 139, 114, 21, 130, 21, 134, 21, 118, 110, 110, 110, 110, 110, 110, 99, 110, 110, 134, 109, 139, 126, 139, - 139, 139, 139, 139, 153, 98, 12, 142, 71, 136, + 139, 139, 139, 139, 154, 140, 12, 142, 71, 136, 98, 98, 139, 98, 139, 98, 139, 10, 98, 24, 139, 11, 20, 12, 98, 80, 139, 139, 98, 139, 99, 98, 20, 12, 20, 12, 20, 10, 109, 135, 9, 20, 21, 125, 139, 126, 127, 139, 126, 129, - 154, 156, 120, 124, 127, 128, 139, 110, 111, 127, - 135, 98, 152, 24, 109, 98, 98, 98, 12, 139, - 10, 149, 20, 12, 98, 153, 10, 10, 10, 136, - 110, 21, 98, 98, 98, 98, 99, 98, 20, 127, - 127, 98, 136, 12, 10, 98, 20, 109, 138, 119, - 152, 123, 123, 9, 112, 112, 127, 112, 125, 98, - 98, 112, 138, 114, 20, 112, 112, 113, 44, 45, - 121, 121, 98, 122, 20, 112, 112, 10, 122, 122, - 114, 112, 99, 112, 123, 122, 10, 127, 122, 128, - 98, 98, 112, 112, 121 + 155, 157, 120, 124, 127, 128, 139, 110, 111, 127, + 135, 98, 98, 153, 24, 109, 98, 98, 98, 12, + 139, 10, 149, 20, 12, 98, 154, 10, 10, 10, + 136, 110, 21, 98, 98, 98, 98, 99, 98, 20, + 127, 127, 98, 136, 12, 10, 98, 20, 109, 138, + 119, 153, 123, 123, 9, 112, 112, 127, 112, 125, + 98, 98, 112, 138, 114, 20, 112, 112, 113, 44, + 45, 121, 121, 98, 122, 20, 112, 112, 10, 122, + 122, 114, 112, 99, 112, 123, 122, 10, 127, 122, + 128, 98, 98, 112, 112, 121 }; typedef enum { @@ -1081,11 +1084,11 @@ static const toketypes yy_type_tab[] = toketype_ival, 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, 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_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval }; /* Generated from: - * ff01d43de6f749eba3bfeffd39928772fe7e1bebe039506b8465c05941209aa8 perly.y + * 27cce68ad4844f1b8053bfc11206fb9f559e08be6cefd4a986aaa606c0e5fb38 perly.y * 53f57d7143a42b3c008841a14d158bcf9cab64b2904b07ef5e95051fe9a8a875 regen_perly.pl * ex: set ro: */ @@ -1257,10 +1257,21 @@ term : termbinop TOKEN_GETMAD($2,$$,'('); TOKEN_GETMAD($4,$$,')'); } - | PMFUNC '(' listexpr ')' /* m//, s///, tr/// */ - { $$ = pmruntime($1, $3, 1); - TOKEN_GETMAD($2,$$,'('); - TOKEN_GETMAD($4,$$,')'); + | PMFUNC /* m//, s///, qr//, tr/// */ + { + if ( $1->op_type != OP_TRANS + && $1->op_type != OP_TRANSR + && (((PMOP*)$1)->op_pmflags & PMf_HAS_CV)) + { + $<ival>$ = start_subparse(FALSE, CVf_ANON); + SAVEFREESV(PL_compcv); + } else + $<ival>$ = 0; + } + '(' listexpr ')' + { $$ = pmruntime($1, $4, 1, $<ival>2); + TOKEN_GETMAD($3,$$,'('); + TOKEN_GETMAD($5,$$,')'); } | WORD | listop @@ -1208,6 +1208,8 @@ PP(pp_qr) REGEXP * rx = PM_GETRE(pm); SV * const pkg = rx ? CALLREG_PACKAGE(rx) : NULL; SV * const rv = sv_newmortal(); + CV **cvp; + CV *cv; SvUPGRADE(rv, SVt_IV); /* For a subroutine describing itself as "This is a hacky workaround" I'm @@ -1219,6 +1221,12 @@ PP(pp_qr) SvRV_set(rv, MUTABLE_SV(reg_temp_copy(NULL, rx))); SvROK_on(rv); + cvp = &( ((struct regexp*)SvANY(SvRV(rv)))->qr_anoncv); + if ((cv = *cvp) && CvCLONE(*cvp)) { + *cvp = cv_clone(cv); + SvREFCNT_dec(cv); + } + if (pkg) { HV *const stash = gv_stashsv(pkg, GV_ADD); SvREFCNT_dec(pkg); @@ -3041,7 +3041,7 @@ PERL_CALLCONV int perl_run(PerlInterpreter *my_perl) assert(my_perl) PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); -PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) +PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg, I32 floor) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_PMRUNTIME \ @@ -8112,7 +8112,8 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp,U32 depth) { o = o->op_sibling; } - n = add_data(pRExC_state, 1, "l"); + n = add_data(pRExC_state, 1, + (RExC_flags & PMf_HAS_CV) ? "L" : "l"); RExC_rxi->data->data[n] = (void*)o->op_next; pRExC_state->next_code_or_const = o->op_sibling; } @@ -12977,6 +12978,7 @@ Perl_pregfree2(pTHX_ REGEXP *rx) SvREFCNT_dec(r->saved_copy); #endif Safefree(r->offs); + SvREFCNT_dec(r->qr_anoncv); } /* reg_temp_copy() @@ -13040,6 +13042,7 @@ Perl_reg_temp_copy (pTHX_ REGEXP *ret_x, REGEXP *rx) ret->saved_copy = NULL; #endif ret->mother_re = rx; + SvREFCNT_inc_void(ret->qr_anoncv); return ret_x; } @@ -13121,6 +13124,7 @@ Perl_regfree_internal(pTHX_ REGEXP * const rx) new_comppad = NULL; break; case 'l': + case 'L': case 'n': break; case 'T': @@ -13249,6 +13253,7 @@ Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS *param) } RXp_PAREN_NAMES(ret) = hv_dup_inc(RXp_PAREN_NAMES(ret), param); + ret->qr_anoncv = MUTABLE_CV(sv_dup_inc((const SV *)ret->qr_anoncv, param)); if (ret->pprivate) RXi_SET(ret,CALLREGDUPE_PVT(dstr,param)); @@ -13362,6 +13367,7 @@ Perl_regdupe_internal(pTHX_ REGEXP * const rx, CLONE_PARAMS *param) OP_REFCNT_UNLOCK; /* Fall through */ case 'l': + case 'L': case 'n': d->data[i] = ri->data->data[i]; break; @@ -536,6 +536,7 @@ END_EXTERN_C * a - AV for paren_name_list under DEBUGGING * f - start-class data for regstclass optimization * l - start op for literal (?{EVAL}) item + * L - start op for literal (?{EVAL}) item, with separate CV (qr//) * n - Root of op tree for (?{EVAL}) item * o - Start op for (?{EVAL}) item * p - Pad for (?{EVAL}) item @@ -4273,6 +4273,10 @@ S_regmatch(pTHX_ regmatch_info *reginfo, regnode *prog) new_comppad = initial_pad; /* the pad of the current sub */ PL_op = (OP_4tree*)rexi->data->data[n]; } + else if (rexi->data->what[n] == 'L') { /* literal with own CV */ + new_comppad = (PAD*)AvARRAY(CvPADLIST(rex->qr_anoncv))[1]; + PL_op = (OP_4tree*)rexi->data->data[n]; + } else { PL_op = (OP_4tree*)rexi->data->data[n]; new_comppad = (PAD*)rexi->data->data[n + 2]; @@ -109,7 +109,8 @@ typedef struct regexp_paren_pair { /* offset from wrapped to the start of precomp */ \ PERL_BITFIELD32 pre_prefix:4; \ /* number of eval groups in the pattern - for security checks */\ - PERL_BITFIELD32 seen_evals:28 + PERL_BITFIELD32 seen_evals:28; \ + CV *qr_anoncv /* the anon sub wrapped round qr/(?{..})/ */ typedef struct regexp { _XPV_HEAD; diff --git a/t/lib/strict/subs b/t/lib/strict/subs index e3e401408f..5fd0b03de7 100644 --- a/t/lib/strict/subs +++ b/t/lib/strict/subs @@ -378,8 +378,8 @@ Execution of - aborted due to compilation errors. use strict 'subs'; qr/(?{my $x=foo})/; EXPECT -Bareword "foo" not allowed while "strict subs" in use at (re_eval 1) line 1. -Compilation failed in regexp at - line 3. +Bareword "foo" not allowed while "strict subs" in use at - line 3. +Execution of - aborted due to compilation errors. ######## # Regexp compilation errors weren't UTF-8 clean use strict 'subs'; @@ -387,8 +387,8 @@ use utf8; use open qw( :utf8 :std ); qr/(?{my $x=fòò})/; EXPECT -Bareword "fòò" not allowed while "strict subs" in use at (re_eval 1) line 1. -Compilation failed in regexp at - line 5. +Bareword "fòò" not allowed while "strict subs" in use at - line 5. +Execution of - aborted due to compilation errors. ######## # [perl #27628] strict 'subs' didn't warn on bareword array index use strict 'subs'; diff --git a/t/lib/strict/vars b/t/lib/strict/vars index 6e3c1e90f4..c6cb067939 100644 --- a/t/lib/strict/vars +++ b/t/lib/strict/vars @@ -517,11 +517,9 @@ Execution of - aborted due to compilation errors. # [perl #26910] hints not propagated into (?{...}) use strict 'vars'; qr/(?{$foo++})/; -# XXX temp expect duplicate errors EXPECT Global symbol "$foo" requires explicit package name at - line 3. -Global symbol "$foo" requires explicit package name at (re_eval 1) line 1. -Compilation failed in regexp at - line 3. +Execution of - aborted due to compilation errors. ######## # Regex compilation errors weren't UTF-8 clean. use strict 'vars'; @@ -529,8 +527,8 @@ use utf8; use open qw( :utf8 :std ); qr/(?{$fòò++})/; EXPECT -Global symbol "$fòò" requires explicit package name at (re_eval 1) line 1. -Compilation failed in regexp at - line 5. +Global symbol "$fòò" requires explicit package name at - line 5. +Execution of - aborted due to compilation errors. ######## # [perl #73712] 'Variable is not imported' should be suppressible $dweck; diff --git a/t/re/pat_re_eval.t b/t/re/pat_re_eval.t index 57f2fa21b8..78b2e41363 100644 --- a/t/re/pat_re_eval.t +++ b/t/re/pat_re_eval.t @@ -22,7 +22,7 @@ BEGIN { } -plan tests => 217; # Update this when adding/deleting tests. +plan tests => 220; # Update this when adding/deleting tests. run_tests() unless caller; @@ -395,7 +395,7 @@ sub run_tests { # literal qr code only created once, naked $cr1 //= qr/^A(??{$x})$/; - tok(1, "Aa" =~ $cr1, "[$x] literal qr once naked"); + ok("Aa" =~ $cr1, "[$x] literal qr once naked"); # literal qr code only created once, embedded with text @@ -418,7 +418,7 @@ sub run_tests { # literal qr code, naked my $r1 = qr/^A(??{$x})$/; - tok(1, "A$x" =~ $r1, "[$x] literal qr naked"); + ok("A$x" =~ $r1, "[$x] literal qr naked"); # literal qr code, embedded with text @@ -487,6 +487,30 @@ sub run_tests { recurse($n+1); } recurse(0); + + # for qr// containing run-time elements but with a compile-time + # code block, make sure the run-time bits are executed in the same + # pad they were compiled in + { + my $a = 'a'; # ensure outer and inner pads don't align + my $b = 'b'; + my $c = 'c'; + my $d = 'd'; + my $r = qr/^$b(??{$c})$d$/; + ok("bcd" =~ $r, "qr with run-time elements and code block"); + } + + # forward declared subs should Do The Right Thing with any anon CVs + # within them (i.e. pad_fixup_inner_anons() should work) + + sub forward; + sub forward { + my $x = "a"; + my $A = "A"; + ok("Aa" =~ qr/^A(??{$x})$/, "forward qr compiletime"); + ok("Aa" =~ qr/^$A(??{$x})$/, "forward qr runtime"); + } + forward; } } # End of sub run_tests diff --git a/t/re/re_tests b/t/re/re_tests index a66ad9f345..21d39898ca 100644 --- a/t/re/re_tests +++ b/t/re/re_tests @@ -537,7 +537,7 @@ a(?{})b cabd y $& ab a(?{f()+ - c - Missing right curly or square bracket a(?{{1}+ - c - Missing right curly or square bracket a(?{}})b - c - -# XXX tmp disable this test - works for // but not qr// yet +# XXX tmp disable this test - doesn't work for embedded qr// yet #a(?{"{"})b ab y - - a(?{"\{"})b cabd y $& ab a(?{"{"}})b - c - Sequence (?{...}) not terminated with ')' @@ -9185,6 +9185,22 @@ S_scan_pat(pTHX_ char *start, I32 type) #ifdef PERL_MAD modstart = s; #endif + + /* if qr/...(?{..}).../, then need to parse the pattern within a new + * anon CV. False positives like qr/[(?{]/ are harmless */ + + if (type == OP_QR) { + char *p; + for (p = start; p < s; p++) { + if (p[0] == '(' && p[1] == '?' + && (p[2] == '{' || (p[2] == '?' && p[3] == '{'))) + { + pm->op_pmflags |= PMf_HAS_CV; + break; + } + } + } + while (*s && S_pmflag(aTHX_ valid_flags, &(pm->op_pmflags), &s, &charset)) {}; #ifdef PERL_MAD if (PL_madskills && modstart != s) { |