From 8d1931e529ca46fd13e958a527e043e6e74d1584 Mon Sep 17 00:00:00 2001 From: "Paul \"LeoNerd\" Evans" Date: Fri, 31 Jan 2025 14:51:47 +0000 Subject: [PATCH] Move all the signature param parsing logic out of perly.y into a helper API Provide a subsignature_*() API Added: * subsignature_start() * subsignature_append_slurpy() * subsignature_append_positional() * subsignature_finish() Call these from code blocks in perly.y Make the actual parser signature struct opaque, hidden in toke.c. This gives it much more robustness against future modifications. --- embed.fnc | 10 + embed.h | 4 + op.c | 219 ++++++ parser.h | 9 +- perly.act | 867 +++++++++----------- perly.h | 2 +- perly.tab | 1923 +++++++++++++++++++++++---------------------- perly.y | 159 +--- proto.h | 20 + sv.c | 8 +- t/op/signatures.t | 23 + toke.c | 8 +- 12 files changed, 1669 insertions(+), 1583 deletions(-) diff --git a/embed.fnc b/embed.fnc index fbb3ed84f0ca..bbe8dfe26d76 100644 --- a/embed.fnc +++ b/embed.fnc @@ -3090,6 +3090,16 @@ ATdmp |bool |strict_utf8_to_uv \ CRp |NV |str_to_version |NN SV *sv : Used in pp_ctl.c p |void |sub_crush_depth|NN CV *cv +: Used in perly.y +p |void |subsignature_append_positional \ + |NULLOK OP *varop \ + |OPCODE defmode \ + |NULLOK OP *defexpr +p |void |subsignature_append_slurpy \ + |I32 sigil \ + |NULLOK OP *varop +p |OP * |subsignature_finish +p |void |subsignature_start Adp |void |suspend_compcv |NN struct suspended_compcv *buffer ATdip |void |SvAMAGIC_off |NN SV *sv ATdip |void |SvAMAGIC_on |NN SV *sv diff --git a/embed.h b/embed.h index d9e27472656c..9ee86850c2c3 100644 --- a/embed.h +++ b/embed.h @@ -1213,6 +1213,10 @@ # define sighandler1 Perl_sighandler1 # define sighandler3 Perl_sighandler3 # define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a) +# define subsignature_append_positional(a,b,c) Perl_subsignature_append_positional(aTHX_ a,b,c) +# define subsignature_append_slurpy(a,b) Perl_subsignature_append_slurpy(aTHX_ a,b) +# define subsignature_finish() Perl_subsignature_finish(aTHX) +# define subsignature_start() Perl_subsignature_start(aTHX) # define sv_2num(a) Perl_sv_2num(aTHX_ a) # define sv_clean_all() Perl_sv_clean_all(aTHX) # define sv_clean_objs() Perl_sv_clean_objs(aTHX) diff --git a/op.c b/op.c index f71157eb7743..c881ea91ff90 100644 --- a/op.c +++ b/op.c @@ -16190,6 +16190,225 @@ Perl_rcpv_copy(pTHX_ char *pv) { return pv; } +/* Subroutine signature parsing */ + +struct yy_parser_signature { + UV elems; /* number of signature elements seen so far */ + UV optelems; /* number of optional signature elems seen */ + char slurpy; /* the sigil of the slurpy var (or null) */ + OP *elemops; /* NULL, or an OP_LINESEQ of individual element ops */ +}; + +static void +destroy_subsignature_context(pTHX_ void *p) +{ + yy_parser_signature *signature = (yy_parser_signature *)p; + + if(signature->elemops) + op_free(signature->elemops); + + Safefree(signature); +} + +/* Called from perly.y on encountering the '(' of a subroutine signature. + * Does not return anything useful, but sets up the memory structure in + * `PL_parser->signature` that the following functions make use of. + */ + +void +Perl_subsignature_start(pTHX) +{ + PERL_ARGS_ASSERT_SUBSIGNATURE_START; + assert(PL_parser); + + yy_parser_signature *signature; + Newx(signature, 1, yy_parser_signature); + SAVEDESTRUCTOR_X(&destroy_subsignature_context, signature); + + signature->elems = 0; + signature->optelems = 0; + signature->slurpy = 0; + + signature->elemops = NULL; + + SAVEVPTR(PL_parser->signature); + PL_parser->signature = signature; +} + +/* Appends another positional scalar parameter to the accumulated set of + * subroutine params. `varop` may be NULL, but if not it must be an OP_ARGELEM + * whose op_targ refers to an already-declared pad lexical. That lexical must + * be a scalar. It is not necessary to set the argument index in the op_aux + * field; that will be filled in by this function. + * If `defexpr` is not NULL, it gives a defaulting expression to be evaluated + * if required, according to `defmode` - one of zero, `OP_DORASSIGN` or + * `OP_ORASSIGN`. + */ + +void +Perl_subsignature_append_positional(pTHX_ OP *varop, OPCODE defmode, OP *defexpr) +{ + PERL_ARGS_ASSERT_SUBSIGNATURE_APPEND_POSITIONAL; + assert(PL_parser); + yy_parser_signature *signature = PL_parser->signature; + assert(signature); + + if(signature->slurpy) + yyerror("Slurpy parameter not last"); + + UV argix = signature->elems; + + if(varop) { + assert(varop->op_type == OP_ARGELEM); + assert((varop->op_private & OPpARGELEM_MASK) == OPpARGELEM_SV); + assert(varop->op_targ); + assert(PadnamePV(PadnamelistARRAY(PL_comppad_name)[varop->op_targ])[0] == '$'); + + /* Now fill in the argix */ + cUNOP_AUXx(varop)->op_aux = INT2PTR(UNOP_AUX_item *, argix); + } + + signature->elems++; + + if(defexpr) { + signature->optelems++; + + I32 flags = 0; + if(defmode == OP_DORASSIGN) + flags |= OPpARG_IF_UNDEF << 8; + if(defmode == OP_ORASSIGN) + flags |= OPpARG_IF_FALSE << 8; + + if(defexpr->op_type == OP_NULL && !(defexpr->op_flags & OPf_KIDS)) + { + /* handle '$=' special case */ + if(varop) + yyerror("Optional parameter lacks default expression"); + } + else { + /* a normal '=default' expression */ + OP *defop = newARGDEFELEMOP(flags, defexpr, argix); + + if(varop) { + varop->op_flags |= OPf_STACKED; + (void)op_sibling_splice(varop, NULL, 0, defop); + scalar(defop); + } + else + varop = newUNOP(OP_NULL, 0, defop); + + LINKLIST(varop); + /* NB: normally the first child of a logop is executed before the + * logop, and it pushes a boolean result ready for the logop. For + * ARGDEFELEM, the op itself does the boolean calculation, so set + * the first op to it instead. + */ + varop->op_next = defop; + defexpr->op_next = varop; + } + } + else + if(signature->optelems) + yyerror("Mandatory parameter follows optional parameter"); + + if(varop) { + signature->elemops = op_append_list(OP_LINESEQ, signature->elemops, + newSTATEOP(0, NULL, varop)); + } +} + +/* Appends a final slurpy parameter to the accumulated set of subroutine + * params. `varop` may be NULL, but if not it must be an OP_ARGELEM whose + * op_targ refers to an already-declared pad lexical. That lexical must match + * the `sigil` parameter. It is not necessary to set the argument index in the + * op_aux field; that will be filled in by this function. + */ + +void +Perl_subsignature_append_slurpy(pTHX_ I32 sigil, OP *varop) +{ + PERL_ARGS_ASSERT_SUBSIGNATURE_APPEND_SLURPY; + assert(PL_parser); + yy_parser_signature *signature = PL_parser->signature; + assert(signature); + assert(sigil == '@' || sigil == '%'); + + if(signature->slurpy) + yyerror("Multiple slurpy parameters not allowed"); + + UV argix = signature->elems; + + if(varop) { + assert(varop->op_type == OP_ARGELEM); + assert((varop->op_private & OPpARGELEM_MASK) == + ((sigil == '@') ? OPpARGELEM_AV : OPpARGELEM_HV)); + assert(varop->op_targ); + assert(PadnamePV(PadnamelistARRAY(PL_comppad_name)[varop->op_targ])[0] == sigil); + + /* Now fill in the argix */ + cUNOP_AUXx(varop)->op_aux = INT2PTR(UNOP_AUX_item *, argix); + } + + signature->slurpy = (char)sigil; + + if(varop) { + /* TODO: assert() the sigil of the pad variable matches */ + signature->elemops = op_append_list(OP_LINESEQ, signature->elemops, + newSTATEOP(0, NULL, varop)); + } +} + +/* Called from perly.y on encountering the closing `)` of a subroutine + * signature. This creates the optree fragment responsible for processing all + * the accumulated subroutine params, to be inserted at the start of the + * subroutine's optree. + */ + +OP * +Perl_subsignature_finish(pTHX) +{ + PERL_ARGS_ASSERT_SUBSIGNATURE_FINISH; + assert(PL_parser); + yy_parser_signature *signature = PL_parser->signature; + assert(signature); + + OP *sigops = signature->elemops; + signature->elemops = NULL; + + struct op_argcheck_aux *aux = (struct op_argcheck_aux *) + PerlMemShared_malloc( sizeof(struct op_argcheck_aux)); + + aux->params = signature->elems; + aux->opt_params = signature->optelems; + aux->slurpy = signature->slurpy; + + OP *check = newUNOP_AUX(OP_ARGCHECK, 0, NULL, (UNOP_AUX_item *)aux); + + sigops = op_prepend_elem(OP_LINESEQ, + check, + sigops); + + /* a nextstate right at the beginning */ + sigops = op_prepend_elem(OP_LINESEQ, + newSTATEOP(0, NULL, NULL), + sigops); + + /* a nextstate at the end handles context correctly for an empty sub body */ + sigops = op_append_elem(OP_LINESEQ, sigops, + newSTATEOP(0, NULL, NULL)); + + /* wrap the list of arg ops in a NULL aux op. + This serves two purposes. First, it makes the arg list a separate + subtree from the body of the sub, and secondly the null op may in future + be upgraded to an OP_SIGNATURE when implemented. For now leave it as + ex-argcheck */ + + OP *ret = newUNOP_AUX(OP_ARGCHECK, 0, sigops, NULL); + op_null(ret); + + return ret; +} + /* * ex: set ts=8 sts=4 sw=4 et: */ diff --git a/parser.h b/parser.h index 1a0fcce2dffc..931db82f4b95 100644 --- a/parser.h +++ b/parser.h @@ -31,6 +31,10 @@ typedef struct yy_lexshared { SV *re_eval_str; /* "(?{...})" text */ } LEXSHARED; +/* Opaque struct of data relevant during parsing and construction of a + * subroutine signature. Defined and used exclusively by op.c */ +typedef struct yy_parser_signature yy_parser_signature; + typedef struct yy_parser { /* parser state */ @@ -112,10 +116,7 @@ typedef struct yy_parser { line_t herelines; /* number of lines in here-doc */ line_t preambling; /* line # when processing $ENV{PERL5DB} */ - /* these are valid while parsing a subroutine signature */ - UV sig_elems; /* number of signature elements seen so far */ - UV sig_optelems; /* number of optional signature elems seen */ - char sig_slurpy; /* the sigil of the slurpy var (or null) */ + yy_parser_signature *signature; /* parser state of a subroutine signature */ bool sig_seen; /* the currently parsing sub has a signature */ bool recheck_charset_validity; diff --git a/perly.act b/perly.act index 8a1ec84c054a..7b680fabf3f9 100644 --- a/perly.act +++ b/perly.act @@ -930,196 +930,95 @@ case 2: /* @1: %empty */ break; - case 119: /* sigslurpelem: sigslurpsigil sigvarname sigdefault */ + case 119: /* sigslurpelem: sigslurpsigil sigvarname */ #line 827 "perly.y" { - I32 sigil = (ps[-2].val.ival); - OP *var = (ps[-1].val.opval); - OP *defop = (ps[0].val.opval); - - if (parser->sig_slurpy) - yyerror("Multiple slurpy parameters not allowed"); - parser->sig_slurpy = (char)sigil; - - if (defop) - yyerror("A slurpy parameter may not have " - "a default value"); - - (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL; + subsignature_append_slurpy((ps[-1].val.ival), (ps[0].val.opval)); + (yyval.opval) = NULL; } break; - case 121: /* sigdefault: ASSIGNOP */ -#line 848 "perly.y" - { (yyval.opval) = newARGDEFELEMOP(0, newOP(OP_NULL, 0), parser->sig_elems); } - - break; - - case 122: /* sigdefault: ASSIGNOP term */ -#line 850 "perly.y" + case 120: /* sigslurpelem: sigslurpsigil sigvarname ASSIGNOP */ +#line 832 "perly.y" { - I32 flags = 0; - if ((ps[-1].val.ival) == OP_DORASSIGN) - flags |= OPpARG_IF_UNDEF << 8; - if ((ps[-1].val.ival) == OP_ORASSIGN) - flags |= OPpARG_IF_FALSE << 8; - (yyval.opval) = newARGDEFELEMOP(flags, (ps[0].val.opval), parser->sig_elems); + yyerror("A slurpy parameter may not have a default value"); } break; - case 123: /* sigscalarelem: PERLY_DOLLAR sigvarname sigdefault */ -#line 863 "perly.y" + case 121: /* sigslurpelem: sigslurpsigil sigvarname ASSIGNOP term */ +#line 836 "perly.y" { - OP *var = (ps[-1].val.opval); - OP *defop = (ps[0].val.opval); - - if (parser->sig_slurpy) - yyerror("Slurpy parameter not last"); - - parser->sig_elems++; - - if (defop) { - parser->sig_optelems++; - - OP *defexpr = cLOGOPx(defop)->op_first; - - if ( defexpr->op_type == OP_NULL - && !(defexpr->op_flags & OPf_KIDS)) - { - /* handle '$=' special case */ - if (var) - yyerror("Optional parameter " - "lacks default expression"); - op_free(defop); - } - else { - /* a normal '=default' expression */ - if (var) { - var->op_flags |= OPf_STACKED; - (void)op_sibling_splice(var, - NULL, 0, defop); - scalar(defop); - } - else - var = newUNOP(OP_NULL, 0, defop); - - LINKLIST(var); - /* NB: normally the first child of a - * logop is executed before the logop, - * and it pushes a boolean result - * ready for the logop. For ARGDEFELEM, - * the op itself does the boolean - * calculation, so set the first op to - * it instead. - */ - var->op_next = defop; - defexpr->op_next = var; - } - } - else { - if (parser->sig_optelems) - yyerror("Mandatory parameter " - "follows optional parameter"); - } - - (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL; + yyerror("A slurpy parameter may not have a default value"); } break; - case 124: /* sigelem: sigscalarelem */ -#line 923 "perly.y" - { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } + case 122: /* sigscalarelem: PERLY_DOLLAR sigvarname */ +#line 844 "perly.y" + { + subsignature_append_positional((ps[0].val.opval), 0, NULL); + (yyval.opval) = NULL; + } break; - case 125: /* sigelem: sigslurpelem */ -#line 925 "perly.y" - { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } + case 123: /* sigscalarelem: PERLY_DOLLAR sigvarname ASSIGNOP */ +#line 849 "perly.y" + { + subsignature_append_positional((ps[-1].val.opval), (ps[0].val.ival), newOP(OP_NULL, 0)); + (yyval.opval) = NULL; + } break; - case 126: /* siglist: siglist PERLY_COMMA */ -#line 931 "perly.y" - { (yyval.opval) = (ps[-1].val.opval); } + case 124: /* sigscalarelem: PERLY_DOLLAR sigvarname ASSIGNOP term */ +#line 854 "perly.y" + { + subsignature_append_positional((ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); + (yyval.opval) = NULL; + } break; - case 127: /* siglist: siglist PERLY_COMMA sigelem */ -#line 933 "perly.y" - { - (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval)); - } + case 125: /* sigelem: sigscalarelem */ +#line 863 "perly.y" + { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; - case 128: /* siglist: sigelem */ -#line 937 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } + case 126: /* sigelem: sigslurpelem */ +#line 865 "perly.y" + { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; - case 133: /* subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE */ -#line 954 "perly.y" + case 134: /* subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE */ +#line 891 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 134: /* $@20: %empty */ -#line 957 "perly.y" + case 135: /* $@20: %empty */ +#line 894 "perly.y" { ENTER; - SAVEIV(parser->sig_elems); - SAVEIV(parser->sig_optelems); - SAVEI8(parser->sig_slurpy); - parser->sig_elems = 0; - parser->sig_optelems = 0; - parser->sig_slurpy = 0; - parser->in_my = KEY_sigvar; + subsignature_start(); + parser->in_my = KEY_sigvar; } break; - case 135: /* subsigguts: $@20 optsiglist */ -#line 968 "perly.y" + case 136: /* subsigguts: $@20 optsiglist */ +#line 900 "perly.y" { - OP *sigops = (ps[0].val.opval); - struct op_argcheck_aux *aux; - OP *check; - if (!FEATURE_SIGNATURES_IS_ENABLED && !CvIsMETHOD(PL_compcv)) Perl_croak(aTHX_ "Experimental " "subroutine signatures not enabled"); /* We shouldn't get here otherwise */ - aux = (struct op_argcheck_aux*) - PerlMemShared_malloc( - sizeof(struct op_argcheck_aux)); - aux->params = parser->sig_elems; - aux->opt_params = parser->sig_optelems; - aux->slurpy = parser->sig_slurpy; - check = newUNOP_AUX(OP_ARGCHECK, 0, NULL, - (UNOP_AUX_item *)aux); - sigops = op_prepend_elem(OP_LINESEQ, check, sigops); - sigops = op_prepend_elem(OP_LINESEQ, - newSTATEOP(0, NULL, NULL), - sigops); - /* a nextstate at the end handles context - * correctly for an empty sub body */ - sigops = op_append_elem(OP_LINESEQ, - sigops, - newSTATEOP(0, NULL, NULL)); - /* wrap the list of arg ops in a NULL aux op. - This serves two purposes. First, it makes - the arg list a separate subtree from the - body of the sub, and secondly the null op - may in future be upgraded to an OP_SIGNATURE - when implemented. For now leave it as - ex-argcheck */ - (yyval.opval) = newUNOP_AUX(OP_ARGCHECK, 0, sigops, NULL); - op_null((yyval.opval)); + (yyval.opval) = subsignature_finish(); CvSIGNATURE_on(PL_compcv); @@ -1139,14 +1038,14 @@ case 2: /* @1: %empty */ break; - case 137: /* optsubbody: PERLY_SEMICOLON */ -#line 1025 "perly.y" + case 138: /* optsubbody: PERLY_SEMICOLON */ +#line 928 "perly.y" { (yyval.opval) = NULL; } break; - case 138: /* subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE */ -#line 1031 "perly.y" + case 139: /* subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE */ +#line 934 "perly.y" { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); @@ -1155,20 +1054,20 @@ case 2: /* @1: %empty */ break; - case 140: /* optsigsubbody: PERLY_SEMICOLON */ -#line 1043 "perly.y" + case 141: /* optsigsubbody: PERLY_SEMICOLON */ +#line 946 "perly.y" { (yyval.opval) = NULL; } break; - case 141: /* $@21: %empty */ -#line 1048 "perly.y" + case 142: /* $@21: %empty */ +#line 951 "perly.y" { PL_parser->sig_seen = FALSE; } break; - case 142: /* sigsubbody: remember optsubsignature PERLY_BRACE_OPEN $@21 stmtseq PERLY_BRACE_CLOSE */ -#line 1050 "perly.y" + case 143: /* sigsubbody: remember optsubsignature PERLY_BRACE_OPEN $@21 stmtseq PERLY_BRACE_CLOSE */ +#line 953 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); @@ -1178,38 +1077,38 @@ case 2: /* @1: %empty */ break; - case 143: /* expr: expr ANDOP expr */ -#line 1061 "perly.y" + case 144: /* expr: expr ANDOP expr */ +#line 964 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 144: /* expr: expr PLUGIN_LOGICAL_AND_LOW_OP expr */ -#line 1063 "perly.y" + case 145: /* expr: expr PLUGIN_LOGICAL_AND_LOW_OP expr */ +#line 966 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 145: /* expr: expr OROP expr */ -#line 1065 "perly.y" + case 146: /* expr: expr OROP expr */ +#line 968 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 146: /* expr: expr PLUGIN_LOGICAL_OR_LOW_OP expr */ -#line 1067 "perly.y" + case 147: /* expr: expr PLUGIN_LOGICAL_OR_LOW_OP expr */ +#line 970 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 148: /* listexpr: listexpr PERLY_COMMA */ -#line 1073 "perly.y" + case 149: /* listexpr: listexpr PERLY_COMMA */ +#line 976 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 149: /* listexpr: listexpr PERLY_COMMA term */ -#line 1075 "perly.y" + case 150: /* listexpr: listexpr PERLY_COMMA term */ +#line 978 "perly.y" { OP* term = (ps[0].val.opval); (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term); @@ -1217,32 +1116,32 @@ case 2: /* @1: %empty */ break; - case 151: /* listop: LSTOP indirob listexpr */ -#line 1084 "perly.y" + case 152: /* listop: LSTOP indirob listexpr */ +#line 987 "perly.y" { (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 152: /* listop: BLKLSTOP block listexpr */ -#line 1088 "perly.y" + case 153: /* listop: BLKLSTOP block listexpr */ +#line 991 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newUNOP(OP_NULL, 0, op_scope((ps[-1].val.opval))), (ps[0].val.opval)) ); } break; - case 153: /* listop: FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE */ -#line 1092 "perly.y" + case 154: /* listop: FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE */ +#line 995 "perly.y" { (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 154: /* listop: term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1096 "perly.y" + case 155: /* listop: term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ +#line 999 "perly.y" { (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)), @@ -1251,8 +1150,8 @@ case 2: /* @1: %empty */ break; - case 155: /* listop: term ARROW methodname */ -#line 1102 "perly.y" + case 156: /* listop: term ARROW methodname */ +#line 1005 "perly.y" { (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)))); @@ -1260,8 +1159,8 @@ case 2: /* @1: %empty */ break; - case 156: /* listop: METHCALL0 indirob optlistexpr */ -#line 1107 "perly.y" + case 157: /* listop: METHCALL0 indirob optlistexpr */ +#line 1010 "perly.y" { (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)), @@ -1270,8 +1169,8 @@ case 2: /* @1: %empty */ break; - case 157: /* listop: METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1113 "perly.y" + case 158: /* listop: METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ +#line 1016 "perly.y" { (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)), @@ -1280,26 +1179,26 @@ case 2: /* @1: %empty */ break; - case 158: /* listop: LSTOP optlistexpr */ -#line 1119 "perly.y" + case 159: /* listop: LSTOP optlistexpr */ +#line 1022 "perly.y" { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 159: /* listop: FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1121 "perly.y" + case 160: /* listop: FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ +#line 1024 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 160: /* listop: FUNC SUBLEXSTART optexpr SUBLEXEND */ -#line 1123 "perly.y" + case 161: /* listop: FUNC SUBLEXSTART optexpr SUBLEXEND */ +#line 1026 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 161: /* @22: %empty */ -#line 1125 "perly.y" + case 162: /* @22: %empty */ +#line 1028 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); /* prevent double op_free() if the following fails to parse */ @@ -1308,8 +1207,8 @@ case 2: /* @1: %empty */ break; - case 162: /* listop: LSTOPSUB startanonsub block @22 optlistexpr */ -#line 1131 "perly.y" + case 163: /* listop: LSTOPSUB startanonsub block @22 optlistexpr */ +#line 1034 "perly.y" { (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))); @@ -1317,21 +1216,21 @@ case 2: /* @1: %empty */ break; - case 165: /* subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1146 "perly.y" + case 166: /* subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1049 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } break; - case 166: /* subscripted: scalar PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1148 "perly.y" + case 167: /* subscripted: scalar PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1051 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); } break; - case 167: /* subscripted: term ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1151 "perly.y" + case 168: /* subscripted: term ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1054 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-4].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1339,8 +1238,8 @@ case 2: /* @1: %empty */ break; - case 168: /* subscripted: subscripted PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1156 "perly.y" + case 169: /* subscripted: subscripted PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1059 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-3].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1348,31 +1247,31 @@ case 2: /* @1: %empty */ break; - case 169: /* subscripted: scalar PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1161 "perly.y" + case 170: /* subscripted: scalar PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1064 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); } break; - case 170: /* subscripted: term ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1164 "perly.y" + case 171: /* subscripted: term ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1067 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-5].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; - case 171: /* subscripted: subscripted PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1168 "perly.y" + case 172: /* subscripted: subscripted PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1071 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-4].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; - case 172: /* subscripted: term ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1172 "perly.y" + case 173: /* subscripted: term ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1075 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-3].val.opval)))); if (parser->expect == XBLOCK) @@ -1381,8 +1280,8 @@ case 2: /* @1: %empty */ break; - case 173: /* subscripted: term ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1178 "perly.y" + case 174: /* subscripted: term ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1081 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-4].val.opval))))); @@ -1392,8 +1291,8 @@ case 2: /* @1: %empty */ break; - case 174: /* subscripted: subscripted PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1186 "perly.y" + case 175: /* subscripted: subscripted PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1089 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-3].val.opval))))); @@ -1403,8 +1302,8 @@ case 2: /* @1: %empty */ break; - case 175: /* subscripted: subscripted PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1193 "perly.y" + case 176: /* subscripted: subscripted PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1096 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-2].val.opval)))); if (parser->expect == XBLOCK) @@ -1413,56 +1312,56 @@ case 2: /* @1: %empty */ break; - case 176: /* subscripted: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1199 "perly.y" + case 177: /* subscripted: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1102 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } break; - case 177: /* subscripted: QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1201 "perly.y" + case 178: /* subscripted: QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1104 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } break; - case 178: /* subscripted: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1203 "perly.y" + case 179: /* subscripted: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1106 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } break; - case 179: /* termbinop: term PLUGIN_HIGH_OP term */ -#line 1208 "perly.y" + case 180: /* termbinop: term PLUGIN_HIGH_OP term */ +#line 1111 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 180: /* termbinop: term ASSIGNOP term */ -#line 1210 "perly.y" + case 181: /* termbinop: term ASSIGNOP term */ +#line 1113 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } break; - case 181: /* termbinop: term PLUGIN_ASSIGN_OP term */ -#line 1212 "perly.y" + case 182: /* termbinop: term PLUGIN_ASSIGN_OP term */ +#line 1115 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 182: /* termbinop: term POWOP term */ -#line 1214 "perly.y" + case 183: /* termbinop: term POWOP term */ +#line 1117 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 183: /* termbinop: term PLUGIN_POW_OP term */ -#line 1216 "perly.y" + case 184: /* termbinop: term PLUGIN_POW_OP term */ +#line 1119 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 184: /* termbinop: term MULOP term */ -#line 1218 "perly.y" + case 185: /* termbinop: term MULOP term */ +#line 1121 "perly.y" { 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))); @@ -1470,220 +1369,220 @@ case 2: /* @1: %empty */ break; - case 185: /* termbinop: term PLUGIN_MUL_OP term */ -#line 1223 "perly.y" + case 186: /* termbinop: term PLUGIN_MUL_OP term */ +#line 1126 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 186: /* termbinop: term ADDOP term */ -#line 1225 "perly.y" + case 187: /* termbinop: term ADDOP term */ +#line 1128 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 187: /* termbinop: term PLUGIN_ADD_OP term */ -#line 1227 "perly.y" + case 188: /* termbinop: term PLUGIN_ADD_OP term */ +#line 1130 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 188: /* termbinop: term SHIFTOP term */ -#line 1229 "perly.y" + case 189: /* termbinop: term SHIFTOP term */ +#line 1132 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 189: /* termbinop: termrelop */ -#line 1231 "perly.y" + case 190: /* termbinop: termrelop */ +#line 1134 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 190: /* termbinop: termeqop */ -#line 1233 "perly.y" + case 191: /* termbinop: termeqop */ +#line 1136 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 191: /* termbinop: term BITANDOP term */ -#line 1235 "perly.y" + case 192: /* termbinop: term BITANDOP term */ +#line 1138 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 192: /* termbinop: term BITOROP term */ -#line 1237 "perly.y" + case 193: /* termbinop: term BITOROP term */ +#line 1140 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 193: /* termbinop: term DOTDOT term */ -#line 1239 "perly.y" + case 194: /* termbinop: term DOTDOT term */ +#line 1142 "perly.y" { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 194: /* termbinop: term ANDAND term */ -#line 1241 "perly.y" + case 195: /* termbinop: term ANDAND term */ +#line 1144 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 195: /* termbinop: term PLUGIN_LOGICAL_AND_OP term */ -#line 1243 "perly.y" + case 196: /* termbinop: term PLUGIN_LOGICAL_AND_OP term */ +#line 1146 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 196: /* termbinop: term OROR term */ -#line 1245 "perly.y" + case 197: /* termbinop: term OROR term */ +#line 1148 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 197: /* termbinop: term PLUGIN_LOGICAL_OR_OP term */ -#line 1247 "perly.y" + case 198: /* termbinop: term PLUGIN_LOGICAL_OR_OP term */ +#line 1150 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 198: /* termbinop: term DORDOR term */ -#line 1249 "perly.y" + case 199: /* termbinop: term DORDOR term */ +#line 1152 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 199: /* termbinop: term MATCHOP term */ -#line 1251 "perly.y" + case 200: /* termbinop: term MATCHOP term */ +#line 1154 "perly.y" { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 200: /* termbinop: term PLUGIN_LOW_OP term */ -#line 1253 "perly.y" + case 201: /* termbinop: term PLUGIN_LOW_OP term */ +#line 1156 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 201: /* termrelop: relopchain */ -#line 1257 "perly.y" + case 202: /* termrelop: relopchain */ +#line 1160 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; - case 202: /* termrelop: term NCRELOP term */ -#line 1259 "perly.y" + case 203: /* termrelop: term NCRELOP term */ +#line 1162 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 203: /* termrelop: termrelop NCRELOP */ -#line 1261 "perly.y" + case 204: /* termrelop: termrelop NCRELOP */ +#line 1164 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 204: /* termrelop: termrelop CHRELOP */ -#line 1263 "perly.y" + case 205: /* termrelop: termrelop CHRELOP */ +#line 1166 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 205: /* termrelop: term PLUGIN_REL_OP term */ -#line 1265 "perly.y" + case 206: /* termrelop: term PLUGIN_REL_OP term */ +#line 1168 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; - case 206: /* relopchain: term CHRELOP term */ -#line 1269 "perly.y" + case 207: /* relopchain: term CHRELOP term */ +#line 1172 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 207: /* relopchain: relopchain CHRELOP term */ -#line 1271 "perly.y" + case 208: /* relopchain: relopchain CHRELOP term */ +#line 1174 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 208: /* termeqop: eqopchain */ -#line 1275 "perly.y" + case 209: /* termeqop: eqopchain */ +#line 1178 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; - case 209: /* termeqop: term NCEQOP term */ -#line 1277 "perly.y" + case 210: /* termeqop: term NCEQOP term */ +#line 1180 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; - case 210: /* termeqop: termeqop NCEQOP */ -#line 1279 "perly.y" + case 211: /* termeqop: termeqop NCEQOP */ +#line 1182 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 211: /* termeqop: termeqop CHEQOP */ -#line 1281 "perly.y" + case 212: /* termeqop: termeqop CHEQOP */ +#line 1184 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 212: /* eqopchain: term CHEQOP term */ -#line 1285 "perly.y" + case 213: /* eqopchain: term CHEQOP term */ +#line 1188 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 213: /* eqopchain: eqopchain CHEQOP term */ -#line 1287 "perly.y" + case 214: /* eqopchain: eqopchain CHEQOP term */ +#line 1190 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 214: /* termunop: PERLY_MINUS term */ -#line 1292 "perly.y" + case 215: /* termunop: PERLY_MINUS term */ +#line 1195 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } break; - case 215: /* termunop: PERLY_PLUS term */ -#line 1294 "perly.y" + case 216: /* termunop: PERLY_PLUS term */ +#line 1197 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 216: /* termunop: PERLY_EXCLAMATION_MARK term */ -#line 1297 "perly.y" + case 217: /* termunop: PERLY_EXCLAMATION_MARK term */ +#line 1200 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 217: /* termunop: PERLY_TILDE term */ -#line 1299 "perly.y" + case 218: /* termunop: PERLY_TILDE term */ +#line 1202 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } break; - case 218: /* termunop: term POSTINC */ -#line 1301 "perly.y" + case 219: /* termunop: term POSTINC */ +#line 1204 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); } break; - case 219: /* termunop: term POSTDEC */ -#line 1304 "perly.y" + case 220: /* termunop: term POSTDEC */ +#line 1207 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));} break; - case 220: /* termunop: term POSTJOIN */ -#line 1307 "perly.y" + case 221: /* termunop: term POSTJOIN */ +#line 1210 "perly.y" { (yyval.opval) = op_convert_list(OP_JOIN, 0, op_append_elem( OP_LIST, @@ -1697,48 +1596,48 @@ case 2: /* @1: %empty */ break; - case 221: /* termunop: PREINC term */ -#line 1318 "perly.y" + case 222: /* termunop: PREINC term */ +#line 1221 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); } break; - case 222: /* termunop: PREDEC term */ -#line 1321 "perly.y" + case 223: /* termunop: PREDEC term */ +#line 1224 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); } break; - case 223: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */ -#line 1329 "perly.y" + case 224: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */ +#line 1232 "perly.y" { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } break; - case 224: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1331 "perly.y" + case 225: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1234 "perly.y" { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } break; - case 225: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */ -#line 1333 "perly.y" + case 226: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */ +#line 1236 "perly.y" { 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 226: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */ -#line 1336 "perly.y" + case 227: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */ +#line 1239 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); } break; - case 227: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */ -#line 1339 "perly.y" + case 228: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */ +#line 1242 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); @@ -1746,98 +1645,98 @@ case 2: /* @1: %empty */ break; - case 228: /* termdo: KW_DO term */ -#line 1347 "perly.y" + case 229: /* termdo: KW_DO term */ +#line 1250 "perly.y" { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} break; - case 229: /* termdo: KW_DO block */ -#line 1349 "perly.y" + case 230: /* termdo: KW_DO block */ +#line 1252 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} break; - case 234: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */ -#line 1357 "perly.y" + case 235: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */ +#line 1260 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 235: /* term: REFGEN term */ -#line 1359 "perly.y" + case 236: /* term: REFGEN term */ +#line 1262 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } break; - case 236: /* term: myattrterm */ -#line 1361 "perly.y" + case 237: /* term: myattrterm */ +#line 1264 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 237: /* term: KW_LOCAL term */ -#line 1363 "perly.y" + case 238: /* term: KW_LOCAL term */ +#line 1266 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),0); } break; - case 238: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1365 "perly.y" + case 239: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1268 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 239: /* term: QWLIST */ -#line 1367 "perly.y" + case 240: /* term: QWLIST */ +#line 1270 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 240: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1369 "perly.y" + case 241: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1272 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 241: /* term: scalar */ -#line 1371 "perly.y" + case 242: /* term: scalar */ +#line 1274 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 242: /* term: star */ -#line 1373 "perly.y" + case 243: /* term: star */ +#line 1276 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 243: /* term: hsh */ -#line 1375 "perly.y" + case 244: /* term: hsh */ +#line 1278 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 244: /* term: ary */ -#line 1377 "perly.y" + case 245: /* term: ary */ +#line 1280 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 245: /* term: arylen */ -#line 1379 "perly.y" + case 246: /* term: arylen */ +#line 1282 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} break; - case 246: /* term: subscripted */ -#line 1381 "perly.y" + case 247: /* term: subscripted */ +#line 1284 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 247: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1383 "perly.y" + case 248: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1286 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1850,8 +1749,8 @@ case 2: /* @1: %empty */ break; - case 248: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1393 "perly.y" + case 249: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1296 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1864,8 +1763,8 @@ case 2: /* @1: %empty */ break; - case 249: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1403 "perly.y" + case 250: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1306 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1878,8 +1777,8 @@ case 2: /* @1: %empty */ break; - case 250: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1413 "perly.y" + case 251: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1316 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1892,27 +1791,27 @@ case 2: /* @1: %empty */ break; - case 251: /* term: THING */ -#line 1423 "perly.y" + case 252: /* term: THING */ +#line 1326 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 252: /* term: amper */ -#line 1425 "perly.y" + case 253: /* term: amper */ +#line 1328 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } break; - case 253: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1427 "perly.y" + case 254: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1330 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); } break; - case 254: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1430 "perly.y" + case 255: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1333 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval)))); @@ -1920,153 +1819,153 @@ case 2: /* @1: %empty */ break; - case 255: /* term: NOAMP subname optlistexpr */ -#line 1435 "perly.y" + case 256: /* term: NOAMP subname optlistexpr */ +#line 1338 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 256: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */ -#line 1439 "perly.y" + case 257: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */ +#line 1342 "perly.y" { (yyval.opval) = newSVREF((ps[-3].val.opval)); } break; - case 257: /* term: term ARROW PERLY_SNAIL PERLY_STAR */ -#line 1441 "perly.y" + case 258: /* term: term ARROW PERLY_SNAIL PERLY_STAR */ +#line 1344 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 258: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */ -#line 1443 "perly.y" + case 259: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */ +#line 1346 "perly.y" { (yyval.opval) = newHVREF((ps[-3].val.opval)); } break; - case 259: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */ -#line 1445 "perly.y" + case 260: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */ +#line 1348 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); } break; - case 260: /* term: term ARROW PERLY_STAR PERLY_STAR */ -#line 1448 "perly.y" + case 261: /* term: term ARROW PERLY_STAR PERLY_STAR */ +#line 1351 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } break; - case 261: /* term: LOOPEX */ -#line 1450 "perly.y" + case 262: /* term: LOOPEX */ +#line 1353 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; - case 262: /* term: LOOPEX term */ -#line 1453 "perly.y" + case 263: /* term: LOOPEX term */ +#line 1356 "perly.y" { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 263: /* term: NOTOP listexpr */ -#line 1455 "perly.y" + case 264: /* term: NOTOP listexpr */ +#line 1358 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 264: /* term: UNIOP */ -#line 1457 "perly.y" + case 265: /* term: UNIOP */ +#line 1360 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 265: /* term: UNIOP block */ -#line 1459 "perly.y" + case 266: /* term: UNIOP block */ +#line 1362 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 266: /* term: UNIOP term */ -#line 1461 "perly.y" + case 267: /* term: UNIOP term */ +#line 1364 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 267: /* term: KW_REQUIRE */ -#line 1463 "perly.y" + case 268: /* term: KW_REQUIRE */ +#line 1366 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } break; - case 268: /* term: KW_REQUIRE term */ -#line 1465 "perly.y" + case 269: /* term: KW_REQUIRE term */ +#line 1368 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } break; - case 269: /* term: UNIOPSUB */ -#line 1467 "perly.y" + case 270: /* term: UNIOPSUB */ +#line 1370 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 270: /* term: UNIOPSUB term */ -#line 1469 "perly.y" + case 271: /* term: UNIOPSUB term */ +#line 1372 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 271: /* term: FUNC0 */ -#line 1472 "perly.y" + case 272: /* term: FUNC0 */ +#line 1375 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 272: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1474 "perly.y" + case 273: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1377 "perly.y" { (yyval.opval) = newOP((ps[-2].val.ival), 0);} break; - case 273: /* term: FUNC0OP */ -#line 1476 "perly.y" + case 274: /* term: FUNC0OP */ +#line 1379 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 274: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1478 "perly.y" + case 275: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1381 "perly.y" { (yyval.opval) = (ps[-2].val.opval); } break; - case 275: /* term: FUNC0SUB */ -#line 1480 "perly.y" + case 276: /* term: FUNC0SUB */ +#line 1383 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 276: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1482 "perly.y" + case 277: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1385 "perly.y" { (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 277: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1486 "perly.y" + case 278: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1389 "perly.y" { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 278: /* @23: %empty */ -#line 1488 "perly.y" + case 279: /* @23: %empty */ +#line 1391 "perly.y" { if ( (ps[0].val.opval)->op_type != OP_TRANS && (ps[0].val.opval)->op_type != OP_TRANSR @@ -2080,68 +1979,68 @@ case 2: /* @1: %empty */ break; - case 279: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */ -#line 1499 "perly.y" + case 280: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */ +#line 1402 "perly.y" { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } break; - case 283: /* myattrterm: KW_MY myterm myattrlist */ -#line 1508 "perly.y" + case 284: /* myattrterm: KW_MY myterm myattrlist */ +#line 1411 "perly.y" { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } break; - case 284: /* myattrterm: KW_MY myterm */ -#line 1510 "perly.y" + case 285: /* myattrterm: KW_MY myterm */ +#line 1413 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),1); } break; - case 285: /* myattrterm: KW_MY REFGEN myterm myattrlist */ -#line 1512 "perly.y" + case 286: /* myattrterm: KW_MY REFGEN myterm myattrlist */ +#line 1415 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } break; - case 286: /* myattrterm: KW_MY REFGEN term */ -#line 1514 "perly.y" + case 287: /* myattrterm: KW_MY REFGEN term */ +#line 1417 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } break; - case 287: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1519 "perly.y" + case 288: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1422 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 288: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1521 "perly.y" + case 289: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1424 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 289: /* myterm: scalar */ -#line 1524 "perly.y" + case 290: /* myterm: scalar */ +#line 1427 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 290: /* myterm: hsh */ -#line 1526 "perly.y" + case 291: /* myterm: hsh */ +#line 1429 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 291: /* myterm: ary */ -#line 1528 "perly.y" + case 292: /* myterm: ary */ +#line 1431 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 292: /* fieldvar: scalar */ -#line 1533 "perly.y" + case 293: /* fieldvar: scalar */ +#line 1436 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2149,8 +2048,8 @@ case 2: /* @1: %empty */ break; - case 293: /* fieldvar: hsh */ -#line 1538 "perly.y" + case 294: /* fieldvar: hsh */ +#line 1441 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2158,8 +2057,8 @@ case 2: /* @1: %empty */ break; - case 294: /* fieldvar: ary */ -#line 1543 "perly.y" + case 295: /* fieldvar: ary */ +#line 1446 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2167,20 +2066,20 @@ case 2: /* @1: %empty */ break; - case 295: /* optfieldattrlist: COLONATTR THING */ -#line 1551 "perly.y" + case 296: /* optfieldattrlist: COLONATTR THING */ +#line 1454 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 296: /* optfieldattrlist: COLONATTR */ -#line 1553 "perly.y" + case 297: /* optfieldattrlist: COLONATTR */ +#line 1456 "perly.y" { (yyval.opval) = NULL; } break; - case 298: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */ -#line 1559 "perly.y" + case 299: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */ +#line 1462 "perly.y" { parser->in_my = 0; if((ps[0].val.opval)) @@ -2190,8 +2089,8 @@ case 2: /* @1: %empty */ break; - case 299: /* $@24: %empty */ -#line 1566 "perly.y" + case 300: /* $@24: %empty */ +#line 1469 "perly.y" { parser->in_my = 0; if((ps[-1].val.opval)) @@ -2202,8 +2101,8 @@ case 2: /* @1: %empty */ break; - case 300: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */ -#line 1574 "perly.y" + case 301: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */ +#line 1477 "perly.y" { class_set_field_defop((PADNAME *)(ps[-4].val.pval), (ps[-2].val.ival), (ps[0].val.opval)); LEAVE; @@ -2212,122 +2111,122 @@ case 2: /* @1: %empty */ break; - case 306: /* optrepl: PERLY_SLASH expr */ -#line 1594 "perly.y" + case 307: /* optrepl: PERLY_SLASH expr */ +#line 1497 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 307: /* my_scalar: scalar */ -#line 1600 "perly.y" + case 308: /* my_scalar: scalar */ +#line 1503 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; - case 308: /* list_of_scalars: list_of_scalars PERLY_COMMA */ -#line 1605 "perly.y" + case 309: /* list_of_scalars: list_of_scalars PERLY_COMMA */ +#line 1508 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 309: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */ -#line 1607 "perly.y" + case 310: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */ +#line 1510 "perly.y" { (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 311: /* my_list_of_scalars: list_of_scalars */ -#line 1614 "perly.y" + case 312: /* my_list_of_scalars: list_of_scalars */ +#line 1517 "perly.y" { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; - case 319: /* amper: PERLY_AMPERSAND indirob */ -#line 1631 "perly.y" + case 320: /* amper: PERLY_AMPERSAND indirob */ +#line 1534 "perly.y" { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 320: /* scalar: PERLY_DOLLAR indirob */ -#line 1635 "perly.y" + case 321: /* scalar: PERLY_DOLLAR indirob */ +#line 1538 "perly.y" { (yyval.opval) = newSVREF((ps[0].val.opval)); } break; - case 321: /* ary: PERLY_SNAIL indirob */ -#line 1639 "perly.y" + case 322: /* ary: PERLY_SNAIL indirob */ +#line 1542 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 322: /* hsh: PERLY_PERCENT_SIGN indirob */ -#line 1645 "perly.y" + case 323: /* hsh: PERLY_PERCENT_SIGN indirob */ +#line 1548 "perly.y" { (yyval.opval) = newHVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 323: /* arylen: DOLSHARP indirob */ -#line 1651 "perly.y" + case 324: /* arylen: DOLSHARP indirob */ +#line 1554 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); } break; - case 324: /* arylen: term ARROW DOLSHARP PERLY_STAR */ -#line 1653 "perly.y" + case 325: /* arylen: term ARROW DOLSHARP PERLY_STAR */ +#line 1556 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 325: /* star: PERLY_STAR indirob */ -#line 1657 "perly.y" + case 326: /* star: PERLY_STAR indirob */ +#line 1560 "perly.y" { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } break; - case 327: /* sliceme: term ARROW PERLY_SNAIL */ -#line 1662 "perly.y" + case 328: /* sliceme: term ARROW PERLY_SNAIL */ +#line 1565 "perly.y" { (yyval.opval) = newAVREF((ps[-2].val.opval)); } break; - case 329: /* kvslice: term ARROW PERLY_PERCENT_SIGN */ -#line 1667 "perly.y" + case 330: /* kvslice: term ARROW PERLY_PERCENT_SIGN */ +#line 1570 "perly.y" { (yyval.opval) = newHVREF((ps[-2].val.opval)); } break; - case 331: /* gelem: term ARROW PERLY_STAR */ -#line 1672 "perly.y" + case 332: /* gelem: term ARROW PERLY_STAR */ +#line 1575 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } break; - case 332: /* indirob: BAREWORD */ -#line 1677 "perly.y" + case 333: /* indirob: BAREWORD */ +#line 1580 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 333: /* indirob: scalar */ -#line 1679 "perly.y" + case 334: /* indirob: scalar */ +#line 1582 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 334: /* indirob: block */ -#line 1681 "perly.y" + case 335: /* indirob: block */ +#line 1584 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; - case 335: /* indirob: PRIVATEREF */ -#line 1684 "perly.y" + case 336: /* indirob: PRIVATEREF */ +#line 1587 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; @@ -2339,6 +2238,6 @@ case 2: /* @1: %empty */ /* Generated from: - * cdef9ff44874bfb2f6175adcd920473f8c6601794f20f7977a13e1c2e2be5e26 perly.y + * 59c1b0d8db6eb03422c4aa700803c201837a9c4085a3177364c2eda6cbeb7cc7 perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.h b/perly.h index 54e8f9750883..4fd7a4acaf22 100644 --- a/perly.h +++ b/perly.h @@ -241,6 +241,6 @@ int yyparse (void); /* Generated from: - * cdef9ff44874bfb2f6175adcd920473f8c6601794f20f7977a13e1c2e2be5e26 perly.y + * 59c1b0d8db6eb03422c4aa700803c201837a9c4085a3177364c2eda6cbeb7cc7 perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.tab b/perly.tab index 1ad0130de9d3..9d769a2778a8 100644 --- a/perly.tab +++ b/perly.tab @@ -196,61 +196,60 @@ enum yysymbol_kind_t YYSYMBOL_sigvarname = 185, /* sigvarname */ YYSYMBOL_sigslurpsigil = 186, /* sigslurpsigil */ YYSYMBOL_sigslurpelem = 187, /* sigslurpelem */ - YYSYMBOL_sigdefault = 188, /* sigdefault */ - YYSYMBOL_sigscalarelem = 189, /* sigscalarelem */ - YYSYMBOL_sigelem = 190, /* sigelem */ - YYSYMBOL_siglist = 191, /* siglist */ - YYSYMBOL_optsiglist = 192, /* optsiglist */ - YYSYMBOL_optsubsignature = 193, /* optsubsignature */ - YYSYMBOL_subsignature = 194, /* subsignature */ - YYSYMBOL_subsigguts = 195, /* subsigguts */ - YYSYMBOL_196_20 = 196, /* $@20 */ - YYSYMBOL_optsubbody = 197, /* optsubbody */ - YYSYMBOL_subbody = 198, /* subbody */ - YYSYMBOL_optsigsubbody = 199, /* optsigsubbody */ - YYSYMBOL_sigsubbody = 200, /* sigsubbody */ - YYSYMBOL_201_21 = 201, /* $@21 */ - YYSYMBOL_expr = 202, /* expr */ - YYSYMBOL_listexpr = 203, /* listexpr */ - YYSYMBOL_listop = 204, /* listop */ - YYSYMBOL_205_22 = 205, /* @22 */ - YYSYMBOL_methodname = 206, /* methodname */ - YYSYMBOL_subscripted = 207, /* subscripted */ - YYSYMBOL_termbinop = 208, /* termbinop */ - YYSYMBOL_termrelop = 209, /* termrelop */ - YYSYMBOL_relopchain = 210, /* relopchain */ - YYSYMBOL_termeqop = 211, /* termeqop */ - YYSYMBOL_eqopchain = 212, /* eqopchain */ - YYSYMBOL_termunop = 213, /* termunop */ - YYSYMBOL_anonymous = 214, /* anonymous */ - YYSYMBOL_termdo = 215, /* termdo */ - YYSYMBOL_term = 216, /* term */ - YYSYMBOL_217_23 = 217, /* @23 */ - YYSYMBOL_myattrterm = 218, /* myattrterm */ - YYSYMBOL_myterm = 219, /* myterm */ - YYSYMBOL_fieldvar = 220, /* fieldvar */ - YYSYMBOL_optfieldattrlist = 221, /* optfieldattrlist */ - YYSYMBOL_fielddecl = 222, /* fielddecl */ - YYSYMBOL_223_24 = 223, /* $@24 */ - YYSYMBOL_optlistexpr = 224, /* optlistexpr */ - YYSYMBOL_optexpr = 225, /* optexpr */ - YYSYMBOL_optrepl = 226, /* optrepl */ - YYSYMBOL_my_scalar = 227, /* my_scalar */ - YYSYMBOL_list_of_scalars = 228, /* list_of_scalars */ - YYSYMBOL_my_list_of_scalars = 229, /* my_list_of_scalars */ - YYSYMBOL_my_var = 230, /* my_var */ - YYSYMBOL_refgen_topic = 231, /* refgen_topic */ - YYSYMBOL_my_refgen = 232, /* my_refgen */ - YYSYMBOL_amper = 233, /* amper */ - YYSYMBOL_scalar = 234, /* scalar */ - YYSYMBOL_ary = 235, /* ary */ - YYSYMBOL_hsh = 236, /* hsh */ - YYSYMBOL_arylen = 237, /* arylen */ - YYSYMBOL_star = 238, /* star */ - YYSYMBOL_sliceme = 239, /* sliceme */ - YYSYMBOL_kvslice = 240, /* kvslice */ - YYSYMBOL_gelem = 241, /* gelem */ - YYSYMBOL_indirob = 242 /* indirob */ + YYSYMBOL_sigscalarelem = 188, /* sigscalarelem */ + YYSYMBOL_sigelem = 189, /* sigelem */ + YYSYMBOL_siglist = 190, /* siglist */ + YYSYMBOL_optsiglist = 191, /* optsiglist */ + YYSYMBOL_optsubsignature = 192, /* optsubsignature */ + YYSYMBOL_subsignature = 193, /* subsignature */ + YYSYMBOL_subsigguts = 194, /* subsigguts */ + YYSYMBOL_195_20 = 195, /* $@20 */ + YYSYMBOL_optsubbody = 196, /* optsubbody */ + YYSYMBOL_subbody = 197, /* subbody */ + YYSYMBOL_optsigsubbody = 198, /* optsigsubbody */ + YYSYMBOL_sigsubbody = 199, /* sigsubbody */ + YYSYMBOL_200_21 = 200, /* $@21 */ + YYSYMBOL_expr = 201, /* expr */ + YYSYMBOL_listexpr = 202, /* listexpr */ + YYSYMBOL_listop = 203, /* listop */ + YYSYMBOL_204_22 = 204, /* @22 */ + YYSYMBOL_methodname = 205, /* methodname */ + YYSYMBOL_subscripted = 206, /* subscripted */ + YYSYMBOL_termbinop = 207, /* termbinop */ + YYSYMBOL_termrelop = 208, /* termrelop */ + YYSYMBOL_relopchain = 209, /* relopchain */ + YYSYMBOL_termeqop = 210, /* termeqop */ + YYSYMBOL_eqopchain = 211, /* eqopchain */ + YYSYMBOL_termunop = 212, /* termunop */ + YYSYMBOL_anonymous = 213, /* anonymous */ + YYSYMBOL_termdo = 214, /* termdo */ + YYSYMBOL_term = 215, /* term */ + YYSYMBOL_216_23 = 216, /* @23 */ + YYSYMBOL_myattrterm = 217, /* myattrterm */ + YYSYMBOL_myterm = 218, /* myterm */ + YYSYMBOL_fieldvar = 219, /* fieldvar */ + YYSYMBOL_optfieldattrlist = 220, /* optfieldattrlist */ + YYSYMBOL_fielddecl = 221, /* fielddecl */ + YYSYMBOL_222_24 = 222, /* $@24 */ + YYSYMBOL_optlistexpr = 223, /* optlistexpr */ + YYSYMBOL_optexpr = 224, /* optexpr */ + YYSYMBOL_optrepl = 225, /* optrepl */ + YYSYMBOL_my_scalar = 226, /* my_scalar */ + YYSYMBOL_list_of_scalars = 227, /* list_of_scalars */ + YYSYMBOL_my_list_of_scalars = 228, /* my_list_of_scalars */ + YYSYMBOL_my_var = 229, /* my_var */ + YYSYMBOL_refgen_topic = 230, /* refgen_topic */ + YYSYMBOL_my_refgen = 231, /* my_refgen */ + YYSYMBOL_amper = 232, /* amper */ + YYSYMBOL_scalar = 233, /* scalar */ + YYSYMBOL_ary = 234, /* ary */ + YYSYMBOL_hsh = 235, /* hsh */ + YYSYMBOL_arylen = 236, /* arylen */ + YYSYMBOL_star = 237, /* star */ + YYSYMBOL_sliceme = 238, /* sliceme */ + YYSYMBOL_kvslice = 239, /* kvslice */ + YYSYMBOL_gelem = 240, /* gelem */ + YYSYMBOL_indirob = 241 /* indirob */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -259,16 +258,16 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; #define YYFINAL 16 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3641 +#define YYLAST 3666 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 129 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 114 +#define YYNNTS 113 /* YYNRULES -- Number of rules. */ -#define YYNRULES 335 +#define YYNRULES 336 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 657 +#define YYNSTATES 656 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 383 @@ -342,28 +341,28 @@ static const yytype_int16 yyrline[] = 709, 711, 716, 723, 724, 728, 732, 736, 741, 745, 749, 750, 753, 759, 764, 769, 775, 776, 781, 782, 787, 788, 795, 800, 802, 813, 815, 820, 822, 826, - 846, 847, 849, 862, 922, 924, 930, 932, 936, 942, - 943, 948, 949, 953, 957, 957, 1024, 1025, 1030, 1042, - 1043, 1048, 1047, 1060, 1062, 1064, 1066, 1068, 1072, 1074, - 1079, 1083, 1087, 1091, 1095, 1101, 1106, 1112, 1118, 1120, - 1122, 1125, 1124, 1138, 1139, 1143, 1147, 1150, 1155, 1160, - 1163, 1167, 1171, 1177, 1185, 1192, 1198, 1200, 1202, 1207, - 1209, 1211, 1213, 1215, 1217, 1222, 1224, 1226, 1228, 1230, - 1232, 1234, 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250, - 1252, 1256, 1258, 1260, 1262, 1264, 1268, 1270, 1274, 1276, - 1278, 1280, 1284, 1286, 1291, 1293, 1296, 1298, 1300, 1303, - 1306, 1317, 1320, 1328, 1330, 1332, 1335, 1338, 1346, 1348, - 1352, 1353, 1354, 1355, 1356, 1358, 1360, 1362, 1364, 1366, - 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1392, 1402, - 1412, 1422, 1424, 1426, 1429, 1434, 1438, 1440, 1442, 1444, - 1447, 1449, 1452, 1454, 1456, 1458, 1460, 1462, 1464, 1466, - 1468, 1471, 1473, 1475, 1477, 1479, 1481, 1485, 1488, 1487, - 1500, 1501, 1502, 1507, 1509, 1511, 1513, 1518, 1520, 1523, - 1525, 1527, 1532, 1537, 1542, 1550, 1552, 1554, 1558, 1566, - 1565, 1583, 1584, 1588, 1589, 1593, 1594, 1599, 1604, 1606, - 1610, 1613, 1617, 1618, 1619, 1622, 1623, 1626, 1627, 1630, - 1634, 1638, 1644, 1650, 1652, 1656, 1660, 1661, 1665, 1666, - 1670, 1671, 1676, 1678, 1680, 1683 + 831, 835, 843, 848, 853, 862, 864, 872, 873, 874, + 879, 880, 885, 886, 890, 894, 894, 927, 928, 933, + 945, 946, 951, 950, 963, 965, 967, 969, 971, 975, + 977, 982, 986, 990, 994, 998, 1004, 1009, 1015, 1021, + 1023, 1025, 1028, 1027, 1041, 1042, 1046, 1050, 1053, 1058, + 1063, 1066, 1070, 1074, 1080, 1088, 1095, 1101, 1103, 1105, + 1110, 1112, 1114, 1116, 1118, 1120, 1125, 1127, 1129, 1131, + 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, + 1153, 1155, 1159, 1161, 1163, 1165, 1167, 1171, 1173, 1177, + 1179, 1181, 1183, 1187, 1189, 1194, 1196, 1199, 1201, 1203, + 1206, 1209, 1220, 1223, 1231, 1233, 1235, 1238, 1241, 1249, + 1251, 1255, 1256, 1257, 1258, 1259, 1261, 1263, 1265, 1267, + 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, 1295, + 1305, 1315, 1325, 1327, 1329, 1332, 1337, 1341, 1343, 1345, + 1347, 1350, 1352, 1355, 1357, 1359, 1361, 1363, 1365, 1367, + 1369, 1371, 1374, 1376, 1378, 1380, 1382, 1384, 1388, 1391, + 1390, 1403, 1404, 1405, 1410, 1412, 1414, 1416, 1421, 1423, + 1426, 1428, 1430, 1435, 1440, 1445, 1453, 1455, 1457, 1461, + 1469, 1468, 1486, 1487, 1491, 1492, 1496, 1497, 1502, 1507, + 1509, 1513, 1516, 1520, 1521, 1522, 1525, 1526, 1529, 1530, + 1533, 1537, 1541, 1547, 1553, 1555, 1559, 1563, 1564, 1568, + 1569, 1573, 1574, 1579, 1581, 1583, 1586 }; #endif @@ -414,16 +413,16 @@ static const char *const yytname[] = "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "formname", "startsub", "startanonsub", "startanonmethod", "startformsub", "subname", "proto", "subattrlist", "myattrlist", "sigvarname", "sigslurpsigil", - "sigslurpelem", "sigdefault", "sigscalarelem", "sigelem", "siglist", - "optsiglist", "optsubsignature", "subsignature", "subsigguts", "$@20", - "optsubbody", "subbody", "optsigsubbody", "sigsubbody", "$@21", "expr", - "listexpr", "listop", "@22", "methodname", "subscripted", "termbinop", - "termrelop", "relopchain", "termeqop", "eqopchain", "termunop", - "anonymous", "termdo", "term", "@23", "myattrterm", "myterm", "fieldvar", - "optfieldattrlist", "fielddecl", "$@24", "optlistexpr", "optexpr", - "optrepl", "my_scalar", "list_of_scalars", "my_list_of_scalars", - "my_var", "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", - "arylen", "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR + "sigslurpelem", "sigscalarelem", "sigelem", "siglist", "optsiglist", + "optsubsignature", "subsignature", "subsigguts", "$@20", "optsubbody", + "subbody", "optsigsubbody", "sigsubbody", "$@21", "expr", "listexpr", + "listop", "@22", "methodname", "subscripted", "termbinop", "termrelop", + "relopchain", "termeqop", "eqopchain", "termunop", "anonymous", "termdo", + "term", "@23", "myattrterm", "myterm", "fieldvar", "optfieldattrlist", + "fielddecl", "$@24", "optlistexpr", "optexpr", "optrepl", "my_scalar", + "list_of_scalars", "my_list_of_scalars", "my_var", "refgen_topic", + "my_refgen", "amper", "scalar", "ary", "hsh", "arylen", "star", + "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR }; static const char * @@ -433,12 +432,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-535) +#define YYPACT_NINF (-548) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-334) +#define YYTABLE_NINF (-335) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -447,72 +446,72 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 393, -535, -535, -535, -535, -535, -535, -535, 28, -535, - 2956, 41, 1912, 1799, -535, -535, -535, -535, 94, 2956, - 94, 2956, 94, 2956, 94, 94, 2956, 54, 2956, 2236, - -535, -535, -535, -535, 94, 94, -535, -535, 24, -122, - -535, 2956, -535, -535, 2956, -67, -64, -34, 2236, 2156, - 41, 94, 2956, 1, 2956, 2956, 2956, 2956, 2956, 2956, - 2316, -535, 556, 62, -535, -1, -535, 105, -27, 120, - 2, -535, -535, -535, 3146, -535, -535, -28, 80, 147, - 176, -535, 103, 209, 230, 110, -535, -535, -535, -535, - -535, 75, 101, 199, 37, 48, 6, 66, 72, 148, - 148, -535, 1, -535, -535, -535, 151, -535, 1, 168, - -535, 195, 340, 218, 1799, -535, -535, -535, -535, 683, - -535, 336, 853, -535, -535, -535, -535, -535, 242, -535, - 347, -535, 347, -535, -535, 3515, 3036, 2396, 183, -535, - -535, -535, 3515, -535, 3515, 204, 198, 198, 2956, 169, - 173, 2956, 188, 3515, 41, 3146, 197, 2476, 2956, 2156, - -535, 3515, 3116, -535, 62, -535, 2556, 2956, 2956, -535, - 306, -535, -535, 2956, 62, 347, 347, 347, 178, 178, - 318, 291, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2636, - -535, -535, 2956, -535, -535, 2956, 2956, 2956, 2956, 2956, - 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, - 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, - 2956, -535, -535, -535, 2956, 47, 2716, 2956, 2956, 2956, - 2956, 2956, 2956, 2956, -535, 281, 282, 283, 259, -535, - -535, -535, -535, -535, 221, 542, -535, -535, 223, -535, - -535, -535, 312, -535, -535, -535, -535, -535, -535, 41, - -535, -535, -535, 2956, 2956, 2956, 2956, 2956, -535, -535, - -535, -535, 300, -535, -535, -535, 300, -535, -535, -535, - 344, -535, -535, 2796, 347, 183, 22, 84, 130, -535, - 403, 305, -535, -535, -535, 198, 307, -535, -535, -535, - -535, 2956, 2956, 88, -535, -535, -535, -535, 508, 278, - 243, 2956, 62, 62, 362, -535, 2956, 366, 181, 181, - -535, -535, 3250, -7, 93, -535, 512, 335, 3495, 3354, - 347, 400, 461, 3198, 3250, 3250, 1001, 3393, 3393, 3393, - 3416, 3416, 3455, 3476, 3495, 3495, 335, 335, 519, 315, - 461, 400, 347, 347, 163, 363, 2956, 2956, 452, 364, - 379, 380, -535, 384, 2876, 293, -535, -535, 574, 142, - 111, 202, 118, 226, 154, 257, 966, -535, -535, 369, - 51, 198, 354, -535, 324, 2956, 2956, -535, -5, -535, - -535, 296, -535, -535, -535, -535, 1994, 199, -535, 2956, - 2956, -535, -535, 372, -535, 420, -535, -535, -535, 556, - -535, -535, -535, 556, -535, -535, 355, 355, 336, 21, - 681, -535, -535, -535, -535, -535, 323, -535, -535, 357, - 73, -535, 2956, -535, -535, -535, 688, -535, 179, 2956, - 455, -535, -535, 2956, -535, 276, 185, -535, -535, -535, - -535, -535, -535, 692, 2956, -535, 462, -535, 474, -535, - 477, -535, 478, -535, -535, -535, -535, -535, 57, -535, - -535, 373, 556, 375, 475, 376, -535, -535, -535, -535, - -535, 381, 481, 160, -535, 2956, 382, 385, 556, 1121, - 378, 458, 204, -535, 504, -535, -535, 198, 2956, -535, - -535, -535, -535, 27, -535, -535, -535, 505, -535, -535, - 2956, -535, 431, -535, -535, -535, 191, -535, 3302, 515, - -535, -535, 401, -535, -535, -535, -535, 507, -535, -535, - -535, 2956, 148, 148, 516, 405, -535, 2956, 2956, 148, - -535, 406, 409, -535, -535, -535, -535, -535, -535, 2956, - 198, -535, 520, 3146, 414, -535, 556, -535, -535, -535, - -535, 464, -535, -535, 3146, 280, 280, 475, 417, 423, - 424, 168, 2956, 2956, 148, 148, 148, 475, 148, 531, - 420, 1234, -535, -535, -535, -535, -535, -535, 1347, -535, - 148, 426, -535, -535, -535, -535, 2956, 148, 148, -535, - 537, 436, 168, 168, 168, -535, 523, -535, -535, -535, - 1460, -535, 19, -535, 1573, -535, 2956, 440, 168, 168, - -535, 148, -535, -535, -535, 444, 41, -535, -535, 559, - 496, -535, -535, 454, 148, -535, -535, -535, 168, -535, - -535, -535, -535, -535, -535, 148, 168, 2076, -535, 1686, - 280, -535, 463, -535, -535, 148, -535 + 706, -548, -548, -548, -548, -548, -548, -548, 32, -548, + 2994, 25, 1950, 1837, -548, -548, -548, -548, 350, 2994, + 350, 2994, 350, 2994, 350, 350, 2994, 33, 2994, 2274, + -548, -548, -548, -548, 350, 350, -548, -548, 46, -60, + -548, 2994, -548, -548, 2994, -52, -34, -42, 2274, 2194, + 25, 350, 2994, 57, 2994, 2994, 2994, 2994, 2994, 2994, + 2354, -548, 289, 94, -548, 11, -548, -7, 39, 98, + 27, -548, -548, -548, 3184, -548, -548, 12, 82, 143, + 158, -548, 146, 167, 187, 157, -548, -548, -548, -548, + -548, 179, 189, 233, 71, 115, -1, 131, 139, 275, + 275, -548, 57, -548, -548, -548, 265, -548, 57, 250, + -548, 268, 337, 278, 1837, -548, -548, -548, -548, 777, + -548, 390, 890, -548, -548, -548, -548, -548, 283, -548, + 316, -548, 316, -548, -548, 3520, 3074, 2434, 216, -548, + -548, -548, 3520, -548, 3520, 245, 220, 220, 2994, 181, + 227, 2994, 183, 3520, 25, 3184, 200, 2514, 2994, 2194, + -548, 3520, 3154, -548, 94, -548, 2594, 2994, 2994, -548, + 292, -548, -548, 2994, 94, 316, 316, 316, 214, 214, + 315, 361, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2674, + -548, -548, 2994, -548, -548, 2994, 2994, 2994, 2994, 2994, + 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, + 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, + 2994, -548, -548, -548, 2994, 53, 2754, 2994, 2994, 2994, + 2994, 2994, 2994, 2994, -548, 298, 300, 302, 247, -548, + -548, -548, -548, -548, 213, 541, -548, -548, 235, -548, + -548, -548, 323, -548, -548, -548, -548, -548, -548, 25, + -548, -548, -548, 2994, 2994, 2994, 2994, 2994, -548, -548, + -548, -548, 307, -548, -548, -548, 307, -548, -548, -548, + 352, -548, -548, 2834, 316, 216, 49, 70, 76, -548, + 384, 312, -548, -548, -548, 220, 314, -548, -548, -548, + -548, 2994, 2994, 74, -548, -548, -548, -548, 407, 301, + 251, 2994, 94, 94, 372, -548, 2994, 378, 96, 96, + -548, -548, 3288, 124, 92, -548, 431, 394, 3481, 3340, + 316, 276, 342, 3236, 3288, 3288, 926, 3379, 3379, 3379, + 3402, 3402, 3441, 3462, 3481, 3481, 394, 394, 3501, 3540, + 342, 276, 316, 316, 0, 368, 2994, 2994, 288, 371, + 380, 386, -548, 387, 2914, 287, -548, -548, 435, 180, + 100, 225, 104, 242, 116, 252, 1046, -548, -548, 405, + 50, 220, 369, -548, 331, 2994, 2994, -548, -12, -548, + -548, 303, -548, -548, -548, -548, 2032, 233, -548, 2994, + 2994, -548, -548, 379, -548, 411, -548, -548, -548, 289, + -548, -548, -548, 289, -548, -548, 339, 341, 390, 14, + 562, -548, -548, -548, -548, -548, 317, -548, -548, 319, + 77, -548, 2994, -548, -548, -548, 609, -548, 120, 2994, + 436, -548, -548, 2994, -548, 257, 129, -548, -548, -548, + -548, -548, -548, 613, 2994, -548, 446, -548, 447, -548, + 448, -548, 450, -548, -548, -548, -548, -548, 69, -548, + -548, 320, 289, 336, 453, 345, -548, -548, -548, -548, + -548, 354, 462, 203, -548, 2994, 359, 363, 289, 1159, + 366, 438, 245, -548, 484, -548, -548, 220, 2994, 2994, + -548, 62, -548, -548, -548, 490, -548, -548, 2994, -548, + 416, -548, -548, -548, 215, -548, 572, 497, -548, -548, + 385, -548, -548, -548, -548, 492, -548, -548, -548, 2994, + 275, 275, 500, 402, -548, 2994, 2994, 275, -548, 403, + 408, -548, -548, -548, -548, -548, -548, 2994, 220, -548, + 508, 3184, 3184, 409, -548, 289, -548, -548, -548, -548, + 455, -548, -548, 3184, 193, 193, 453, 413, 415, 421, + 250, 2994, 2994, 275, 275, 275, 453, 275, 530, 411, + 1272, -548, -548, -548, -548, -548, -548, 1385, -548, 275, + 425, -548, -548, -548, -548, 2994, 275, 275, -548, 534, + 432, 250, 250, 250, -548, 521, -548, -548, -548, 1498, + -548, 26, -548, 1611, -548, 2994, 437, 250, 250, -548, + 275, -548, -548, -548, 439, 25, -548, -548, 550, 485, + -548, -548, 443, 275, -548, -548, -548, 250, -548, -548, + -548, -548, -548, -548, 275, 250, 2114, -548, 1724, 193, + -548, 454, -548, -548, 275, -548 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -521,105 +520,105 @@ static const yytype_int16 yypact[] = static const yytype_int16 yydefact[] = { 0, 2, 4, 6, 8, 10, 12, 14, 0, 21, - 19, 0, 0, 0, 19, 134, 1, 19, 0, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 267, 0, - 103, 103, 104, 280, 0, 0, 251, 278, 239, 273, - 275, 269, 103, 282, 261, 271, 0, 0, 264, 19, + 19, 0, 0, 0, 19, 135, 1, 19, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, + 103, 103, 104, 281, 0, 0, 252, 279, 240, 274, + 276, 270, 103, 283, 262, 272, 0, 0, 265, 19, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 303, 304, 147, 281, 246, 230, 189, 201, 190, - 208, 231, 232, 233, 150, 236, 5, 252, 241, 244, - 243, 245, 242, 0, 0, 0, 21, 7, 78, 73, + 0, 304, 305, 148, 282, 247, 231, 190, 202, 191, + 209, 232, 233, 234, 151, 237, 5, 253, 242, 245, + 244, 246, 243, 0, 0, 0, 21, 7, 78, 73, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 16, 17, 36, 0, 102, 0, 19, 9, 0, 79, 0, 0, 11, 33, 32, 28, 0, - 15, 19, 0, 332, 335, 334, 333, 319, 0, 320, - 214, 322, 215, 321, 325, 237, 0, 0, 284, 289, - 291, 290, 268, 229, 228, 19, 19, 19, 19, 0, - 0, 0, 0, 270, 0, 262, 0, 0, 19, 19, - 265, 266, 280, 301, 302, 158, 241, 0, 0, 323, - 0, 106, 107, 19, 263, 216, 217, 235, 221, 222, - 240, 0, 0, 0, 0, 0, 148, 0, 0, 0, - 204, 203, 0, 211, 210, 0, 0, 0, 0, 0, + 15, 19, 0, 333, 336, 335, 334, 320, 0, 321, + 215, 323, 216, 322, 326, 238, 0, 0, 285, 290, + 292, 291, 269, 230, 229, 19, 19, 19, 19, 0, + 0, 0, 0, 271, 0, 263, 0, 0, 19, 19, + 266, 267, 281, 302, 303, 159, 242, 0, 0, 324, + 0, 106, 107, 19, 264, 217, 218, 236, 222, 223, + 241, 0, 0, 0, 0, 0, 149, 0, 0, 0, + 205, 204, 0, 212, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 219, 220, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 19, 0, 0, 19, 292, - 294, 293, 21, 21, 21, 0, 21, 21, 0, 21, + 0, 219, 220, 221, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 19, 0, 0, 19, 293, + 295, 294, 21, 21, 21, 0, 21, 21, 0, 21, 21, 23, 0, 71, 46, 102, 72, 42, 102, 0, 88, 64, 70, 0, 0, 0, 0, 0, 69, 35, - 34, 29, 115, 118, 117, 129, 115, 125, 124, 128, - 130, 135, 223, 0, 286, 0, 241, 244, 243, 288, - 0, 114, 283, 109, 108, 19, 112, 110, 21, 21, - 156, 19, 0, 0, 274, 161, 272, 276, 0, 0, - 0, 0, 151, 152, 0, 255, 0, 238, 145, 146, - 143, 144, 149, 0, 0, 175, 0, 207, 213, 193, - 182, 184, 186, 200, 180, 181, 0, 196, 198, 197, - 194, 195, 192, 191, 212, 209, 206, 202, 205, 188, - 187, 185, 199, 183, 179, 0, 0, 0, 0, 329, - 327, 331, 163, 0, 0, 155, 164, 253, 0, 0, + 34, 29, 115, 118, 117, 130, 115, 126, 125, 129, + 131, 136, 224, 0, 287, 0, 242, 245, 244, 289, + 0, 114, 284, 109, 108, 19, 112, 110, 21, 21, + 157, 19, 0, 0, 275, 162, 273, 277, 0, 0, + 0, 0, 152, 153, 0, 256, 0, 239, 146, 147, + 144, 145, 150, 0, 0, 176, 0, 208, 214, 194, + 183, 185, 187, 201, 181, 182, 0, 197, 199, 198, + 195, 196, 193, 192, 213, 210, 207, 203, 206, 189, + 188, 186, 200, 184, 180, 0, 0, 0, 0, 330, + 328, 332, 164, 0, 0, 156, 165, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 0, - 0, 19, 296, 297, 298, 0, 0, 317, 0, 318, - 315, 0, 316, 312, 313, 314, 0, 0, 21, 0, + 0, 19, 297, 298, 299, 0, 0, 318, 0, 319, + 316, 0, 317, 313, 314, 315, 0, 0, 21, 0, 95, 19, 21, 0, 38, 21, 40, 89, 80, 77, - 81, 84, 83, 97, 82, 116, 19, 19, 126, 240, - 0, 285, 287, 113, 21, 111, 19, 226, 227, 0, - 19, 177, 19, 277, 160, 159, 0, 224, 0, 0, - 0, 168, 174, 0, 259, 0, 0, 256, 258, 257, - 260, 324, 172, 0, 19, 254, 0, 166, 0, 247, - 0, 248, 0, 18, 21, 37, 21, 44, 0, 295, - 299, 0, 98, 0, 0, 0, 307, 21, 93, 94, + 81, 84, 83, 97, 82, 116, 122, 119, 127, 241, + 0, 286, 288, 113, 21, 111, 19, 227, 228, 0, + 19, 178, 19, 278, 161, 160, 0, 225, 0, 0, + 0, 169, 175, 0, 260, 0, 0, 257, 259, 258, + 261, 325, 173, 0, 19, 255, 0, 167, 0, 248, + 0, 249, 0, 18, 21, 37, 21, 44, 0, 296, + 300, 0, 98, 0, 0, 0, 308, 21, 93, 94, 99, 0, 0, 79, 58, 0, 0, 0, 96, 0, - 19, 0, 19, 137, 0, 43, 136, 19, 121, 120, - 123, 119, 127, 238, 225, 134, 131, 0, 132, 157, - 0, 305, 0, 162, 153, 178, 0, 171, 234, 0, - 167, 173, 0, 169, 249, 250, 165, 0, 65, 21, - 45, 0, 0, 0, 311, 0, 310, 0, 0, 0, - 52, 0, 0, 92, 92, 22, 25, 24, 62, 19, - 19, 19, 21, 122, 0, 141, 306, 279, 176, 170, - 154, 0, 19, 67, 300, 19, 19, 308, 0, 0, - 0, 19, 95, 0, 0, 0, 0, 0, 0, 0, - 21, 0, 140, 41, 139, 133, 19, 19, 0, 19, - 0, 0, 85, 48, 49, 309, 0, 0, 0, 61, - 0, 0, 19, 19, 19, 26, 90, 47, 39, 138, - 0, 30, 0, 66, 0, 86, 0, 0, 19, 19, - 53, 0, 57, 51, 50, 0, 0, 63, 142, 0, - 19, 31, 68, 0, 0, 55, 60, 92, 19, 27, - 91, 20, 19, 75, 74, 0, 19, 0, 59, 0, - 19, 56, 0, 76, 87, 0, 54 + 19, 0, 19, 138, 0, 43, 137, 19, 123, 120, + 128, 239, 226, 135, 132, 0, 133, 158, 0, 306, + 0, 163, 154, 179, 0, 172, 235, 0, 168, 174, + 0, 170, 250, 251, 166, 0, 65, 21, 45, 0, + 0, 0, 312, 0, 311, 0, 0, 0, 52, 0, + 0, 92, 92, 22, 25, 24, 62, 19, 19, 19, + 21, 124, 121, 0, 142, 307, 280, 177, 171, 155, + 0, 19, 67, 301, 19, 19, 309, 0, 0, 0, + 19, 95, 0, 0, 0, 0, 0, 0, 0, 21, + 0, 141, 41, 140, 134, 19, 19, 0, 19, 0, + 0, 85, 48, 49, 310, 0, 0, 0, 61, 0, + 0, 19, 19, 19, 26, 90, 47, 39, 139, 0, + 30, 0, 66, 0, 86, 0, 0, 19, 19, 53, + 0, 57, 51, 50, 0, 0, 63, 143, 0, 19, + 31, 68, 0, 0, 55, 60, 92, 19, 27, 91, + 20, 19, 75, 74, 0, 19, 0, 59, 0, 19, + 56, 0, 76, 87, 0, 54 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -535, -535, -535, -535, -535, -535, -535, -535, -535, -535, - -4, -10, -535, 83, -77, -535, -535, -535, -535, -16, - -535, 569, 492, 26, -535, -535, -535, -535, -535, -535, - -535, -535, -535, -535, -535, -535, 150, -388, -534, -281, - -535, -531, -535, 16, 192, -367, -40, -535, -81, 45, - -535, -535, 43, 119, -142, 325, 337, -535, -535, 201, - -535, 196, -535, -535, -535, -535, 114, -535, 35, 200, - -535, -295, -535, 79, -6, -535, -535, -535, -535, -535, - -535, -535, -535, -535, -535, -535, -535, 632, -535, -535, - 485, -535, -535, -535, -535, -146, -2, -535, -535, -535, - -535, 228, -535, -535, 389, 95, -24, -3, -535, -535, - -535, -535, -535, 31 + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -4, -10, -548, 19, 13, -548, -548, -548, -548, -16, + -548, 560, 460, 5, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -31, -390, -528, -547, + -548, -516, -548, 4, 184, -312, -66, -548, -96, 66, + -548, -548, -50, 97, -135, 309, 327, -548, -548, -548, + 177, -548, -548, -548, -548, 102, -548, 17, 175, -548, + -296, -548, 93, -44, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, 556, -548, -548, 470, + -548, -548, -548, -548, -140, -17, -548, -548, -548, -548, + 219, -548, -548, 373, 152, -14, -8, -548, -548, -548, + -548, -548, 16 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 108, - 109, 118, 465, 426, 252, 401, 548, 577, 625, 119, - 612, 271, 116, 117, 492, 497, 405, 403, 572, 637, - 541, 578, 562, 589, 631, 644, 408, 111, 593, 261, - 627, 575, 480, 487, 412, 471, 482, 379, 254, 145, - 147, 235, 173, 295, 298, 292, 416, 276, 277, 500, - 278, 279, 280, 281, 507, 508, 120, 121, 495, 496, - 583, 427, 586, 112, 63, 64, 432, 365, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 150, 75, - 138, 238, 384, 113, 531, 165, 76, 512, 475, 534, - 535, 390, 391, 247, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 129 + 109, 118, 465, 426, 252, 401, 546, 576, 624, 119, + 611, 271, 116, 117, 492, 497, 405, 403, 571, 636, + 539, 577, 561, 588, 630, 643, 408, 111, 592, 261, + 626, 574, 480, 487, 412, 471, 482, 379, 254, 145, + 147, 235, 173, 295, 298, 292, 416, 276, 277, 278, + 279, 280, 281, 505, 506, 120, 121, 495, 496, 582, + 427, 585, 112, 63, 64, 432, 365, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 150, 75, 138, + 238, 384, 113, 529, 165, 76, 510, 475, 532, 533, + 390, 391, 247, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 129 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -627,123 +626,172 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 61, 122, 300, 140, 428, 299, 152, 87, 479, 61, - 187, 20, 188, 576, 125, 440, 125, 128, 125, 473, - 125, 125, 20, 253, 141, 143, 257, 315, 16, 481, - 125, 125, 594, 227, 316, 228, 244, 151, 110, 163, - 439, 629, 61, 164, 160, 125, 168, 125, 174, 127, - 170, 158, 86, 131, 171, 133, 134, 355, 356, 172, - 357, 156, 466, 358, 157, 148, 149, 359, 529, 240, - 20, 360, 361, 467, 22, 630, 146, 186, 24, 530, - 167, 192, 169, 182, 183, 184, 185, 154, 186, 62, - 241, 227, 17, 228, 159, -326, 510, -326, 62, 260, - 226, 362, 431, -288, -289, 86, 647, 441, 195, -287, - 20, 275, 287, 126, -330, 126, 654, 126, 542, 126, - 126, 233, 139, 474, 245, 457, 363, 189, 236, 126, - 126, 62, 459, 288, 246, 294, 297, 297, 163, 181, - 270, -328, 164, -328, 166, 255, 126, 123, 61, 61, - 305, 258, 124, 424, 237, 125, 309, 310, -326, 251, - -326, 312, 313, 163, 456, 242, -291, 164, 461, 234, - 569, 570, 136, 256, 404, 364, 243, 406, 182, 183, - 184, 185, 137, 182, 183, 184, 185, -328, 239, -328, - 311, 248, 263, 515, 249, 264, 265, 266, 267, 520, - 250, 182, 183, 184, 185, 558, 601, 259, 182, 183, - 184, 185, -290, 190, 191, 20, 290, 262, 376, 22, - 229, 394, 230, 24, 458, 378, 193, 194, 383, 617, - 303, 286, 182, 183, 184, 185, 308, 62, 62, 468, - 268, 231, 395, 232, 182, 183, 184, 185, 460, 633, - 182, 183, 184, 185, 166, 407, 282, 584, 302, 479, - 293, 318, 319, 320, 321, 291, 323, 324, 326, 182, - 183, 184, 185, 184, 185, 182, 183, 184, 185, 462, - 296, 182, 183, 184, 185, 297, 513, -98, -334, 225, - 599, 61, 182, 183, 184, 185, 430, 301, 519, 429, - -334, -334, -334, 224, 225, 368, 369, 370, 371, 372, - 373, 374, 375, 590, 591, 304, 182, 183, 184, 185, - 366, 622, 623, 624, 306, 385, 386, 388, 314, 396, - 397, 316, 399, 400, 377, 380, 381, 635, 636, 387, - 393, 382, 409, 409, 409, 413, 409, 182, 183, 184, - 185, 398, 272, 402, 125, 552, 273, 648, 415, 418, - 274, 423, 420, 425, 434, 651, 182, 183, 184, 185, - 435, 297, 263, 394, 437, 264, 265, 266, 267, 439, - 62, 182, 183, 184, 185, 489, 478, 464, 444, 448, - 436, 197, 198, 199, 395, 438, 1, 2, 3, 4, - 5, 6, 7, 579, 449, 450, 499, 499, 580, 451, - 469, 197, 198, 199, 410, 411, 506, 414, 317, 470, - 511, 454, 163, 197, 477, 491, 164, 217, 218, 219, - 182, 183, 184, 185, 220, 445, 446, 221, 222, 223, - 224, 225, 493, 453, 61, 215, 216, 217, 218, 219, - 498, 505, 522, 126, 220, 565, 566, 221, 222, 223, - 224, 225, 571, 86, 472, 472, 220, 517, 20, 221, - 222, 223, 224, 225, 523, 483, 197, 447, 413, 488, - 547, 485, 294, 476, 509, 490, 524, 297, 494, 525, - 526, 20, 393, 182, 183, 184, 185, 602, 603, 604, - 532, 606, 533, 540, 537, 123, 546, 494, 539, 543, - 124, 549, 544, 615, 219, 551, 555, 557, 516, 220, - 618, 619, 221, 222, 223, 224, 225, 559, 560, 561, - 422, 567, 568, 62, 573, 581, 574, 197, 198, 163, - 297, 585, 582, 164, 638, 596, 588, 527, 587, 528, - 597, 598, 18, 607, 616, 592, 592, 646, 20, 620, - 538, 260, 22, 621, 472, 626, 24, 634, 650, 536, - 610, 639, 389, 614, 218, 219, 641, 611, 656, 642, - 220, 645, 115, 221, 222, 223, 224, 225, 600, 556, - 655, 486, 260, 260, 260, 197, 198, 199, 182, 183, - 184, 185, 182, 183, 184, 185, 269, 652, 260, 260, - 421, 550, 563, 417, 502, 608, 472, 472, 501, 554, - 643, 285, 640, 0, 504, 484, 649, 0, 260, -334, - 216, 217, 218, 219, 392, 433, 260, 478, 220, 442, - 592, 221, 222, 223, 224, 225, 182, 183, 184, 185, - 0, 488, 472, 130, 0, 132, 0, 0, 135, 0, - 142, 144, 595, 494, 182, 183, 184, 185, 0, 0, - 0, 0, 605, 153, 0, 472, 155, 0, 0, 0, - 161, 0, 0, -13, 88, 0, 0, 175, 176, 177, - 178, 179, 0, 18, 86, 472, 19, 0, 0, 20, - 0, 455, 21, 22, 23, 89, 0, 24, 25, 90, - 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, - 97, 98, 0, 99, 0, 0, 100, 28, 29, 101, - 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, - 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 284, 0, - 107, 182, 183, 184, 185, 0, 0, 54, 182, 183, - 184, 185, 182, 183, 184, 185, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, - 0, 57, 0, 58, 59, 0, 0, 0, 503, 0, - 0, 60, 0, 0, 0, 514, 0, 0, 322, 521, - 0, 0, 0, 0, 327, 0, 0, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, -3, 88, 0, 354, 0, 0, 0, - 0, 0, 0, 18, 86, 0, 19, 0, 0, 20, - 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, - 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, - 97, 98, 0, 99, 0, 0, 100, 28, 29, 101, - 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, - 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 107, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 61, 122, 128, 428, 20, 164, 479, 87, 300, 61, + 174, 257, 299, 140, 125, 20, 125, 110, 125, 141, + 125, 125, 187, 598, 188, 143, 575, 316, 17, 244, + 125, 125, 16, 315, 127, 170, 86, 593, 131, 163, + 133, 134, 61, 158, 160, 125, 168, 125, 628, 20, + 148, 149, 255, 22, 621, 622, 623, 24, 258, 151, + 227, 466, 228, 355, 356, 167, 357, 169, 152, 358, + 634, 635, 467, 359, 473, 439, 156, 360, 361, 240, + 527, -327, 629, -327, 481, 241, 159, -329, 431, -329, + 647, 528, 186, 227, 157, 228, -289, 146, 650, 260, + 508, 190, 191, 62, 164, 234, 441, 362, 154, 186, + 171, 275, 62, 253, 457, 172, 474, 245, 459, 270, + 646, 653, 287, 312, 313, -335, 225, 246, 288, 164, + 461, -290, 363, 195, 513, 294, 297, 297, 163, 189, + 226, 309, 310, 518, -288, 62, 440, 192, 61, 61, + 305, 136, -292, 181, -327, 125, -327, -331, -291, 404, + 424, 137, 406, 163, 182, 183, 184, 185, 233, -329, + 126, -329, 126, 540, 126, 311, 126, 126, 229, 139, + 230, 364, 182, 183, 184, 185, 126, 126, 184, 185, + 182, 183, 184, 185, 182, 183, 184, 185, 231, 242, + 232, 166, 456, 126, 193, 194, 182, 183, 184, 185, + 182, 183, 184, 185, 182, 183, 184, 185, 376, 182, + 183, 184, 185, 568, 569, 378, 589, 590, 383, 557, + 290, 394, 236, 410, 411, 263, 414, 395, 264, 265, + 266, 267, 237, 243, 303, 239, 468, 458, 248, 20, + 308, 62, 62, 22, 583, 407, 479, 24, 430, 249, + 600, 385, 386, 388, 460, 396, 397, 250, 399, 400, + 182, 183, 184, 185, 462, 318, 319, 320, 321, 517, + 323, 324, 326, 616, 429, 297, 251, 256, 286, 259, + 262, 61, 511, 182, 183, 184, 185, 282, 291, 86, + 268, 293, 296, 632, 20, 182, 183, 184, 185, 301, + 304, 166, 302, 447, 314, 182, 183, 184, 185, 368, + 369, 370, 371, 372, 373, 374, 375, 306, 316, 382, + -98, 387, 182, 183, 184, 185, -335, -335, -335, 224, + 225, 123, 182, 183, 184, 185, 124, 182, 183, 184, + 185, 377, 197, 380, 125, 381, 409, 409, 409, 413, + 409, 86, 550, 398, 402, 415, 20, 418, 423, 263, + 425, 297, 264, 265, 266, 267, 420, 366, 435, 182, + 183, 184, 185, 394, 437, 489, 478, 434, 164, 395, + 219, 439, 197, 444, 62, 220, 448, 393, 221, 222, + 223, 224, 225, 123, 436, 449, 272, 578, 124, 438, + 273, 450, 451, 579, 274, 454, 504, 485, 197, 198, + 509, 490, 163, 464, 494, 469, 470, 182, 183, 184, + 185, 477, 491, 493, 498, 220, 499, 520, 221, 222, + 223, 224, 225, 494, 61, 503, 507, 530, 515, 445, + 446, 182, 183, 184, 185, 218, 219, 453, 521, 522, + 523, 220, 524, 531, 221, 222, 223, 224, 225, 20, + 197, 198, 199, 535, 182, 183, 184, 185, 472, 472, + 545, 537, 294, 525, 538, 526, 541, 297, 317, 483, + 542, 547, 413, 488, 544, 549, 536, 182, 183, 184, + 185, 554, 556, 164, 215, 216, 217, 218, 219, 558, + 126, 422, 559, 220, 560, 566, 221, 222, 223, 224, + 225, 182, 183, 184, 185, 182, 183, 184, 185, 567, + 581, 572, 514, 580, 433, 573, 584, 163, 297, 586, + 476, 595, 596, 564, 565, 587, 562, 62, 597, 393, + 570, 18, 606, 615, 591, 591, 619, 20, 442, 620, + 260, 22, 455, 625, 633, 24, 638, 640, 641, 609, + 644, 389, 613, 115, 269, 599, 610, 130, 472, 132, + 651, 654, 135, 486, 142, 144, 601, 602, 603, 548, + 605, 260, 260, 260, 421, 500, 607, 153, 494, 502, + 155, 555, 614, 417, 161, 553, 285, 260, 260, 617, + 618, 175, 176, 177, 178, 179, 484, 0, 392, 642, + 0, 639, 0, 0, 0, 648, 534, 260, 472, 472, + 0, 0, 0, 637, 0, 260, 478, 0, 0, 591, + 196, 0, 0, 0, 0, 0, 645, 0, 197, 198, + 199, 0, 182, 183, 184, 185, 0, 649, 0, 0, + 0, 0, 0, 0, 488, 472, 0, 655, 0, 203, + 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 0, 472, 501, + 0, 220, 284, 0, 221, 222, 223, 224, 225, 182, + 183, 184, 185, 182, 183, 184, 185, 0, 472, 1, + 2, 3, 4, 5, 6, 7, 0, 0, 594, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 604, 0, + 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, + 519, 0, 322, 0, 0, 0, 0, 0, 327, 0, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, -13, 88, 0, + 354, 0, 0, 0, 0, 0, 0, 18, 86, 0, + 19, 0, 0, 20, 0, 0, 21, 22, 23, 89, + 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, + 0, 0, 95, 96, 97, 98, 0, 99, 0, 0, + 100, 28, 29, 101, 102, 103, 30, 31, 104, 32, + 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, + 42, 43, 105, 114, 44, 0, 106, 45, 46, 47, + 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, - 0, 57, 0, 58, 59, 0, 18, 86, 463, 19, - 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, + -3, 88, 55, 56, 0, 57, 0, 58, 59, 0, + 18, 86, 0, 19, 0, 60, 20, 0, 0, 21, + 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, + 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, + 99, 0, 0, 100, 28, 29, 101, 102, 103, 30, + 31, 104, 32, 33, 34, 35, 36, 37, 0, 38, + 39, 40, 41, 42, 43, 105, 114, 44, 0, 106, + 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, + 52, 53, 0, 0, 0, 0, 0, 107, 0, 0, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 196, 0, 0, 0, 0, 516, + 0, 0, 197, 198, 199, 55, 56, 0, 57, 0, + 58, 59, 0, 0, 0, 200, 0, 0, 60, 0, + 0, 201, 202, 203, 443, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 0, 0, 0, 0, 220, 0, 88, 221, 222, + 223, 224, 225, 0, 551, 552, 18, 86, 463, 19, + 0, 0, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, - 0, 95, 96, 97, 98, 0, 99, 0, 0, 100, + 0, 95, 96, 97, 98, 563, 99, 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 196, - 0, 0, 0, 0, 0, 518, 0, 197, 198, 199, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 200, 0, 0, 0, 60, 0, 201, 202, 203, 443, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 0, 0, 0, 0, - 220, 0, 88, 221, 222, 223, 224, 225, 0, 0, - 553, 18, 86, 545, 19, 0, 0, 20, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 55, 56, 0, 57, 0, 58, 59, 0, 18, + 86, 543, 19, 0, 60, 20, 0, 0, 21, 22, + 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, + 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, + 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, + 104, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 105, 114, 44, 0, 106, 45, + 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 0, 107, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, + 59, 0, 18, 86, 608, 19, 0, 60, 20, 0, + 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, + 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, + 98, 0, 99, 0, 0, 100, 28, 29, 101, 102, + 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 105, 114, 44, + 0, 106, 45, 46, 47, 48, 49, 50, 0, 0, + 0, 51, 52, 53, 0, 0, 0, 0, 0, 107, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 55, 56, 0, + 57, 0, 58, 59, 0, 18, 86, 612, 19, 0, + 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, + 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, + 95, 96, 97, 98, 0, 99, 0, 0, 100, 28, + 29, 101, 102, 103, 30, 31, 104, 32, 33, 34, + 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, + 105, 114, 44, 0, 106, 45, 46, 47, 48, 49, + 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 0, 107, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 55, 56, 0, 57, 0, 58, 59, 0, 18, 86, + 627, 19, 0, 60, 20, 0, 0, 21, 22, 23, + 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, + 94, 0, 0, 95, 96, 97, 98, 0, 99, 0, + 0, 100, 28, 29, 101, 102, 103, 30, 31, 104, + 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, + 41, 42, 43, 105, 114, 44, 0, 106, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, + 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 88, 55, 56, 0, 57, 0, 58, 59, + 0, 18, 86, 631, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, - 0, 99, 0, 564, 100, 28, 29, 101, 102, 103, + 0, 99, 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, 0, 0, @@ -751,18 +799,18 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, 0, 57, - 0, 58, 59, 0, 18, 86, 609, 19, 0, 60, + 0, 58, 59, 0, 18, 86, 0, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, 44, 0, 106, 45, 46, 47, 48, 49, 50, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 652, 0, 0, 107, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, - 56, 0, 57, 0, 58, 59, 0, 18, 86, 613, + 56, 0, 57, 0, 58, 59, 0, 18, 86, 0, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, 0, 0, @@ -774,345 +822,347 @@ static const yytype_int16 yytable[] = 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, 59, 0, - 18, 86, 628, 19, 0, 60, 20, 0, 0, 21, + 18, 86, 0, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, 0, 38, - 39, 40, 41, 42, 43, 105, 114, 44, 0, 106, + 39, 40, 41, 42, 43, 105, 0, 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 0, 107, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 55, 56, 0, 57, 0, - 58, 59, 0, 18, 86, 632, 19, 0, 60, 20, - 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, - 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, - 97, 98, 0, 99, 0, 0, 100, 28, 29, 101, - 102, 103, 30, 31, 104, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 105, 114, - 44, 0, 106, 45, 46, 47, 48, 49, 50, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 107, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, - 0, 57, 0, 58, 59, 0, 18, 86, 0, 19, - 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, - 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, - 0, 95, 96, 97, 98, 0, 99, 0, 0, 100, - 28, 29, 101, 102, 103, 30, 31, 104, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 105, 114, 44, 0, 106, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 653, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 55, 56, 0, 57, 0, 58, 59, 0, 18, - 86, 0, 19, 0, 60, 20, 0, 0, 21, 22, - 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, - 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, - 0, 0, 100, 28, 29, 101, 102, 103, 30, 31, - 104, 32, 33, 34, 35, 36, 37, 0, 38, 39, - 40, 41, 42, 43, 105, 114, 44, 0, 106, 45, - 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 0, 107, 0, 0, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, - 59, 0, 18, 86, 0, 19, 0, 60, 20, 0, - 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, - 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, - 98, 0, 99, 0, 0, 100, 28, 29, 101, 102, - 103, 30, 31, 104, 32, 33, 34, 35, 36, 37, - 0, 38, 39, 40, 41, 42, 43, 105, 0, 44, - 0, 106, 45, 46, 47, 48, 49, 50, 0, 0, - 0, 51, 52, 53, 0, 88, 0, 0, 0, 107, + 52, 53, 0, 88, 0, 0, 0, 107, 0, 0, + 0, 0, 18, 0, 54, 19, 0, 0, 20, 0, + 0, 21, 22, 23, -19, 0, 24, 25, 0, 0, + 0, 26, 27, 0, 0, 55, 56, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 28, 29, 60, 0, + 0, 30, 31, 0, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 0, 0, 44, + 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, + 0, 51, 52, 53, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 54, 19, 0, 0, - 20, 0, 0, 21, 22, 23, -19, 0, 24, 25, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, 0, 0, 28, 29, 60, 0, 0, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, - 0, 0, 0, 51, 52, 53, 0, 88, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 54, 19, - 0, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 55, - 56, 0, 57, 0, 58, 59, 0, 0, 0, 0, - 28, 29, 60, 0, 0, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 86, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, -19, 60, 30, 31, 0, 32, 162, - 34, 35, 36, 37, 124, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 86, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 180, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 289, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, -333, 227, 0, 228, - 54, 0, -333, 0, 0, -333, -333, -333, 0, 0, - -333, -333, 0, 0, 0, -333, -333, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - -333, -333, 0, 307, 60, -333, -333, 0, -333, -333, - -333, -333, -333, -333, 0, -333, -333, -333, -333, -333, - -333, 0, 0, -333, 0, 0, -333, -333, -333, -333, - -333, -333, 0, 0, 0, -333, -333, -333, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - -333, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, -333, -333, 0, -333, 0, -333, -333, 0, 0, - 28, 29, 0, 0, -333, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 325, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 367, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 419, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 452, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 54, 0, 20, 0, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 0, 0, 0, -332, 0, 0, -332, - 54, 0, -332, 0, 0, -332, -332, -332, 0, 0, - -332, -332, 0, 0, 0, -332, -332, 0, 0, 0, - 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - -332, -332, 0, 0, 283, -332, -332, 0, -332, -332, - -332, -332, -332, -332, 0, -332, -332, -332, -332, -332, - -332, 0, 0, -332, 0, 0, -332, -332, -332, -332, - -332, -332, 0, 0, 0, -332, -332, -332, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -332, 0, 0, 0, 196, 0, 0, 0, 0, 0, - 0, 0, 197, 198, 199, 0, 0, 0, 0, 0, - 0, -332, -332, 0, -332, 200, -332, -332, 0, 0, - 0, 201, 202, 203, -332, 204, 205, 206, 207, 208, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 86, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, -19, 60, 30, 31, 0, 32, 162, 34, 35, + 36, 37, 124, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 86, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 180, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 289, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, -334, 227, 0, 228, 54, 0, + -334, 0, 0, -334, -334, -334, 0, 0, -334, -334, + 0, 0, 0, -334, -334, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, -334, -334, + 0, 307, 60, -334, -334, 0, -334, -334, -334, -334, + -334, -334, 0, -334, -334, -334, -334, -334, -334, 0, + 0, -334, 0, 0, -334, -334, -334, -334, -334, -334, + 0, 0, 0, -334, -334, -334, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, -334, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, -334, + -334, 0, -334, 0, -334, -334, 0, 0, 28, 29, + 0, 0, -334, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 325, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 367, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 419, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 452, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 19, 54, 0, + 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, -333, 0, 0, -333, 54, 0, + -333, 0, 0, -333, -333, -333, 0, 0, -333, -333, + 0, 0, 0, -333, -333, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, -333, -333, + 0, 0, 283, -333, -333, 0, -333, -333, -333, -333, + -333, -333, 0, -333, -333, -333, -333, -333, -333, 0, + 0, -333, 0, 0, -333, -333, -333, -333, -333, -333, + 0, 0, 0, -333, -333, -333, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -333, 0, + 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 199, 0, 0, 0, 0, 0, 0, -333, + -333, 0, -333, 200, -333, -333, 0, 0, 0, 201, + 202, 203, -333, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 0, + 0, 0, 0, 220, 196, 0, 221, 222, 223, 224, + 225, 0, 197, 198, 199, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, + 0, 201, 202, 203, 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 0, 0, 0, 0, 220, 196, 0, 221, 222, 223, 224, 225, 0, 197, 198, 199, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 202, 203, 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 0, 0, 0, 0, 220, 196, 0, + 217, 218, 219, 0, 0, 0, 0, 220, -335, 0, 221, 222, 223, 224, 225, 0, 197, 198, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 201, 202, 203, 0, 204, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 0, 0, 0, 0, 220, - 196, 0, 221, 222, 223, 224, 225, 0, 197, 198, - 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 0, 0, 0, - 0, 220, -334, 0, 221, 222, 223, 224, 225, 0, - 197, 198, 199, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 197, - 198, 199, 0, 220, 0, 0, 221, 222, 223, 224, - 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 198, 199, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 0, 0, - 0, 0, 220, 0, 0, 221, 222, 223, 224, 225, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 197, 198, 199, 0, 220, 0, 0, 221, 222, - 223, 224, 225, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 198, 199, 0, 0, 0, 0, 0, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 0, 197, 198, 199, 220, 0, 0, 221, 222, 223, - 224, 225, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 197, 198, 199, 0, 220, 0, 0, 221, 222, - 223, 224, 225, 213, 214, 215, 216, 217, 218, 219, - 0, 0, 0, 0, 220, 0, 0, 221, 222, 223, - 224, 225, 0, 0, 0, 0, 216, 217, 218, 219, - 0, 0, 0, 0, 220, 0, 0, 221, 222, 223, - 224, 225 + 215, 216, 217, 218, 219, 197, 198, 199, 0, 220, + 0, 0, 221, 222, 223, 224, 225, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 199, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 0, 0, 0, 0, 220, 0, + 0, 221, 222, 223, 224, 225, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 197, 198, 199, + 0, 220, 0, 0, 221, 222, 223, 224, 225, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 199, 0, 0, 0, 0, 0, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 0, 197, 198, 199, + 220, 0, 0, 221, 222, 223, 224, 225, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 197, 198, 199, + 0, 220, 0, 0, 221, 222, 223, 224, 225, 213, + 214, 215, 216, 217, 218, 219, 197, 198, 199, 0, + 220, 0, 0, 221, 222, 223, 224, 225, 0, 0, + 0, -335, 216, 217, 218, 219, 197, 198, 199, 0, + 220, 0, 0, 221, 222, 223, 224, 225, 0, 0, + 0, 216, 217, 218, 219, 0, 0, 0, 0, 220, + 0, 0, 221, 222, 223, 224, 225, 0, 0, 0, + 0, 0, 217, 218, 219, 0, 0, 0, 0, 220, + 0, 0, 221, 222, 223, 224, 225 }; static const yytype_int16 yycheck[] = { - 10, 17, 148, 27, 299, 147, 128, 11, 396, 19, - 11, 16, 13, 544, 18, 22, 20, 19, 22, 386, - 24, 25, 16, 100, 27, 29, 107, 173, 0, 396, - 34, 35, 566, 11, 13, 13, 30, 13, 12, 49, - 13, 22, 52, 49, 48, 49, 50, 51, 54, 18, - 52, 85, 11, 22, 53, 24, 25, 10, 11, 58, - 13, 128, 11, 16, 128, 34, 35, 20, 11, 93, - 16, 24, 25, 22, 20, 56, 31, 15, 24, 22, - 49, 108, 51, 90, 91, 92, 93, 42, 15, 10, - 93, 11, 9, 13, 128, 11, 23, 13, 19, 109, - 128, 54, 14, 82, 82, 11, 637, 14, 106, 82, - 16, 121, 136, 18, 11, 20, 650, 22, 485, 24, - 25, 11, 27, 128, 118, 14, 79, 128, 53, 34, - 35, 52, 14, 136, 128, 145, 146, 147, 148, 60, - 114, 11, 148, 13, 49, 102, 51, 53, 158, 159, - 154, 108, 58, 295, 53, 159, 158, 159, 11, 11, - 13, 167, 168, 173, 22, 128, 82, 173, 14, 86, - 537, 538, 118, 22, 255, 128, 128, 258, 90, 91, - 92, 93, 128, 90, 91, 92, 93, 11, 93, 13, - 159, 96, 32, 14, 128, 35, 36, 37, 38, 14, - 128, 90, 91, 92, 93, 14, 573, 39, 90, 91, - 92, 93, 82, 108, 109, 16, 137, 22, 234, 20, - 11, 245, 13, 24, 22, 235, 106, 107, 238, 596, - 151, 136, 90, 91, 92, 93, 157, 158, 159, 381, - 22, 11, 245, 13, 90, 91, 92, 93, 22, 616, - 90, 91, 92, 93, 159, 259, 14, 552, 85, 647, - 56, 182, 183, 184, 185, 82, 187, 188, 189, 90, - 91, 92, 93, 92, 93, 90, 91, 92, 93, 22, - 82, 90, 91, 92, 93, 295, 432, 127, 125, 126, - 571, 301, 90, 91, 92, 93, 302, 128, 22, 301, - 122, 123, 124, 125, 126, 226, 227, 228, 229, 230, - 231, 232, 233, 33, 34, 127, 90, 91, 92, 93, - 225, 602, 603, 604, 127, 242, 243, 244, 22, 246, - 247, 13, 249, 250, 53, 53, 53, 618, 619, 118, - 245, 82, 263, 264, 265, 266, 267, 90, 91, 92, - 93, 128, 16, 41, 358, 497, 20, 638, 58, 15, - 24, 56, 283, 56, 86, 646, 90, 91, 92, 93, - 127, 381, 32, 397, 12, 35, 36, 37, 38, 13, - 301, 90, 91, 92, 93, 401, 396, 18, 25, 25, - 311, 76, 77, 78, 397, 316, 3, 4, 5, 6, - 7, 8, 9, 549, 25, 25, 416, 417, 550, 25, - 56, 76, 77, 78, 264, 265, 426, 267, 127, 95, - 430, 128, 432, 76, 128, 53, 432, 112, 113, 114, - 90, 91, 92, 93, 119, 356, 357, 122, 123, 124, - 125, 126, 22, 364, 454, 110, 111, 112, 113, 114, - 95, 128, 454, 358, 119, 532, 533, 122, 123, 124, - 125, 126, 539, 11, 385, 386, 119, 12, 16, 122, - 123, 124, 125, 126, 12, 396, 76, 25, 399, 400, - 490, 398, 492, 388, 127, 402, 12, 497, 405, 12, - 12, 16, 397, 90, 91, 92, 93, 574, 575, 576, - 127, 578, 127, 22, 128, 53, 128, 424, 127, 127, - 58, 53, 127, 590, 114, 11, 11, 86, 439, 119, - 597, 598, 122, 123, 124, 125, 126, 12, 127, 22, - 127, 15, 127, 454, 128, 551, 127, 76, 77, 549, - 550, 127, 22, 549, 621, 128, 562, 464, 84, 466, - 127, 127, 10, 22, 128, 565, 566, 634, 16, 22, - 477, 571, 20, 127, 485, 42, 24, 127, 645, 474, - 586, 127, 30, 589, 113, 114, 17, 587, 655, 83, - 119, 127, 13, 122, 123, 124, 125, 126, 572, 510, - 127, 399, 602, 603, 604, 76, 77, 78, 90, 91, - 92, 93, 90, 91, 92, 93, 114, 647, 618, 619, - 285, 492, 529, 276, 418, 580, 537, 538, 417, 505, - 630, 136, 626, -1, 424, 397, 642, -1, 638, 110, - 111, 112, 113, 114, 245, 127, 646, 647, 119, 127, - 650, 122, 123, 124, 125, 126, 90, 91, 92, 93, - -1, 572, 573, 21, -1, 23, -1, -1, 26, -1, - 28, 29, 567, 580, 90, 91, 92, 93, -1, -1, - -1, -1, 577, 41, -1, 596, 44, -1, -1, -1, - 48, -1, -1, 0, 1, -1, -1, 55, 56, 57, - 58, 59, -1, 10, 11, 616, 13, -1, -1, 16, - -1, 127, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, - 37, 38, -1, 40, -1, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 79, 80, 81, -1, -1, -1, 136, -1, - 87, 90, 91, 92, 93, -1, -1, 94, 90, 91, - 92, 93, 90, 91, 92, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, - -1, 118, -1, 120, 121, -1, -1, -1, 127, -1, - -1, 128, -1, -1, -1, 127, -1, -1, 186, 127, - -1, -1, -1, -1, 192, -1, -1, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 0, 1, -1, 224, -1, -1, -1, - -1, -1, -1, 10, 11, -1, 13, -1, -1, 16, - -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, - 37, 38, -1, 40, -1, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, - 87, -1, -1, -1, -1, -1, -1, 94, -1, -1, + 10, 17, 19, 299, 16, 49, 396, 11, 148, 19, + 54, 107, 147, 27, 18, 16, 20, 12, 22, 27, + 24, 25, 11, 570, 13, 29, 542, 13, 9, 30, + 34, 35, 0, 173, 18, 52, 11, 565, 22, 49, + 24, 25, 52, 85, 48, 49, 50, 51, 22, 16, + 34, 35, 102, 20, 601, 602, 603, 24, 108, 13, + 11, 11, 13, 10, 11, 49, 13, 51, 128, 16, + 617, 618, 22, 20, 386, 13, 128, 24, 25, 93, + 11, 11, 56, 13, 396, 93, 128, 11, 14, 13, + 637, 22, 15, 11, 128, 13, 82, 31, 645, 109, + 23, 108, 109, 10, 148, 86, 14, 54, 42, 15, + 53, 121, 19, 100, 14, 58, 128, 118, 14, 114, + 636, 649, 136, 167, 168, 125, 126, 128, 136, 173, + 14, 82, 79, 106, 14, 145, 146, 147, 148, 128, + 128, 158, 159, 14, 82, 52, 22, 108, 158, 159, + 154, 118, 82, 60, 11, 159, 13, 11, 82, 255, + 295, 128, 258, 173, 90, 91, 92, 93, 11, 11, + 18, 13, 20, 485, 22, 159, 24, 25, 11, 27, + 13, 128, 90, 91, 92, 93, 34, 35, 92, 93, + 90, 91, 92, 93, 90, 91, 92, 93, 11, 128, + 13, 49, 22, 51, 106, 107, 90, 91, 92, 93, + 90, 91, 92, 93, 90, 91, 92, 93, 234, 90, + 91, 92, 93, 535, 536, 235, 33, 34, 238, 14, + 137, 245, 53, 264, 265, 32, 267, 245, 35, 36, + 37, 38, 53, 128, 151, 93, 381, 22, 96, 16, + 157, 158, 159, 20, 550, 259, 646, 24, 302, 128, + 572, 242, 243, 244, 22, 246, 247, 128, 249, 250, + 90, 91, 92, 93, 22, 182, 183, 184, 185, 22, + 187, 188, 189, 595, 301, 295, 11, 22, 136, 39, + 22, 301, 432, 90, 91, 92, 93, 14, 82, 11, + 22, 56, 82, 615, 16, 90, 91, 92, 93, 128, + 127, 159, 85, 25, 22, 90, 91, 92, 93, 226, + 227, 228, 229, 230, 231, 232, 233, 127, 13, 82, + 127, 118, 90, 91, 92, 93, 122, 123, 124, 125, + 126, 53, 90, 91, 92, 93, 58, 90, 91, 92, + 93, 53, 76, 53, 358, 53, 263, 264, 265, 266, + 267, 11, 497, 128, 41, 58, 16, 15, 56, 32, + 56, 381, 35, 36, 37, 38, 283, 225, 127, 90, + 91, 92, 93, 397, 12, 401, 396, 86, 432, 397, + 114, 13, 76, 25, 301, 119, 25, 245, 122, 123, + 124, 125, 126, 53, 311, 25, 16, 547, 58, 316, + 20, 25, 25, 548, 24, 128, 426, 398, 76, 77, + 430, 402, 432, 18, 405, 56, 95, 90, 91, 92, + 93, 128, 53, 22, 95, 119, 95, 454, 122, 123, + 124, 125, 126, 424, 454, 128, 127, 127, 12, 356, + 357, 90, 91, 92, 93, 113, 114, 364, 12, 12, + 12, 119, 12, 127, 122, 123, 124, 125, 126, 16, + 76, 77, 78, 128, 90, 91, 92, 93, 385, 386, + 490, 127, 492, 464, 22, 466, 127, 497, 127, 396, + 127, 53, 399, 400, 128, 11, 477, 90, 91, 92, + 93, 11, 86, 547, 110, 111, 112, 113, 114, 12, + 358, 127, 127, 119, 22, 15, 122, 123, 124, 125, + 126, 90, 91, 92, 93, 90, 91, 92, 93, 127, + 22, 128, 439, 549, 127, 127, 127, 547, 548, 84, + 388, 128, 127, 530, 531, 561, 527, 454, 127, 397, + 537, 10, 22, 128, 564, 565, 22, 16, 127, 127, + 570, 20, 127, 42, 127, 24, 127, 17, 83, 585, + 127, 30, 588, 13, 114, 571, 586, 21, 485, 23, + 646, 127, 26, 399, 28, 29, 573, 574, 575, 492, + 577, 601, 602, 603, 285, 418, 579, 41, 579, 424, + 44, 508, 589, 276, 48, 503, 136, 617, 618, 596, + 597, 55, 56, 57, 58, 59, 397, -1, 245, 629, + -1, 625, -1, -1, -1, 641, 474, 637, 535, 536, + -1, -1, -1, 620, -1, 645, 646, -1, -1, 649, + 68, -1, -1, -1, -1, -1, 633, -1, 76, 77, + 78, -1, 90, 91, 92, 93, -1, 644, -1, -1, + -1, -1, -1, -1, 571, 572, -1, 654, -1, 97, + -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, -1, 595, 127, + -1, 119, 136, -1, 122, 123, 124, 125, 126, 90, + 91, 92, 93, 90, 91, 92, 93, -1, 615, 3, + 4, 5, 6, 7, 8, 9, -1, -1, 566, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 576, -1, + -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, + 127, -1, 186, -1, -1, -1, -1, -1, 192, -1, + -1, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 0, 1, -1, + 224, -1, -1, -1, -1, -1, -1, 10, 11, -1, + 13, -1, -1, 16, -1, -1, 19, 20, 21, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, -1, 35, 36, 37, 38, -1, 40, -1, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, + -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1, 115, 116, - -1, 118, -1, 120, 121, -1, 10, 11, 12, 13, - -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, + 0, 1, 115, 116, -1, 118, -1, 120, 121, -1, + 10, 11, -1, 13, -1, 128, 16, -1, -1, 19, + 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, + 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, + 60, 61, 62, 63, 64, 65, 66, 67, -1, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, -1, -1, -1, -1, -1, 87, -1, -1, + -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 68, -1, -1, -1, -1, 443, + -1, -1, 76, 77, 78, 115, 116, -1, 118, -1, + 120, 121, -1, -1, -1, 89, -1, -1, 128, -1, + -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, -1, -1, -1, -1, 119, -1, 1, 122, 123, + 124, 125, 126, -1, 498, 499, 10, 11, 12, 13, + -1, -1, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - -1, 35, 36, 37, 38, -1, 40, -1, -1, 43, + -1, 35, 36, 37, 38, 529, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, - 94, -1, -1, -1, -1, -1, -1, -1, -1, 68, - -1, -1, -1, -1, -1, 443, -1, 76, 77, 78, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 89, -1, -1, -1, 128, -1, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, -1, -1, -1, -1, - 119, -1, 1, 122, 123, 124, 125, 126, -1, -1, - 498, 10, 11, 12, 13, -1, -1, 16, -1, -1, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1, 115, 116, -1, 118, -1, 120, 121, -1, 10, + 11, 12, 13, -1, 128, 16, -1, -1, 19, 20, + 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, + -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, 69, 70, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, -1, -1, -1, -1, -1, 87, -1, -1, -1, + -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1, 115, 116, -1, 118, -1, 120, + 121, -1, 10, 11, 12, 13, -1, 128, 16, -1, + -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, + 38, -1, 40, -1, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, + -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1, 115, 116, -1, + 118, -1, 120, 121, -1, 10, 11, 12, 13, -1, + 128, 16, -1, -1, 19, 20, 21, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + 35, 36, 37, 38, -1, 40, -1, -1, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, 69, 70, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, -1, -1, -1, + -1, -1, 87, -1, -1, -1, -1, -1, -1, 94, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, + 115, 116, -1, 118, -1, 120, 121, -1, 10, 11, + 12, 13, -1, 128, 16, -1, -1, 19, 20, 21, + 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, -1, 35, 36, 37, 38, -1, 40, -1, + -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, 65, 66, 67, -1, 69, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1, 115, 116, -1, 118, -1, 120, 121, + -1, 10, 11, 12, 13, -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, - -1, 40, -1, 531, 43, 44, 45, 46, 47, 48, + -1, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, @@ -1120,18 +1170,18 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 115, 116, -1, 118, - -1, 120, 121, -1, 10, 11, 12, 13, -1, 128, + -1, 120, 121, -1, 10, 11, -1, 13, -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, 69, 70, 71, 72, 73, 74, 75, - -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, 79, 80, 81, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 115, - 116, -1, 118, -1, 120, 121, -1, 10, 11, 12, + 116, -1, 118, -1, 120, 121, -1, 10, 11, -1, 13, -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, -1, -1, @@ -1143,224 +1193,177 @@ static const yytype_int16 yycheck[] = -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 115, 116, -1, 118, -1, 120, 121, -1, - 10, 11, 12, 13, -1, 128, 16, -1, -1, 19, + 10, 11, -1, 13, -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, 69, + 60, 61, 62, 63, 64, 65, -1, 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, - 80, 81, -1, -1, -1, -1, -1, 87, -1, -1, - -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, 115, 116, -1, 118, -1, - 120, 121, -1, 10, 11, 12, 13, -1, 128, 16, - -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, - 37, 38, -1, 40, -1, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, - 87, -1, -1, -1, -1, -1, -1, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1, 115, 116, - -1, 118, -1, 120, 121, -1, 10, 11, -1, 13, - -1, 128, 16, -1, -1, 19, 20, 21, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - -1, 35, 36, 37, 38, -1, 40, -1, -1, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, 69, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - 84, -1, -1, 87, -1, -1, -1, -1, -1, -1, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 115, 116, -1, 118, -1, 120, 121, -1, 10, - 11, -1, 13, -1, 128, 16, -1, -1, 19, 20, - 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, - -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, - 81, -1, -1, -1, -1, -1, 87, -1, -1, -1, - -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, 115, 116, -1, 118, -1, 120, - 121, -1, 10, 11, -1, 13, -1, 128, 16, -1, - -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, - 38, -1, 40, -1, -1, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, - -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, - -1, 79, 80, 81, -1, 1, -1, -1, -1, 87, + 80, 81, -1, 1, -1, -1, -1, 87, -1, -1, + -1, -1, 10, -1, 94, 13, -1, -1, 16, -1, + -1, 19, 20, 21, 22, -1, 24, 25, -1, -1, + -1, 29, 30, -1, -1, 115, 116, -1, 118, -1, + 120, 121, -1, -1, -1, -1, 44, 45, 128, -1, + -1, 49, 50, -1, 52, 53, 54, 55, 56, 57, + -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, + -1, -1, 70, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 94, 13, -1, -1, - 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, -1, -1, 44, 45, 128, -1, -1, 49, 50, -1, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, - -1, -1, -1, 79, 80, 81, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, 94, 13, - -1, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, 115, - 116, -1, 118, -1, 120, 121, -1, -1, -1, -1, - 44, 45, 128, -1, -1, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, 11, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, 11, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, -1, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, -1, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, 11, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, -1, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, 127, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, -1, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, - 94, -1, 16, -1, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, 115, 116, -1, 118, -1, 120, 121, -1, -1, - 44, 45, -1, -1, 128, 49, 50, -1, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, -1, -1, 70, 71, 72, 73, - 74, 75, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 94, -1, -1, -1, 68, -1, -1, -1, -1, -1, - -1, -1, 76, 77, 78, -1, -1, -1, -1, -1, - -1, 115, 116, -1, 118, 89, 120, 121, -1, -1, - -1, 95, 96, 97, 128, 99, 100, 101, 102, 103, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, 11, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, 11, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, -1, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, -1, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, 11, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, -1, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, 127, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, -1, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, 10, -1, -1, 13, 94, -1, + 16, -1, -1, 19, 20, 21, -1, -1, 24, 25, + -1, -1, -1, 29, 30, -1, -1, -1, -1, 115, + 116, -1, 118, -1, 120, 121, -1, -1, 44, 45, + -1, -1, 128, 49, 50, -1, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, + -1, 67, -1, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, + -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, -1, -1, -1, -1, -1, -1, 115, + 116, -1, 118, 89, 120, 121, -1, -1, -1, 95, + 96, 97, 128, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, + -1, -1, -1, 119, 68, -1, 122, 123, 124, 125, + 126, -1, 76, 77, 78, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, + -1, 95, 96, 97, -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, -1, 119, 68, -1, 122, 123, 124, 125, 126, -1, 76, 77, 78, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 96, 97, -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, -1, 119, 68, -1, 122, 123, 124, 125, 126, -1, 76, 77, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 95, 96, 97, -1, 99, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, -1, -1, -1, -1, 119, - 68, -1, 122, 123, 124, 125, 126, -1, 76, 77, - 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, - -1, 119, 68, -1, 122, 123, 124, 125, 126, -1, - 76, 77, 78, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 76, - 77, 78, -1, 119, -1, -1, 122, 123, 124, 125, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 76, 77, 78, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, - -1, -1, 119, -1, -1, 122, 123, 124, 125, 126, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 76, 77, 78, -1, 119, -1, -1, 122, 123, - 124, 125, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 76, 77, 78, -1, -1, -1, -1, -1, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - -1, 76, 77, 78, 119, -1, -1, 122, 123, 124, - 125, 126, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 76, 77, 78, -1, 119, -1, -1, 122, 123, - 124, 125, 126, 108, 109, 110, 111, 112, 113, 114, - -1, -1, -1, -1, 119, -1, -1, 122, 123, 124, - 125, 126, -1, -1, -1, -1, 111, 112, 113, 114, - -1, -1, -1, -1, 119, -1, -1, 122, 123, 124, - 125, 126 + 110, 111, 112, 113, 114, 76, 77, 78, -1, 119, + -1, -1, 122, 123, 124, 125, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, -1, -1, -1, -1, 119, -1, + -1, 122, 123, 124, 125, 126, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 76, 77, 78, + -1, 119, -1, -1, 122, 123, 124, 125, 126, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, -1, -1, -1, -1, -1, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, -1, 76, 77, 78, + 119, -1, -1, 122, 123, 124, 125, 126, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 76, 77, 78, + -1, 119, -1, -1, 122, 123, 124, 125, 126, 108, + 109, 110, 111, 112, 113, 114, 76, 77, 78, -1, + 119, -1, -1, 122, 123, 124, 125, 126, -1, -1, + -1, 110, 111, 112, 113, 114, 76, 77, 78, -1, + 119, -1, -1, 122, 123, 124, 125, 126, -1, -1, + -1, 111, 112, 113, 114, -1, -1, -1, -1, 119, + -1, -1, 122, 123, 124, 125, 126, -1, -1, -1, + -1, -1, 112, 113, 114, -1, -1, -1, -1, 119, + -1, -1, 122, 123, 124, 125, 126 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1373,66 +1376,66 @@ static const yytype_uint8 yystos[] = 49, 50, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 67, 70, 71, 72, 73, 74, 75, 79, 80, 81, 94, 115, 116, 118, 120, 121, - 128, 140, 202, 203, 204, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 218, 225, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 11, 139, 1, 22, + 128, 140, 201, 202, 203, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 217, 224, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 11, 139, 1, 22, 26, 27, 28, 31, 32, 35, 36, 37, 38, 40, 43, 46, 47, 48, 51, 65, 69, 87, 138, 139, - 152, 166, 202, 222, 66, 150, 151, 152, 140, 148, - 195, 196, 148, 53, 58, 139, 234, 242, 225, 242, - 216, 242, 216, 242, 242, 216, 118, 128, 219, 234, - 235, 236, 216, 139, 216, 178, 178, 179, 242, 242, - 217, 13, 128, 216, 178, 216, 128, 128, 85, 128, - 139, 216, 53, 140, 203, 224, 234, 242, 139, 242, - 225, 53, 58, 181, 203, 216, 216, 216, 216, 216, - 127, 202, 90, 91, 92, 93, 15, 11, 13, 128, + 152, 166, 201, 221, 66, 150, 151, 152, 140, 148, + 194, 195, 148, 53, 58, 139, 233, 241, 224, 241, + 215, 241, 215, 241, 241, 215, 118, 128, 218, 233, + 234, 235, 215, 139, 215, 178, 178, 179, 241, 241, + 216, 13, 128, 215, 178, 215, 128, 128, 85, 128, + 139, 215, 53, 140, 202, 223, 233, 241, 139, 241, + 224, 53, 58, 181, 202, 215, 215, 215, 215, 215, + 127, 201, 90, 91, 92, 93, 15, 11, 13, 128, 108, 109, 108, 106, 107, 106, 68, 76, 77, 78, 89, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 119, 122, 123, 124, 125, 126, 128, 11, 13, 11, - 13, 11, 13, 11, 142, 180, 53, 53, 220, 234, - 235, 236, 128, 128, 30, 118, 128, 232, 234, 128, + 13, 11, 13, 11, 142, 180, 53, 53, 219, 233, + 234, 235, 128, 128, 30, 118, 128, 231, 233, 128, 128, 11, 143, 143, 177, 181, 22, 177, 181, 39, 140, 168, 22, 32, 35, 36, 37, 38, 22, 151, - 152, 150, 16, 20, 24, 140, 186, 187, 189, 190, - 191, 192, 14, 128, 216, 219, 234, 235, 236, 127, - 202, 82, 184, 56, 140, 182, 82, 140, 183, 183, - 224, 128, 85, 202, 127, 139, 127, 127, 202, 225, - 225, 242, 203, 203, 22, 224, 13, 127, 202, 202, - 202, 202, 216, 202, 202, 127, 202, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 10, 11, 13, 16, 20, - 24, 25, 54, 79, 128, 206, 234, 127, 202, 202, - 202, 202, 202, 202, 202, 202, 148, 53, 140, 176, - 53, 53, 82, 140, 221, 142, 142, 118, 142, 30, - 230, 231, 233, 234, 235, 236, 142, 142, 128, 142, - 142, 144, 41, 156, 177, 155, 177, 139, 165, 202, - 165, 165, 173, 202, 165, 58, 185, 185, 15, 127, - 202, 184, 127, 56, 183, 56, 142, 200, 200, 225, - 203, 14, 205, 127, 86, 127, 202, 12, 202, 13, - 22, 14, 127, 98, 25, 202, 202, 25, 25, 25, - 25, 25, 127, 202, 128, 127, 22, 14, 22, 14, + 152, 150, 16, 20, 24, 140, 186, 187, 188, 189, + 190, 191, 14, 128, 215, 218, 233, 234, 235, 127, + 201, 82, 184, 56, 140, 182, 82, 140, 183, 183, + 223, 128, 85, 201, 127, 139, 127, 127, 201, 224, + 224, 241, 202, 202, 22, 223, 13, 127, 201, 201, + 201, 201, 215, 201, 201, 127, 201, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 10, 11, 13, 16, 20, + 24, 25, 54, 79, 128, 205, 233, 127, 201, 201, + 201, 201, 201, 201, 201, 201, 148, 53, 140, 176, + 53, 53, 82, 140, 220, 142, 142, 118, 142, 30, + 229, 230, 232, 233, 234, 235, 142, 142, 128, 142, + 142, 144, 41, 156, 177, 155, 177, 139, 165, 201, + 165, 165, 173, 201, 165, 58, 185, 185, 15, 127, + 201, 184, 127, 56, 183, 56, 142, 199, 199, 224, + 202, 14, 204, 127, 86, 127, 201, 12, 201, 13, + 22, 14, 127, 98, 25, 201, 201, 25, 25, 25, + 25, 25, 127, 201, 128, 127, 22, 14, 22, 14, 22, 14, 22, 12, 18, 141, 11, 22, 183, 56, - 95, 174, 202, 174, 128, 227, 234, 128, 140, 166, - 171, 174, 175, 202, 230, 142, 173, 172, 202, 148, - 142, 53, 153, 22, 142, 197, 198, 154, 95, 140, - 188, 188, 190, 127, 198, 128, 140, 193, 194, 127, - 23, 140, 226, 224, 127, 14, 202, 12, 216, 22, - 14, 127, 225, 12, 12, 12, 12, 142, 142, 11, - 22, 223, 127, 127, 228, 229, 234, 128, 142, 127, - 22, 159, 174, 127, 127, 12, 128, 140, 145, 53, - 182, 11, 183, 216, 195, 11, 202, 86, 14, 12, - 127, 22, 161, 142, 216, 143, 143, 15, 127, 174, - 174, 143, 157, 128, 127, 170, 170, 146, 160, 224, - 183, 148, 22, 199, 200, 127, 201, 84, 148, 162, - 33, 34, 140, 167, 167, 234, 128, 127, 127, 168, - 172, 174, 143, 143, 143, 234, 143, 22, 197, 12, - 148, 140, 149, 12, 148, 143, 128, 174, 143, 143, - 22, 127, 168, 168, 168, 147, 42, 169, 12, 22, - 56, 163, 12, 174, 127, 168, 168, 158, 143, 127, - 139, 17, 83, 140, 164, 127, 143, 170, 168, 148, - 143, 168, 175, 84, 167, 127, 143 + 95, 174, 201, 174, 128, 226, 233, 128, 140, 166, + 171, 174, 175, 201, 229, 142, 173, 172, 201, 148, + 142, 53, 153, 22, 142, 196, 197, 154, 95, 95, + 189, 127, 197, 128, 140, 192, 193, 127, 23, 140, + 225, 223, 127, 14, 201, 12, 215, 22, 14, 127, + 224, 12, 12, 12, 12, 142, 142, 11, 22, 222, + 127, 127, 227, 228, 233, 128, 142, 127, 22, 159, + 174, 127, 127, 12, 128, 140, 145, 53, 182, 11, + 183, 215, 215, 194, 11, 201, 86, 14, 12, 127, + 22, 161, 142, 215, 143, 143, 15, 127, 174, 174, + 143, 157, 128, 127, 170, 170, 146, 160, 223, 183, + 148, 22, 198, 199, 127, 200, 84, 148, 162, 33, + 34, 140, 167, 167, 233, 128, 127, 127, 168, 172, + 174, 143, 143, 143, 233, 143, 22, 196, 12, 148, + 140, 149, 12, 148, 143, 128, 174, 143, 143, 22, + 127, 168, 168, 168, 147, 42, 169, 12, 22, 56, + 163, 12, 174, 127, 168, 168, 158, 143, 127, 139, + 17, 83, 140, 164, 127, 143, 170, 168, 148, 143, + 168, 175, 84, 167, 127, 143 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1450,28 +1453,28 @@ static const yytype_uint8 yyr1[] = 169, 169, 170, 171, 171, 172, 172, 173, 174, 175, 176, 176, 177, 178, 179, 180, 181, 181, 182, 182, 183, 183, 183, 184, 184, 185, 185, 186, 186, 187, - 188, 188, 188, 189, 190, 190, 191, 191, 191, 192, - 192, 193, 193, 194, 196, 195, 197, 197, 198, 199, - 199, 201, 200, 202, 202, 202, 202, 202, 203, 203, - 203, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 205, 204, 206, 206, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 209, 209, 209, 209, 209, 210, 210, 211, 211, - 211, 211, 212, 212, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 214, 214, 214, 214, 214, 215, 215, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 217, 216, - 216, 216, 216, 218, 218, 218, 218, 219, 219, 219, - 219, 219, 220, 220, 220, 221, 221, 221, 222, 223, - 222, 224, 224, 225, 225, 226, 226, 227, 228, 228, - 228, 229, 230, 230, 230, 231, 231, 232, 232, 233, - 234, 235, 236, 237, 237, 238, 239, 239, 240, 240, - 241, 241, 242, 242, 242, 242 + 187, 187, 188, 188, 188, 189, 189, 190, 190, 190, + 191, 191, 192, 192, 193, 195, 194, 196, 196, 197, + 198, 198, 200, 199, 201, 201, 201, 201, 201, 202, + 202, 202, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 204, 203, 205, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 208, 208, 208, 208, 208, 209, 209, 210, + 210, 210, 210, 211, 211, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 213, 213, 213, 213, 213, 214, + 214, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, + 215, 215, 215, 215, 217, 217, 217, 217, 218, 218, + 218, 218, 218, 219, 219, 219, 220, 220, 220, 221, + 222, 221, 223, 223, 224, 224, 225, 225, 226, 227, + 227, 227, 228, 229, 229, 229, 230, 230, 231, 231, + 232, 233, 234, 235, 236, 236, 237, 238, 238, 239, + 239, 240, 240, 241, 241, 241, 241 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1488,29 +1491,29 @@ static const yytype_int8 yyr2[] = 3, 3, 3, 3, 3, 1, 2, 6, 1, 2, 0, 2, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, - 1, 2, 1, 2, 1, 0, 1, 1, 1, 3, - 1, 1, 2, 3, 1, 1, 2, 3, 1, 1, - 1, 1, 1, 3, 0, 2, 1, 1, 4, 1, - 1, 0, 6, 3, 3, 3, 3, 1, 2, 3, - 1, 3, 3, 5, 6, 3, 3, 5, 2, 4, - 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, 1, - 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 3, 2, 2, 3, 3, 3, 1, 3, - 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 4, 5, 4, 4, 2, 2, - 1, 1, 1, 1, 5, 2, 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, 3, 2, 4, 3, 3, 2, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 3, 0, - 6, 1, 1, 1, 1, 1, 2, 1, 2, 3, - 1, 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 + 1, 2, 1, 2, 1, 0, 1, 1, 1, 2, + 3, 4, 2, 3, 4, 1, 1, 2, 3, 1, + 1, 1, 1, 1, 3, 0, 2, 1, 1, 4, + 1, 1, 0, 6, 3, 3, 3, 3, 1, 2, + 3, 1, 3, 3, 5, 6, 3, 3, 5, 2, + 4, 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, + 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 3, 2, 2, 3, 3, 3, 1, + 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 4, 5, 4, 4, 2, + 2, 1, 1, 1, 1, 5, 2, 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, 3, 2, 4, 3, 3, 2, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, + 0, 6, 1, 1, 1, 1, 1, 2, 1, 2, + 3, 1, 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 { @@ -1556,18 +1559,18 @@ static const toketypes yy_type_tab[] = toketype_ival, 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_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_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_pval, - toketype_opval, toketype_opval, 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_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_pval, 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_ival, 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 }; /* Generated from: - * cdef9ff44874bfb2f6175adcd920473f8c6601794f20f7977a13e1c2e2be5e26 perly.y + * 59c1b0d8db6eb03422c4aa700803c201837a9c4085a3177364c2eda6cbeb7cc7 perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.y b/perly.y index 79622f1ca377..722c8ffdd1d2 100644 --- a/perly.y +++ b/perly.y @@ -114,7 +114,7 @@ %type termbinop termunop anonymous termdo %type termrelop relopchain termeqop eqopchain %type sigslurpsigil -%type sigvarname sigdefault sigscalarelem sigslurpelem +%type sigvarname sigscalarelem sigslurpelem %type sigelem siglist optsiglist subsigguts subsignature optsubsignature %type subbody optsubbody sigsubbody optsigsubbody %type formstmtseq formline formarg @@ -823,99 +823,39 @@ sigslurpsigil: { $$ = '%'; } /* @, %, @foo, %foo */ -sigslurpelem: sigslurpsigil sigvarname sigdefault/* def only to catch errors */ +sigslurpelem: sigslurpsigil sigvarname { - I32 sigil = $sigslurpsigil; - OP *var = $sigvarname; - OP *defop = $sigdefault; - - if (parser->sig_slurpy) - yyerror("Multiple slurpy parameters not allowed"); - parser->sig_slurpy = (char)sigil; - - if (defop) - yyerror("A slurpy parameter may not have " - "a default value"); - - $$ = var ? newSTATEOP(0, NULL, var) : NULL; + subsignature_append_slurpy($sigslurpsigil, $sigvarname); + $$ = NULL; } - ; - -/* default part of sub signature scalar element: i.e. '= default_expr' */ -sigdefault - : empty - | ASSIGNOP - { $$ = newARGDEFELEMOP(0, newOP(OP_NULL, 0), parser->sig_elems); } - | ASSIGNOP term + | sigslurpsigil sigvarname ASSIGNOP { - I32 flags = 0; - if ($ASSIGNOP == OP_DORASSIGN) - flags |= OPpARG_IF_UNDEF << 8; - if ($ASSIGNOP == OP_ORASSIGN) - flags |= OPpARG_IF_FALSE << 8; - $$ = newARGDEFELEMOP(flags, $term, parser->sig_elems); + yyerror("A slurpy parameter may not have a default value"); } - + | sigslurpsigil sigvarname ASSIGNOP term + { + yyerror("A slurpy parameter may not have a default value"); + } + ; /* subroutine signature scalar element: e.g. '$x', '$=', '$x = $default' */ sigscalarelem: - PERLY_DOLLAR sigvarname sigdefault + PERLY_DOLLAR sigvarname { - OP *var = $sigvarname; - OP *defop = $sigdefault; - - if (parser->sig_slurpy) - yyerror("Slurpy parameter not last"); - - parser->sig_elems++; - - if (defop) { - parser->sig_optelems++; - - OP *defexpr = cLOGOPx(defop)->op_first; - - if ( defexpr->op_type == OP_NULL - && !(defexpr->op_flags & OPf_KIDS)) - { - /* handle '$=' special case */ - if (var) - yyerror("Optional parameter " - "lacks default expression"); - op_free(defop); - } - else { - /* a normal '=default' expression */ - if (var) { - var->op_flags |= OPf_STACKED; - (void)op_sibling_splice(var, - NULL, 0, defop); - scalar(defop); - } - else - var = newUNOP(OP_NULL, 0, defop); - - LINKLIST(var); - /* NB: normally the first child of a - * logop is executed before the logop, - * and it pushes a boolean result - * ready for the logop. For ARGDEFELEM, - * the op itself does the boolean - * calculation, so set the first op to - * it instead. - */ - var->op_next = defop; - defexpr->op_next = var; - } - } - else { - if (parser->sig_optelems) - yyerror("Mandatory parameter " - "follows optional parameter"); - } - - $$ = var ? newSTATEOP(0, NULL, var) : NULL; + subsignature_append_positional($sigvarname, 0, NULL); + $$ = NULL; } - ; + | PERLY_DOLLAR sigvarname ASSIGNOP + { + subsignature_append_positional($sigvarname, $ASSIGNOP, newOP(OP_NULL, 0)); + $$ = NULL; + } + | PERLY_DOLLAR sigvarname ASSIGNOP term[defop] + { + subsignature_append_positional($sigvarname, $ASSIGNOP, $defop); + $$ = NULL; + } + ; /* subroutine signature element: e.g. '$x = $default' or '%h' */ @@ -925,16 +865,13 @@ sigelem: sigscalarelem { parser->in_my = KEY_sigvar; $$ = $sigslurpelem; } ; -/* list of subroutine signature elements */ +/* list of subroutine signature elements + * These parser tokens no longer emit anything; they are combined just for + * their side-effect on the parser structures. */ siglist: siglist[list] PERLY_COMMA - { $$ = $list; } | siglist[list] PERLY_COMMA sigelem[element] - { - $$ = op_append_list(OP_LINESEQ, $list, $element); - } | sigelem[element] %prec PREC_LOW - { $$ = $element; } ; /* () or (....) */ @@ -956,51 +893,17 @@ subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE subsigguts: { ENTER; - SAVEIV(parser->sig_elems); - SAVEIV(parser->sig_optelems); - SAVEI8(parser->sig_slurpy); - parser->sig_elems = 0; - parser->sig_optelems = 0; - parser->sig_slurpy = 0; - parser->in_my = KEY_sigvar; + subsignature_start(); + parser->in_my = KEY_sigvar; } optsiglist { - OP *sigops = $optsiglist; - struct op_argcheck_aux *aux; - OP *check; - if (!FEATURE_SIGNATURES_IS_ENABLED && !CvIsMETHOD(PL_compcv)) Perl_croak(aTHX_ "Experimental " "subroutine signatures not enabled"); /* We shouldn't get here otherwise */ - aux = (struct op_argcheck_aux*) - PerlMemShared_malloc( - sizeof(struct op_argcheck_aux)); - aux->params = parser->sig_elems; - aux->opt_params = parser->sig_optelems; - aux->slurpy = parser->sig_slurpy; - check = newUNOP_AUX(OP_ARGCHECK, 0, NULL, - (UNOP_AUX_item *)aux); - sigops = op_prepend_elem(OP_LINESEQ, check, sigops); - sigops = op_prepend_elem(OP_LINESEQ, - newSTATEOP(0, NULL, NULL), - sigops); - /* a nextstate at the end handles context - * correctly for an empty sub body */ - sigops = op_append_elem(OP_LINESEQ, - sigops, - newSTATEOP(0, NULL, NULL)); - /* wrap the list of arg ops in a NULL aux op. - This serves two purposes. First, it makes - the arg list a separate subtree from the - body of the sub, and secondly the null op - may in future be upgraded to an OP_SIGNATURE - when implemented. For now leave it as - ex-argcheck */ - $$ = newUNOP_AUX(OP_ARGCHECK, 0, sigops, NULL); - op_null($$); + $$ = subsignature_finish(); CvSIGNATURE_on(PL_compcv); diff --git a/proto.h b/proto.h index 3b125616efa0..2a0b0ff01b8d 100644 --- a/proto.h +++ b/proto.h @@ -4399,6 +4399,26 @@ Perl_sub_crush_depth(pTHX_ CV *cv) #define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH \ assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM) +PERL_CALLCONV void +Perl_subsignature_append_positional(pTHX_ OP *varop, OPCODE defmode, OP *defexpr) + __attribute__visibility__("hidden"); +#define PERL_ARGS_ASSERT_SUBSIGNATURE_APPEND_POSITIONAL + +PERL_CALLCONV void +Perl_subsignature_append_slurpy(pTHX_ I32 sigil, OP *varop) + __attribute__visibility__("hidden"); +#define PERL_ARGS_ASSERT_SUBSIGNATURE_APPEND_SLURPY + +PERL_CALLCONV OP * +Perl_subsignature_finish(pTHX) + __attribute__visibility__("hidden"); +#define PERL_ARGS_ASSERT_SUBSIGNATURE_FINISH + +PERL_CALLCONV void +Perl_subsignature_start(pTHX) + __attribute__visibility__("hidden"); +#define PERL_ARGS_ASSERT_SUBSIGNATURE_START + PERL_CALLCONV void Perl_suspend_compcv(pTHX_ struct suspended_compcv *buffer); #define PERL_ARGS_ASSERT_SUSPEND_COMPCV \ diff --git a/sv.c b/sv.c index 3b1488b411f9..f6215c9f34fa 100644 --- a/sv.c +++ b/sv.c @@ -13991,11 +13991,13 @@ 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->recheck_charset_validity = proto->recheck_charset_validity; + /* A currently running signature parser really shouldn't be required in + * newly-cloned thread + */ + parser->signature = NULL; + { char * const ols = SvPVX(proto->linestr); char * const ls = SvPVX(parser->linestr); diff --git a/t/op/signatures.t b/t/op/signatures.t index 5cf420a9ac38..ddd5ca4f5479 100644 --- a/t/op/signatures.t +++ b/t/op/signatures.t @@ -1725,6 +1725,29 @@ SKIP: { diag("Error was $@"); } +SKIP: { + use Config; + $Config{useithreads} or skip "No threads", 1; + + ok(eval <<'EOPERL', + no warnings 'closure'; + sub signature_thread_test ( + $x = do { + my $thr; + BEGIN { + use threads; + $thr = threads->create( sub { "OK" } ); + } + $thr; + } + ) { + return $x->join; + } + signature_thread_test() eq "OK" +EOPERL + 'thread cloning during signature parse does not crash'); +} + done_testing; 1; diff --git a/toke.c b/toke.c index 3fb3261fa4bb..9c035755507d 100644 --- a/toke.c +++ b/toke.c @@ -9954,9 +9954,11 @@ S_pending_ident(pTHX) * index. If we ever need more fields, use a real malloced * aux strut instead. */ - o = newUNOP_AUX(OP_ARGELEM, 0, NULL, - INT2PTR(UNOP_AUX_item *, - (PL_parser->sig_elems))); + assert(PL_parser->signature); + /* We don't yet know the argindex but subsignature_append_*() + * will fill it in + */ + o = newUNOP_AUX(OP_ARGELEM, 0, NULL, NULL); o->op_private |= ( PL_tokenbuf[0] == '$' ? OPpARGELEM_SV : PL_tokenbuf[0] == '@' ? OPpARGELEM_AV : OPpARGELEM_HV);