perl/perly.act
Paul "LeoNerd" Evans e25a4696dd perly.y: Reduce repetition of signature scalar element grammar
By defining a helper term for optional defaulting expression we can
remove one of the three alternate cases down to just two. This will help
when adding more code to these action blocks in future,
2025-08-25 14:06:05 +01:00

2306 lines
66 KiB
C
Generated

/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by regen_perly.pl from perly.y.
Any changes made here will be lost!
*/
case 2: /* @1: %empty */
#line 161 "perly.y"
{
parser->expect = XSTATE;
(yyval.ival) = 0;
}
break;
case 3: /* grammar: GRAMPROG @1 remember stmtseq */
#line 166 "perly.y"
{
newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
PL_compiling.cop_seq = 0;
(yyval.ival) = 0;
}
break;
case 4: /* @2: %empty */
#line 172 "perly.y"
{
parser->expect = XTERM;
(yyval.ival) = 0;
}
break;
case 5: /* grammar: GRAMEXPR @2 optexpr */
#line 177 "perly.y"
{
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
break;
case 6: /* @3: %empty */
#line 182 "perly.y"
{
parser->expect = XBLOCK;
(yyval.ival) = 0;
}
break;
case 7: /* grammar: GRAMBLOCK @3 block */
#line 187 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = yytoken = YYEOF;
}
break;
case 8: /* @4: %empty */
#line 195 "perly.y"
{
parser->expect = XSTATE;
(yyval.ival) = 0;
}
break;
case 9: /* grammar: GRAMBARESTMT @4 barestmt */
#line 200 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = yytoken = YYEOF;
}
break;
case 10: /* @5: %empty */
#line 208 "perly.y"
{
parser->expect = XSTATE;
(yyval.ival) = 0;
}
break;
case 11: /* grammar: GRAMFULLSTMT @5 fullstmt */
#line 213 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = yytoken = YYEOF;
}
break;
case 12: /* @6: %empty */
#line 221 "perly.y"
{
parser->expect = XSTATE;
(yyval.ival) = 0;
}
break;
case 13: /* grammar: GRAMSTMTSEQ @6 stmtseq */
#line 226 "perly.y"
{
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
break;
case 14: /* @7: %empty */
#line 231 "perly.y"
{
parser->expect = XSTATE;
(yyval.ival) = 0;
}
break;
case 15: /* grammar: GRAMSUBSIGNATURE @7 subsigguts */
#line 236 "perly.y"
{
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
break;
case 16: /* sigsub_or_method_named: KW_SUB_named_sig */
#line 245 "perly.y"
{ (yyval.ival) = KW_SUB_named_sig; }
break;
case 17: /* sigsub_or_method_named: KW_METHOD_named */
#line 247 "perly.y"
{ (yyval.ival) = KW_METHOD_named; }
break;
case 18: /* block: PERLY_BRACE_OPEN remember stmtseq PERLY_BRACE_CLOSE */
#line 252 "perly.y"
{ if (parser->copline > (line_t)(ps[-3].val.ival))
parser->copline = (line_t)(ps[-3].val.ival);
(yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
}
break;
case 19: /* empty: %empty */
#line 259 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 20: /* formblock: PERLY_EQUAL_SIGN remember PERLY_SEMICOLON FORMRBRACK formstmtseq PERLY_SEMICOLON PERLY_DOT */
#line 264 "perly.y"
{ if (parser->copline > (line_t)(ps[-6].val.ival))
parser->copline = (line_t)(ps[-6].val.ival);
(yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
}
break;
case 21: /* remember: %empty */
#line 271 "perly.y"
{ (yyval.ival) = block_start(TRUE);
parser->parsed_sub = 0; }
break;
case 22: /* mblock: PERLY_BRACE_OPEN mremember stmtseq PERLY_BRACE_CLOSE */
#line 276 "perly.y"
{ if (parser->copline > (line_t)(ps[-3].val.ival))
parser->copline = (line_t)(ps[-3].val.ival);
(yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
}
break;
case 23: /* mremember: %empty */
#line 283 "perly.y"
{ (yyval.ival) = block_start(FALSE);
parser->parsed_sub = 0; }
break;
case 25: /* $@8: %empty */
#line 292 "perly.y"
{ parser->in_my = KEY_catch; }
break;
case 26: /* $@9: %empty */
#line 294 "perly.y"
{ parser->in_my = 0; intro_my(); }
break;
case 27: /* catch_paren: PERLY_PAREN_OPEN $@8 scalar $@9 PERLY_PAREN_CLOSE */
#line 296 "perly.y"
{ (yyval.opval) = (ps[-2].val.opval); }
break;
case 29: /* stmtseq: stmtseq fullstmt */
#line 303 "perly.y"
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
PL_pad_reset_pending = TRUE;
if ((ps[-1].val.opval) && (ps[0].val.opval))
PL_hints |= HINT_BLOCK_SCOPE;
}
break;
case 31: /* formstmtseq: formstmtseq formline */
#line 314 "perly.y"
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
PL_pad_reset_pending = TRUE;
if ((ps[-1].val.opval) && (ps[0].val.opval))
PL_hints |= HINT_BLOCK_SCOPE;
}
break;
case 32: /* fullstmt: barestmt */
#line 323 "perly.y"
{
(yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
}
break;
case 33: /* fullstmt: labfullstmt */
#line 327 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 34: /* labfullstmt: LABEL barestmt */
#line 331 "perly.y"
{
SV *label = cSVOPx_sv((ps[-1].val.opval));
(yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
savepv(SvPVX_const(label)), (ps[0].val.opval));
op_free((ps[-1].val.opval));
}
break;
case 35: /* labfullstmt: LABEL labfullstmt */
#line 338 "perly.y"
{
SV *label = cSVOPx_sv((ps[-1].val.opval));
(yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
savepv(SvPVX_const(label)), (ps[0].val.opval));
op_free((ps[-1].val.opval));
}
break;
case 36: /* barestmt: PLUGSTMT */
#line 348 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 37: /* barestmt: KW_FORMAT startformsub formname formblock */
#line 350 "perly.y"
{
CV *fmtcv = PL_compcv;
newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
(yyval.opval) = NULL;
if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
pad_add_weakref(fmtcv);
}
parser->parsed_sub = 1;
}
break;
case 38: /* $@10: %empty */
#line 362 "perly.y"
{
init_named_cv(PL_compcv, (ps[-1].val.opval));
parser->in_my = 0;
parser->in_my_stash = NULL;
}
break;
case 39: /* barestmt: KW_SUB_named subname startsub $@10 proto subattrlist optsubbody */
#line 368 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
(ps[-5].val.opval)->op_type == OP_CONST
? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
: newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
;
(yyval.opval) = NULL;
intro_my();
parser->parsed_sub = 1;
}
break;
case 40: /* $@11: %empty */
#line 383 "perly.y"
{
init_named_cv(PL_compcv, (ps[-1].val.opval));
if((ps[-2].val.ival) == KW_METHOD_named) {
croak_kw_unless_class("method");
class_prepare_method_parse(PL_compcv);
}
parser->in_my = 0;
parser->in_my_stash = NULL;
}
break;
case 41: /* barestmt: sigsub_or_method_named subname startsub $@11 subattrlist optsigsubbody */
#line 393 "perly.y"
{
OP *body = (ps[0].val.opval);
SvREFCNT_inc_simple_void(PL_compcv);
(ps[-4].val.opval)->op_type == OP_CONST
? newATTRSUB((ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), body)
: newMYSUB( (ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), body)
;
(yyval.opval) = NULL;
intro_my();
parser->parsed_sub = 1;
}
break;
case 42: /* $@12: %empty */
#line 406 "perly.y"
{
switch((ps[-1].val.ival)) {
case KEY_ADJUST:
croak_kw_unless_class("ADJUST");
class_prepare_method_parse(PL_compcv);
break;
default:
NOT_REACHED;
}
}
break;
case 43: /* barestmt: PHASER startsub $@12 optsubbody */
#line 417 "perly.y"
{
OP *body = (ps[0].val.opval);
SvREFCNT_inc_simple_void(PL_compcv);
CV *cv;
switch((ps[-3].val.ival)) {
case KEY_ADJUST:
cv = newATTRSUB((ps[-2].val.ival), NULL, NULL, NULL, body);
class_add_ADJUST(PL_curstash, cv);
break;
}
(yyval.opval) = NULL;
}
break;
case 44: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_SEMICOLON */
#line 436 "perly.y"
{
package((ps[-1].val.opval));
if ((ps[-2].val.opval))
package_version((ps[-2].val.opval));
(yyval.opval) = NULL;
}
break;
case 45: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_SEMICOLON */
#line 443 "perly.y"
{
package((ps[-2].val.opval));
if ((ps[-3].val.opval))
package_version((ps[-3].val.opval));
(yyval.opval) = NULL;
class_setup_stash(PL_curstash);
if ((ps[-1].val.opval)) {
class_apply_attributes(PL_curstash, (ps[-1].val.opval));
}
}
break;
case 46: /* $@13: %empty */
#line 454 "perly.y"
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 47: /* barestmt: KW_USE_or_NO startsub $@13 BAREWORD BAREWORD optlistexpr PERLY_SEMICOLON */
#line 458 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
parser->parsed_sub = 1;
(yyval.opval) = NULL;
}
break;
case 48: /* barestmt: KW_IF PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */
#line 465 "perly.y"
{
(yyval.opval) = block_end((ps[-4].val.ival),
newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-6].val.ival);
}
break;
case 49: /* barestmt: KW_UNLESS PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */
#line 471 "perly.y"
{
(yyval.opval) = block_end((ps[-4].val.ival),
newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
parser->copline = (line_t)(ps[-6].val.ival);
}
break;
case 50: /* barestmt: KW_GIVEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */
#line 477 "perly.y"
{
(yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
parser->copline = (line_t)(ps[-5].val.ival);
}
break;
case 51: /* barestmt: KW_WHEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */
#line 482 "perly.y"
{ (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
break;
case 52: /* barestmt: KW_DEFAULT block */
#line 484 "perly.y"
{ (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
break;
case 53: /* barestmt: KW_WHILE PERLY_PAREN_OPEN remember texpr PERLY_PAREN_CLOSE mintro mblock cont */
#line 486 "perly.y"
{
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, NULL,
(ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
parser->copline = (line_t)(ps[-7].val.ival);
}
break;
case 54: /* barestmt: KW_UNTIL PERLY_PAREN_OPEN remember iexpr PERLY_PAREN_CLOSE mintro mblock cont */
#line 493 "perly.y"
{
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, NULL,
(ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
parser->copline = (line_t)(ps[-7].val.ival);
}
break;
case 55: /* $@14: %empty */
#line 500 "perly.y"
{ parser->expect = XTERM; }
break;
case 56: /* $@15: %empty */
#line 502 "perly.y"
{ parser->expect = XTERM; }
break;
case 57: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mnexpr PERLY_SEMICOLON $@14 texpr PERLY_SEMICOLON $@15 mintro mnexpr PERLY_PAREN_CLOSE mblock */
#line 505 "perly.y"
{
OP *initop = (ps[-9].val.opval);
OP *forop = newWHILEOP(0, 1, NULL,
scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
if (initop) {
forop = op_prepend_elem(OP_LINESEQ, initop,
op_append_elem(OP_LINESEQ,
newOP(OP_UNSTACK, OPf_SPECIAL),
forop));
}
PL_hints |= HINT_BLOCK_SCOPE;
(yyval.opval) = block_end((ps[-10].val.ival), forop);
parser->copline = (line_t)(ps[-12].val.ival);
}
break;
case 58: /* barestmt: KW_FOR KW_MY remember my_scalar PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */
#line 520 "perly.y"
{
(yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-8].val.ival);
}
break;
case 59: /* barestmt: KW_FOR KW_MY remember PERLY_PAREN_OPEN my_list_of_scalars PERLY_PAREN_CLOSE PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */
#line 525 "perly.y"
{
if ((ps[-6].val.opval)->op_type == OP_PADSV)
/* degenerate case of 1 var: for my ($x) ....
Flag it so it can be special-cased in newFOROP */
(ps[-6].val.opval)->op_flags |= OPf_PARENS;
(yyval.opval) = block_end((ps[-8].val.ival), newFOROP(0, (ps[-6].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-10].val.ival);
}
break;
case 60: /* barestmt: KW_FOR scalar PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */
#line 534 "perly.y"
{
(yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-7].val.ival);
}
break;
case 61: /* @16: %empty */
#line 540 "perly.y"
{ parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
case 62: /* barestmt: KW_FOR my_refgen remember my_var @16 PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */
#line 542 "perly.y"
{
(yyval.opval) = block_end(
(ps[-7].val.ival),
newFOROP(0,
op_lvalue(
newUNOP(OP_REFGEN, 0,
(ps[-5].val.opval)),
OP_ENTERLOOP),
(ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
);
parser->copline = (line_t)(ps[-9].val.ival);
}
break;
case 63: /* barestmt: KW_FOR REFGEN refgen_topic PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */
#line 555 "perly.y"
{
(yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
0, op_lvalue(newUNOP(OP_REFGEN, 0,
(ps[-6].val.opval)),
OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-8].val.ival);
}
break;
case 64: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */
#line 563 "perly.y"
{
(yyval.opval) = block_end((ps[-4].val.ival),
newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
parser->copline = (line_t)(ps[-6].val.ival);
}
break;
case 65: /* $@17: %empty */
#line 569 "perly.y"
{
if(!(ps[0].val.opval)) {
yyerror("catch block requires a (VAR)");
YYERROR;
}
}
break;
case 66: /* barestmt: KW_TRY mblock KW_CATCH remember catch_paren $@17 mblock finally */
#line 576 "perly.y"
{
(yyval.opval) = newTRYCATCHOP(0,
(ps[-6].val.opval), (ps[-3].val.opval), block_end((ps[-4].val.ival), op_scope((ps[-1].val.opval))));
if((ps[0].val.opval))
(yyval.opval) = op_wrap_finally((yyval.opval), (ps[0].val.opval));
parser->copline = (line_t)(ps[-7].val.ival);
}
break;
case 67: /* barestmt: block cont */
#line 584 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, NULL,
NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
}
break;
case 68: /* $@18: %empty */
#line 590 "perly.y"
{
package((ps[-2].val.opval));
if ((ps[-3].val.opval)) {
package_version((ps[-3].val.opval));
}
}
break;
case 69: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_BRACE_OPEN remember $@18 stmtseq PERLY_BRACE_CLOSE */
#line 597 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, NULL,
NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0);
if (parser->copline > (line_t)(ps[-4].val.ival))
parser->copline = (line_t)(ps[-4].val.ival);
}
break;
case 70: /* $@19: %empty */
#line 605 "perly.y"
{
package((ps[-3].val.opval));
if ((ps[-4].val.opval)) {
package_version((ps[-4].val.opval));
}
class_setup_stash(PL_curstash);
if ((ps[-2].val.opval)) {
class_apply_attributes(PL_curstash, (ps[-2].val.opval));
}
}
break;
case 71: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_BRACE_OPEN remember $@19 stmtseq PERLY_BRACE_CLOSE */
#line 617 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, NULL,
NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0);
if (parser->copline > (line_t)(ps[-4].val.ival))
parser->copline = (line_t)(ps[-4].val.ival);
}
break;
case 72: /* barestmt: fielddecl PERLY_SEMICOLON */
#line 625 "perly.y"
{
(yyval.opval) = (ps[-1].val.opval);
}
break;
case 73: /* barestmt: sideff PERLY_SEMICOLON */
#line 629 "perly.y"
{
(yyval.opval) = (ps[-1].val.opval);
}
break;
case 74: /* barestmt: KW_DEFER mblock */
#line 633 "perly.y"
{
(yyval.opval) = newDEFEROP(0, op_scope((ps[0].val.opval)));
}
break;
case 75: /* barestmt: YADAYADA PERLY_SEMICOLON */
#line 637 "perly.y"
{
/* diag_listed_as: Unimplemented */
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
}
break;
case 76: /* barestmt: PERLY_SEMICOLON */
#line 643 "perly.y"
{
(yyval.opval) = NULL;
parser->copline = NOLINE;
}
break;
case 77: /* formline: THING formarg */
#line 651 "perly.y"
{ OP *list;
if ((ps[0].val.opval)) {
OP *term = (ps[0].val.opval);
list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
}
else {
list = (ps[-1].val.opval);
}
if (parser->copline == NOLINE)
parser->copline = CopLINE(PL_curcop)-1;
else parser->copline--;
(yyval.opval) = newSTATEOP(0, NULL,
op_convert_list(OP_FORMLINE, 0, list));
}
break;
case 79: /* formarg: FORMLBRACK stmtseq FORMRBRACK */
#line 670 "perly.y"
{ (yyval.opval) = op_unscope((ps[-1].val.opval)); }
break;
case 81: /* sideff: error */
#line 678 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 82: /* sideff: expr */
#line 680 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 83: /* sideff: expr KW_IF condition */
#line 682 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 84: /* sideff: expr KW_UNLESS condition */
#line 684 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 85: /* sideff: expr KW_WHILE condition */
#line 686 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
break;
case 86: /* sideff: expr KW_UNTIL iexpr */
#line 688 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 87: /* sideff: expr KW_FOR condition */
#line 690 "perly.y"
{ (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL);
parser->copline = (line_t)(ps[-1].val.ival); }
break;
case 88: /* sideff: expr KW_WHEN condition */
#line 693 "perly.y"
{ (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
break;
case 90: /* else: KW_ELSE mblock */
#line 700 "perly.y"
{
((ps[0].val.opval))->op_flags |= OPf_PARENS;
(yyval.opval) = op_scope((ps[0].val.opval));
}
break;
case 91: /* else: KW_ELSIF PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock else */
#line 705 "perly.y"
{ parser->copline = (line_t)(ps[-5].val.ival);
(yyval.opval) = newCONDOP(0,
newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
op_scope((ps[-1].val.opval)), (ps[0].val.opval));
PL_hints |= HINT_BLOCK_SCOPE;
}
break;
case 93: /* cont: KW_CONTINUE block */
#line 717 "perly.y"
{ (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
case 94: /* finally: %empty */
#line 722 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 95: /* finally: KW_FINALLY block */
#line 724 "perly.y"
{ (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
case 96: /* mintro: %empty */
#line 729 "perly.y"
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
intro_my(); }
break;
case 99: /* texpr: %empty */
#line 741 "perly.y"
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
(yyval.opval) = tmplval.opval; }
break;
case 101: /* iexpr: expr */
#line 749 "perly.y"
{ (yyval.opval) = invert(scalar((ps[0].val.opval))); }
break;
case 102: /* mexpr: expr */
#line 754 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 103: /* mnexpr: nexpr */
#line 758 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 104: /* formname: BAREWORD */
#line 761 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 106: /* startsub: %empty */
#line 766 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, 0);
SAVEFREESV(PL_compcv); }
break;
case 107: /* startanonsub: %empty */
#line 772 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
SAVEFREESV(PL_compcv); }
break;
case 108: /* startanonmethod: %empty */
#line 777 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON|CVf_IsMETHOD);
SAVEFREESV(PL_compcv); }
break;
case 109: /* startformsub: %empty */
#line 782 "perly.y"
{ (yyval.ival) = start_subparse(TRUE, 0);
SAVEFREESV(PL_compcv); }
break;
case 115: /* subattrlist: COLONATTR THING */
#line 801 "perly.y"
{
OP *attrlist = (ps[0].val.opval);
if(attrlist && !PL_parser->sig_seen)
attrlist = apply_builtin_cv_attributes(PL_compcv, attrlist);
(yyval.opval) = attrlist;
}
break;
case 116: /* subattrlist: COLONATTR */
#line 808 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 117: /* myattrlist: COLONATTR THING */
#line 813 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 118: /* myattrlist: COLONATTR */
#line 815 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 119: /* sigvar: %empty */
#line 826 "perly.y"
{ parser->in_my = 0; (yyval.ival) = 0; }
break;
case 120: /* sigvar: PRIVATEREF */
#line 828 "perly.y"
{ parser->in_my = 0; (yyval.ival) = (ps[0].val.opval)->op_targ; op_free((ps[0].val.opval)); }
break;
case 121: /* sigslurpsigil: PERLY_SNAIL */
#line 833 "perly.y"
{ (yyval.ival) = '@'; }
break;
case 122: /* sigslurpsigil: PERLY_PERCENT_SIGN */
#line 835 "perly.y"
{ (yyval.ival) = '%'; }
break;
case 123: /* sigslurpelem: sigslurpsigil sigvar */
#line 839 "perly.y"
{
subsignature_append_slurpy((ps[-1].val.ival), (ps[0].val.ival));
(yyval.opval) = NULL;
}
break;
case 124: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP */
#line 844 "perly.y"
{
yyerror("A slurpy parameter may not have a default value");
}
break;
case 125: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP term */
#line 848 "perly.y"
{
yyerror("A slurpy parameter may not have a default value");
}
break;
case 126: /* sigscalarelem: PERLY_DOLLAR sigvar */
#line 856 "perly.y"
{
subsignature_append_positional((ps[0].val.ival), 0, NULL);
(yyval.opval) = NULL;
}
break;
case 127: /* sigscalarelem: PERLY_DOLLAR sigvar ASSIGNOP optsigscalardefault */
#line 861 "perly.y"
{
subsignature_append_positional((ps[-2].val.ival), (ps[-1].val.ival), (ps[0].val.opval));
(yyval.opval) = NULL;
}
break;
case 128: /* optsigscalardefault: %empty */
#line 869 "perly.y"
{ (yyval.opval) = newOP(OP_NULL, 0); }
break;
case 130: /* sigelem: sigscalarelem */
#line 876 "perly.y"
{ parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
break;
case 131: /* sigelem: sigslurpelem */
#line 878 "perly.y"
{ parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
break;
case 139: /* subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE */
#line 904 "perly.y"
{ (yyval.opval) = (ps[-1].val.opval); }
break;
case 140: /* $@20: %empty */
#line 907 "perly.y"
{
ENTER;
subsignature_start();
parser->in_my = KEY_sigvar;
}
break;
case 141: /* subsigguts: $@20 optsiglist */
#line 913 "perly.y"
{
if (!FEATURE_SIGNATURES_IS_ENABLED && !CvIsMETHOD(PL_compcv))
croak("Experimental "
"subroutine signatures not enabled");
/* We shouldn't get here otherwise */
(yyval.opval) = subsignature_finish();
CvSIGNATURE_on(PL_compcv);
parser->in_my = 0;
/* tell the toker that attrributes can follow
* this sig, but only so that the toker
* can skip through any (illegal) trailing
* attribute text then give a useful error
* message about "attributes before sig",
* rather than falling over ina mess at
* unrecognised syntax.
*/
parser->expect = XATTRBLOCK;
parser->sig_seen = TRUE;
LEAVE;
}
break;
case 143: /* optsubbody: PERLY_SEMICOLON */
#line 941 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 144: /* subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE */
#line 947 "perly.y"
{
if (parser->copline > (line_t)(ps[-2].val.ival))
parser->copline = (line_t)(ps[-2].val.ival);
(yyval.opval) = block_end((ps[-3].val.ival), (ps[-1].val.opval));
}
break;
case 146: /* optsigsubbody: PERLY_SEMICOLON */
#line 959 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 147: /* $@21: %empty */
#line 964 "perly.y"
{ PL_parser->sig_seen = FALSE; }
break;
case 148: /* sigsubbody: remember optsubsignature PERLY_BRACE_OPEN $@21 stmtseq PERLY_BRACE_CLOSE */
#line 966 "perly.y"
{
if (parser->copline > (line_t)(ps[-3].val.ival))
parser->copline = (line_t)(ps[-3].val.ival);
(yyval.opval) = block_end((ps[-5].val.ival),
op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
}
break;
case 149: /* expr: expr ANDOP expr */
#line 977 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 150: /* expr: expr PLUGIN_LOGICAL_AND_LOW_OP expr */
#line 979 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 151: /* expr: expr OROP expr */
#line 981 "perly.y"
{ (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 152: /* expr: expr PLUGIN_LOGICAL_OR_LOW_OP expr */
#line 983 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 154: /* listexpr: listexpr PERLY_COMMA */
#line 989 "perly.y"
{ (yyval.opval) = (ps[-1].val.opval); }
break;
case 155: /* listexpr: listexpr PERLY_COMMA term */
#line 991 "perly.y"
{
OP* term = (ps[0].val.opval);
(yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
}
break;
case 157: /* listop: LSTOP indirob listexpr */
#line 1000 "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 158: /* listop: BLKLSTOP block listexpr */
#line 1004 "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 159: /* listop: FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE */
#line 1008 "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 160: /* listop: term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */
#line 1012 "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)),
newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
}
break;
case 161: /* listop: term ARROW methodname */
#line 1018 "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))));
}
break;
case 162: /* listop: term ARROW PERLY_AMPERSAND subname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */
#line 1023 "perly.y"
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar((ps[-6].val.opval)), (ps[-1].val.opval)),
newCVREF(0, (ps[-3].val.opval))));
}
break;
case 163: /* listop: term ARROW PERLY_AMPERSAND subname */
#line 1029 "perly.y"
{ (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
scalar((ps[-3].val.opval)),
newCVREF(0, (ps[0].val.opval))));
}
break;
case 164: /* listop: METHCALL0 indirob optlistexpr */
#line 1035 "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)),
newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
}
break;
case 165: /* listop: METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */
#line 1041 "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)),
newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
}
break;
case 166: /* listop: LSTOP optlistexpr */
#line 1047 "perly.y"
{ (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
case 167: /* listop: FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */
#line 1049 "perly.y"
{ (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
case 168: /* listop: FUNC SUBLEXSTART optexpr SUBLEXEND */
#line 1051 "perly.y"
{ (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
case 169: /* @22: %empty */
#line 1053 "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 */
(ps[0].val.opval) = NULL;
}
break;
case 170: /* listop: LSTOPSUB startanonsub block @22 optlistexpr */
#line 1059 "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)));
}
break;
case 173: /* subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1074 "perly.y"
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
break;
case 174: /* subscripted: scalar PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1076 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
}
break;
case 175: /* subscripted: term ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1079 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
}
break;
case 176: /* subscripted: subscripted PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1084 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
}
break;
case 177: /* subscripted: scalar PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1089 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
}
break;
case 178: /* subscripted: term ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1092 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
case 179: /* subscripted: subscripted PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1096 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
case 180: /* subscripted: term ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1100 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-3].val.opval))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
}
break;
case 181: /* subscripted: term ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1106 "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)))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
}
break;
case 182: /* subscripted: subscripted PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1114 "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)))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
}
break;
case 183: /* subscripted: subscripted PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1121 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-2].val.opval))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
}
break;
case 184: /* subscripted: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1127 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
break;
case 185: /* subscripted: QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1129 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
break;
case 186: /* subscripted: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1131 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
break;
case 187: /* termbinop: term PLUGIN_HIGH_OP term */
#line 1136 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 188: /* termbinop: term ASSIGNOP term */
#line 1138 "perly.y"
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
break;
case 189: /* termbinop: term PLUGIN_ASSIGN_OP term */
#line 1140 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 190: /* termbinop: term POWOP term */
#line 1142 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 191: /* termbinop: term PLUGIN_POW_OP term */
#line 1144 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 192: /* termbinop: term MULOP term */
#line 1146 "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)));
}
break;
case 193: /* termbinop: term PLUGIN_MUL_OP term */
#line 1151 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 194: /* termbinop: term ADDOP term */
#line 1153 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 195: /* termbinop: term PLUGIN_ADD_OP term */
#line 1155 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 196: /* termbinop: term SHIFTOP term */
#line 1157 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 197: /* termbinop: termrelop */
#line 1159 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 198: /* termbinop: termeqop */
#line 1161 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 199: /* termbinop: term BITANDOP term */
#line 1163 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 200: /* termbinop: term BITOROP term */
#line 1165 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 201: /* termbinop: term DOTDOT term */
#line 1167 "perly.y"
{ (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 202: /* termbinop: term ANDAND term */
#line 1169 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 203: /* termbinop: term PLUGIN_LOGICAL_AND_OP term */
#line 1171 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 204: /* termbinop: term OROR term */
#line 1173 "perly.y"
{ (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 205: /* termbinop: term PLUGIN_LOGICAL_OR_OP term */
#line 1175 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 206: /* termbinop: term DORDOR term */
#line 1177 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 207: /* termbinop: term MATCHOP term */
#line 1179 "perly.y"
{ (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 208: /* termbinop: term PLUGIN_LOW_OP term */
#line 1181 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 209: /* termrelop: relopchain */
#line 1185 "perly.y"
{ (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
break;
case 210: /* termrelop: term NCRELOP term */
#line 1187 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 211: /* termrelop: termrelop NCRELOP */
#line 1189 "perly.y"
{ yyerror("syntax error"); YYERROR; }
break;
case 212: /* termrelop: termrelop CHRELOP */
#line 1191 "perly.y"
{ yyerror("syntax error"); YYERROR; }
break;
case 213: /* termrelop: term PLUGIN_REL_OP term */
#line 1193 "perly.y"
{ (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); }
break;
case 214: /* relopchain: term CHRELOP term */
#line 1197 "perly.y"
{ (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 215: /* relopchain: relopchain CHRELOP term */
#line 1199 "perly.y"
{ (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 216: /* termeqop: eqopchain */
#line 1203 "perly.y"
{ (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
break;
case 217: /* termeqop: term NCEQOP term */
#line 1205 "perly.y"
{ (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 218: /* termeqop: termeqop NCEQOP */
#line 1207 "perly.y"
{ yyerror("syntax error"); YYERROR; }
break;
case 219: /* termeqop: termeqop CHEQOP */
#line 1209 "perly.y"
{ yyerror("syntax error"); YYERROR; }
break;
case 220: /* eqopchain: term CHEQOP term */
#line 1213 "perly.y"
{ (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 221: /* eqopchain: eqopchain CHEQOP term */
#line 1215 "perly.y"
{ (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 222: /* termunop: PERLY_MINUS term */
#line 1220 "perly.y"
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
break;
case 223: /* termunop: PERLY_PLUS term */
#line 1222 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 224: /* termunop: PERLY_EXCLAMATION_MARK term */
#line 1225 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
case 225: /* termunop: PERLY_TILDE term */
#line 1227 "perly.y"
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
break;
case 226: /* termunop: term POSTINC */
#line 1229 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
break;
case 227: /* termunop: term POSTDEC */
#line 1232 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
break;
case 228: /* termunop: term POSTJOIN */
#line 1235 "perly.y"
{ (yyval.opval) = op_convert_list(OP_JOIN, 0,
op_append_elem(
OP_LIST,
newSVREF(scalar(
newSVOP(OP_CONST,0,
newSVpvs("\""))
)),
(ps[-1].val.opval)
));
}
break;
case 229: /* termunop: PREINC term */
#line 1246 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
break;
case 230: /* termunop: PREDEC term */
#line 1249 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
break;
case 231: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */
#line 1257 "perly.y"
{ (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
break;
case 232: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1259 "perly.y"
{ (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
break;
case 233: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */
#line 1261 "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 234: /* anonymous: KW_SUB_anon startanonsub proto subattrlist */
#line 1264 "perly.y"
{ yyerror("Illegal declaration of anonymous subroutine"); YYERROR; }
break;
case 235: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */
#line 1266 "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 236: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist */
#line 1269 "perly.y"
{ yyerror("Illegal declaration of anonymous subroutine"); YYERROR; }
break;
case 237: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */
#line 1271 "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 238: /* anonymous: KW_METHOD_anon startanonmethod subattrlist */
#line 1276 "perly.y"
{ yyerror("Illegal declaration of anonymous subroutine"); YYERROR; }
break;
case 239: /* termdo: KW_DO term */
#line 1281 "perly.y"
{ (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
break;
case 240: /* termdo: KW_DO block */
#line 1283 "perly.y"
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
break;
case 245: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */
#line 1291 "perly.y"
{ (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 246: /* term: REFGEN term */
#line 1293 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
break;
case 247: /* term: myattrterm */
#line 1295 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 248: /* term: KW_LOCAL term */
#line 1297 "perly.y"
{ (yyval.opval) = localize((ps[0].val.opval),0); }
break;
case 249: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1299 "perly.y"
{ (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
case 250: /* term: QWLIST */
#line 1301 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 251: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1303 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 252: /* term: scalar */
#line 1305 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 253: /* term: star */
#line 1307 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 254: /* term: hsh */
#line 1309 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 255: /* term: ary */
#line 1311 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 256: /* term: arylen */
#line 1313 "perly.y"
{ (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
break;
case 257: /* term: subscripted */
#line 1315 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 258: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1317 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
list((ps[-1].val.opval)),
ref((ps[-3].val.opval), OP_ASLICE)));
if ((yyval.opval) && (ps[-3].val.opval))
(yyval.opval)->op_private |=
(ps[-3].val.opval)->op_private & OPpSLICEWARNING;
}
break;
case 259: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */
#line 1327 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_KVASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVASLICE, 0,
list((ps[-1].val.opval)),
ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));
if ((yyval.opval) && (ps[-3].val.opval))
(yyval.opval)->op_private |=
(ps[-3].val.opval)->op_private & OPpSLICEWARNING;
}
break;
case 260: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1337 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
list((ps[-2].val.opval)),
ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));
if ((yyval.opval) && (ps[-4].val.opval))
(yyval.opval)->op_private |=
(ps[-4].val.opval)->op_private & OPpSLICEWARNING;
}
break;
case 261: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */
#line 1347 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVHSLICE, 0,
list((ps[-2].val.opval)),
ref((ps[-4].val.opval), OP_KVHSLICE)));
if ((yyval.opval) && (ps[-4].val.opval))
(yyval.opval)->op_private |=
(ps[-4].val.opval)->op_private & OPpSLICEWARNING;
}
break;
case 262: /* term: THING */
#line 1357 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 263: /* term: amper */
#line 1359 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
break;
case 264: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1361 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
}
break;
case 265: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1364 "perly.y"
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
}
break;
case 266: /* term: NOAMP subname optlistexpr */
#line 1369 "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 267: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */
#line 1373 "perly.y"
{ (yyval.opval) = newSVREF((ps[-3].val.opval)); }
break;
case 268: /* term: term ARROW PERLY_SNAIL PERLY_STAR */
#line 1375 "perly.y"
{ (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
case 269: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */
#line 1377 "perly.y"
{ (yyval.opval) = newHVREF((ps[-3].val.opval)); }
break;
case 270: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */
#line 1379 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
break;
case 271: /* term: term ARROW PERLY_STAR PERLY_STAR */
#line 1382 "perly.y"
{ (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
break;
case 272: /* term: LOOPEX */
#line 1384 "perly.y"
{ (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 273: /* term: LOOPEX term */
#line 1387 "perly.y"
{ (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
break;
case 274: /* term: NOTOP listexpr */
#line 1389 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
case 275: /* term: UNIOP */
#line 1391 "perly.y"
{ (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
case 276: /* term: UNIOP block */
#line 1393 "perly.y"
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
case 277: /* term: UNIOP term */
#line 1395 "perly.y"
{ (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
case 278: /* term: KW_REQUIRE */
#line 1397 "perly.y"
{ (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
break;
case 279: /* term: KW_REQUIRE term */
#line 1399 "perly.y"
{ (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
break;
case 280: /* term: UNIOPSUB */
#line 1401 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
case 281: /* term: UNIOPSUB term */
#line 1403 "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 282: /* term: FUNC0 */
#line 1406 "perly.y"
{ (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
case 283: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1408 "perly.y"
{ (yyval.opval) = newOP((ps[-2].val.ival), 0);}
break;
case 284: /* term: FUNC0OP */
#line 1410 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 285: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1412 "perly.y"
{ (yyval.opval) = (ps[-2].val.opval); }
break;
case 286: /* term: FUNC0SUB */
#line 1414 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
case 287: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1416 "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 288: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1420 "perly.y"
{ (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
case 289: /* @23: %empty */
#line 1422 "perly.y"
{
if ( (ps[0].val.opval)->op_type != OP_TRANS
&& (ps[0].val.opval)->op_type != OP_TRANSR
&& (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
{
(yyval.ival) = start_subparse(FALSE, CVf_ANON);
SAVEFREESV(PL_compcv);
} else
(yyval.ival) = 0;
}
break;
case 290: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */
#line 1433 "perly.y"
{ (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
break;
case 294: /* myattrterm: KW_MY myterm myattrlist */
#line 1442 "perly.y"
{ (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
break;
case 295: /* myattrterm: KW_MY myterm */
#line 1444 "perly.y"
{ (yyval.opval) = localize((ps[0].val.opval),1); }
break;
case 296: /* myattrterm: KW_MY REFGEN myterm myattrlist */
#line 1446 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
break;
case 297: /* myattrterm: KW_MY REFGEN term */
#line 1448 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
break;
case 298: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */
#line 1453 "perly.y"
{ (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
case 299: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */
#line 1455 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 300: /* myterm: scalar */
#line 1458 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 301: /* myterm: hsh */
#line 1460 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 302: /* myterm: ary */
#line 1462 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 303: /* fieldvar: scalar */
#line 1467 "perly.y"
{
(yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ];
op_free((ps[0].val.opval));
}
break;
case 304: /* fieldvar: hsh */
#line 1472 "perly.y"
{
(yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ];
op_free((ps[0].val.opval));
}
break;
case 305: /* fieldvar: ary */
#line 1477 "perly.y"
{
(yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ];
op_free((ps[0].val.opval));
}
break;
case 306: /* optfieldattrlist: COLONATTR THING */
#line 1485 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 307: /* optfieldattrlist: COLONATTR */
#line 1487 "perly.y"
{ (yyval.opval) = NULL; }
break;
case 309: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */
#line 1493 "perly.y"
{
parser->in_my = 0;
if((ps[0].val.opval))
class_apply_field_attributes((PADNAME *)(ps[-1].val.pval), (ps[0].val.opval));
(yyval.opval) = newOP(OP_NULL, 0);
}
break;
case 310: /* $@24: %empty */
#line 1500 "perly.y"
{
parser->in_my = 0;
if((ps[-1].val.opval))
class_apply_field_attributes((PADNAME *)(ps[-2].val.pval), (ps[-1].val.opval));
ENTER;
class_prepare_initfield_parse();
}
break;
case 311: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */
#line 1508 "perly.y"
{
class_set_field_defop((PADNAME *)(ps[-4].val.pval), (ps[-2].val.ival), (ps[0].val.opval));
LEAVE;
(yyval.opval) = newOP(OP_NULL, 0);
}
break;
case 317: /* optrepl: PERLY_SLASH expr */
#line 1528 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
case 318: /* my_scalar: scalar */
#line 1534 "perly.y"
{ parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
case 319: /* list_of_scalars: list_of_scalars PERLY_COMMA */
#line 1539 "perly.y"
{ (yyval.opval) = (ps[-1].val.opval); }
break;
case 320: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */
#line 1541 "perly.y"
{
(yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval));
}
break;
case 322: /* my_list_of_scalars: list_of_scalars */
#line 1548 "perly.y"
{ parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
break;
case 330: /* amper: PERLY_AMPERSAND indirob */
#line 1565 "perly.y"
{ (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
break;
case 331: /* scalar: PERLY_DOLLAR indirob */
#line 1569 "perly.y"
{ (yyval.opval) = newSVREF((ps[0].val.opval)); }
break;
case 332: /* ary: PERLY_SNAIL indirob */
#line 1573 "perly.y"
{ (yyval.opval) = newAVREF((ps[0].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
}
break;
case 333: /* hsh: PERLY_PERCENT_SIGN indirob */
#line 1579 "perly.y"
{ (yyval.opval) = newHVREF((ps[0].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
}
break;
case 334: /* arylen: DOLSHARP indirob */
#line 1585 "perly.y"
{ (yyval.opval) = newAVREF((ps[0].val.opval)); }
break;
case 335: /* arylen: term ARROW DOLSHARP PERLY_STAR */
#line 1587 "perly.y"
{ (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
case 336: /* star: PERLY_STAR indirob */
#line 1591 "perly.y"
{ (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
break;
case 338: /* sliceme: term ARROW PERLY_SNAIL */
#line 1596 "perly.y"
{ (yyval.opval) = newAVREF((ps[-2].val.opval)); }
break;
case 340: /* kvslice: term ARROW PERLY_PERCENT_SIGN */
#line 1601 "perly.y"
{ (yyval.opval) = newHVREF((ps[-2].val.opval)); }
break;
case 342: /* gelem: term ARROW PERLY_STAR */
#line 1606 "perly.y"
{ (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
break;
case 343: /* indirob: BAREWORD */
#line 1611 "perly.y"
{ (yyval.opval) = scalar((ps[0].val.opval)); }
break;
case 344: /* indirob: scalar */
#line 1613 "perly.y"
{ (yyval.opval) = scalar((ps[0].val.opval)); }
break;
case 345: /* indirob: block */
#line 1615 "perly.y"
{ (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
case 346: /* indirob: PRIVATEREF */
#line 1618 "perly.y"
{ (yyval.opval) = (ps[0].val.opval); }
break;
default: break;
/* Generated from:
* c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y
* f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl
* ex: set ro ft=c: */