mirror of
https://github.com/Perl/perl5.git
synced 2026-01-26 16:39:36 +00:00
This commit makes the __FILE__, __LINE__ and __PACKAGE__ token parse the same way as nullary functions. It adds two extra rules to perly.y to allow the op to be created in toke.c, instead of directly inside the parser.
1729 lines
51 KiB
Plaintext
1729 lines
51 KiB
Plaintext
/* -*- 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:
|
|
#line 142 "perly.y"
|
|
{
|
|
PL_parser->expect = XSTATE;
|
|
;}
|
|
break;
|
|
|
|
case 3:
|
|
#line 146 "perly.y"
|
|
{
|
|
newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
|
|
(yyval.ival) = 0;
|
|
;}
|
|
break;
|
|
|
|
case 4:
|
|
#line 151 "perly.y"
|
|
{
|
|
parser->expect = XTERM;
|
|
;}
|
|
break;
|
|
|
|
case 5:
|
|
#line 155 "perly.y"
|
|
{
|
|
PL_eval_root = (ps[(3) - (3)].val.opval);
|
|
(yyval.ival) = 0;
|
|
;}
|
|
break;
|
|
|
|
case 6:
|
|
#line 160 "perly.y"
|
|
{
|
|
parser->expect = XBLOCK;
|
|
;}
|
|
break;
|
|
|
|
case 7:
|
|
#line 164 "perly.y"
|
|
{
|
|
PL_pad_reset_pending = TRUE;
|
|
PL_eval_root = (ps[(3) - (3)].val.opval);
|
|
(yyval.ival) = 0;
|
|
yyunlex();
|
|
parser->yychar = YYEOF;
|
|
;}
|
|
break;
|
|
|
|
case 8:
|
|
#line 172 "perly.y"
|
|
{
|
|
parser->expect = XSTATE;
|
|
;}
|
|
break;
|
|
|
|
case 9:
|
|
#line 176 "perly.y"
|
|
{
|
|
PL_pad_reset_pending = TRUE;
|
|
PL_eval_root = (ps[(3) - (3)].val.opval);
|
|
(yyval.ival) = 0;
|
|
yyunlex();
|
|
parser->yychar = YYEOF;
|
|
;}
|
|
break;
|
|
|
|
case 10:
|
|
#line 184 "perly.y"
|
|
{
|
|
parser->expect = XSTATE;
|
|
;}
|
|
break;
|
|
|
|
case 11:
|
|
#line 188 "perly.y"
|
|
{
|
|
PL_pad_reset_pending = TRUE;
|
|
PL_eval_root = (ps[(3) - (3)].val.opval);
|
|
(yyval.ival) = 0;
|
|
yyunlex();
|
|
parser->yychar = YYEOF;
|
|
;}
|
|
break;
|
|
|
|
case 12:
|
|
#line 196 "perly.y"
|
|
{
|
|
parser->expect = XSTATE;
|
|
;}
|
|
break;
|
|
|
|
case 13:
|
|
#line 200 "perly.y"
|
|
{
|
|
PL_eval_root = (ps[(3) - (3)].val.opval);
|
|
(yyval.ival) = 0;
|
|
;}
|
|
break;
|
|
|
|
case 14:
|
|
#line 208 "perly.y"
|
|
{ if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
|
|
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 15:
|
|
#line 217 "perly.y"
|
|
{ (yyval.ival) = block_start(TRUE); ;}
|
|
break;
|
|
|
|
case 16:
|
|
#line 221 "perly.y"
|
|
{ (yyval.ival) = (I32) Perl_allocmy(aTHX_ STR_WITH_LEN("$_"), 0); ;}
|
|
break;
|
|
|
|
case 17:
|
|
#line 225 "perly.y"
|
|
{ if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
|
|
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 18:
|
|
#line 234 "perly.y"
|
|
{ (yyval.ival) = block_start(FALSE); ;}
|
|
break;
|
|
|
|
case 19:
|
|
#line 239 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 20:
|
|
#line 241 "perly.y"
|
|
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
|
|
PL_pad_reset_pending = TRUE;
|
|
if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
|
|
PL_hints |= HINT_BLOCK_SCOPE;
|
|
;}
|
|
break;
|
|
|
|
case 21:
|
|
#line 250 "perly.y"
|
|
{
|
|
if((ps[(1) - (1)].val.opval)) {
|
|
(yyval.opval) = newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval));
|
|
} else {
|
|
(yyval.opval) = IF_MAD(newOP(OP_NULL, 0), NULL);
|
|
}
|
|
;}
|
|
break;
|
|
|
|
case 22:
|
|
#line 258 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 23:
|
|
#line 262 "perly.y"
|
|
{
|
|
(yyval.opval) = newSTATEOP(0, PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval),
|
|
(ps[(2) - (2)].val.opval) ? cLISTOPx((yyval.opval))->op_first : (yyval.opval), 'L');
|
|
;}
|
|
break;
|
|
|
|
case 24:
|
|
#line 268 "perly.y"
|
|
{
|
|
(yyval.opval) = newSTATEOP(0, PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval), cLISTOPx((yyval.opval))->op_first, 'L');
|
|
;}
|
|
break;
|
|
|
|
case 25:
|
|
#line 276 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 26:
|
|
#line 278 "perly.y"
|
|
{
|
|
(yyval.opval) = newOP(OP_NULL,0);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'p');
|
|
;}
|
|
break;
|
|
|
|
case 27:
|
|
#line 283 "perly.y"
|
|
{
|
|
CV *fmtcv = PL_compcv;
|
|
SvREFCNT_inc_simple_void(PL_compcv);
|
|
#ifdef MAD
|
|
(yyval.opval) = newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
|
|
prepend_madprops((ps[(1) - (4)].val.i_tkval)->tk_mad, (yyval.opval), 'F');
|
|
(ps[(1) - (4)].val.i_tkval)->tk_mad = 0;
|
|
token_free((ps[(1) - (4)].val.i_tkval));
|
|
#else
|
|
newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
|
|
(yyval.opval) = (OP*)NULL;
|
|
#endif
|
|
if (CvOUTSIDE(fmtcv) && !CvUNIQUE(CvOUTSIDE(fmtcv))) {
|
|
SvREFCNT_inc_simple_void(fmtcv);
|
|
pad_add_anon(fmtcv, OP_NULL);
|
|
}
|
|
;}
|
|
break;
|
|
|
|
case 28:
|
|
#line 301 "perly.y"
|
|
{
|
|
SvREFCNT_inc_simple_void(PL_compcv);
|
|
#ifdef MAD
|
|
{
|
|
OP* o = newSVOP(OP_ANONCODE, 0,
|
|
(SV*)newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval)));
|
|
(yyval.opval) = newOP(OP_NULL,0);
|
|
op_getmad(o,(yyval.opval),'&');
|
|
op_getmad((ps[(3) - (6)].val.opval),(yyval.opval),'n');
|
|
op_getmad((ps[(4) - (6)].val.opval),(yyval.opval),'s');
|
|
op_getmad((ps[(5) - (6)].val.opval),(yyval.opval),'a');
|
|
token_getmad((ps[(1) - (6)].val.i_tkval),(yyval.opval),'d');
|
|
append_madprops((ps[(6) - (6)].val.opval)->op_madprop, (yyval.opval), 0);
|
|
(ps[(6) - (6)].val.opval)->op_madprop = 0;
|
|
}
|
|
#else
|
|
newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
|
|
(yyval.opval) = (OP*)NULL;
|
|
#endif
|
|
;}
|
|
break;
|
|
|
|
case 29:
|
|
#line 322 "perly.y"
|
|
{
|
|
/* Unimplemented "my sub foo { }" */
|
|
SvREFCNT_inc_simple_void(PL_compcv);
|
|
#ifdef MAD
|
|
(yyval.opval) = newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
|
|
token_getmad((ps[(1) - (6)].val.i_tkval),(yyval.opval),'d');
|
|
#else
|
|
newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
|
|
(yyval.opval) = (OP*)NULL;
|
|
#endif
|
|
;}
|
|
break;
|
|
|
|
case 30:
|
|
#line 334 "perly.y"
|
|
{
|
|
#ifdef MAD
|
|
(yyval.opval) = package((ps[(3) - (4)].val.opval));
|
|
token_getmad((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
|
|
if ((ps[(2) - (4)].val.opval))
|
|
package_version((ps[(2) - (4)].val.opval));
|
|
token_getmad((ps[(4) - (4)].val.i_tkval),(yyval.opval),';');
|
|
#else
|
|
package((ps[(3) - (4)].val.opval));
|
|
if ((ps[(2) - (4)].val.opval))
|
|
package_version((ps[(2) - (4)].val.opval));
|
|
(yyval.opval) = (OP*)NULL;
|
|
#endif
|
|
;}
|
|
break;
|
|
|
|
case 31:
|
|
#line 349 "perly.y"
|
|
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
|
|
break;
|
|
|
|
case 32:
|
|
#line 351 "perly.y"
|
|
{
|
|
SvREFCNT_inc_simple_void(PL_compcv);
|
|
#ifdef MAD
|
|
(yyval.opval) = utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
|
|
token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'o');
|
|
token_getmad((ps[(7) - (7)].val.i_tkval),(yyval.opval),';');
|
|
if (PL_parser->rsfp_filters &&
|
|
AvFILLp(PL_parser->rsfp_filters) >= 0)
|
|
append_madprops(newMADPROP('!', MAD_NULL, NULL, 0), (yyval.opval), 0);
|
|
#else
|
|
utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
|
|
(yyval.opval) = (OP*)NULL;
|
|
#endif
|
|
;}
|
|
break;
|
|
|
|
case 33:
|
|
#line 366 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
|
|
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
|
|
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 34:
|
|
#line 375 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
|
|
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
|
|
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 35:
|
|
#line 384 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
|
|
newGIVENOP((ps[(5) - (7)].val.opval), op_scope((ps[(7) - (7)].val.opval)), (PADOFFSET)(ps[(4) - (7)].val.ival)));
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 36:
|
|
#line 390 "perly.y"
|
|
{ (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
|
|
break;
|
|
|
|
case 37:
|
|
#line 392 "perly.y"
|
|
{ (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
|
|
break;
|
|
|
|
case 38:
|
|
#line 394 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
|
|
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
|
|
(ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
|
|
TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
|
|
TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 39:
|
|
#line 404 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
|
|
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
|
|
(ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
|
|
TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
|
|
TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 40:
|
|
#line 415 "perly.y"
|
|
{
|
|
OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval));
|
|
OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
|
|
scalar((ps[(6) - (11)].val.opval)), (ps[(11) - (11)].val.opval), (ps[(9) - (11)].val.opval), (ps[(8) - (11)].val.ival));
|
|
if (initop) {
|
|
forop = op_prepend_elem(OP_LINESEQ, initop,
|
|
op_append_elem(OP_LINESEQ,
|
|
newOP(OP_UNSTACK, OPf_SPECIAL),
|
|
forop));
|
|
}
|
|
DO_MAD({ forop = newUNOP(OP_NULL, 0, forop); })
|
|
(yyval.opval) = block_end((ps[(3) - (11)].val.ival), forop);
|
|
TOKEN_GETMAD((ps[(1) - (11)].val.i_tkval),(yyval.opval),'3');
|
|
TOKEN_GETMAD((ps[(2) - (11)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (11)].val.i_tkval),(yyval.opval),'1');
|
|
TOKEN_GETMAD((ps[(7) - (11)].val.i_tkval),(yyval.opval),'2');
|
|
TOKEN_GETMAD((ps[(10) - (11)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (11)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 41:
|
|
#line 435 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W');
|
|
TOKEN_GETMAD((ps[(2) - (9)].val.i_tkval),(yyval.opval),'d');
|
|
TOKEN_GETMAD((ps[(5) - (9)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(7) - (9)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (9)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 42:
|
|
#line 444 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
|
|
op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
|
|
TOKEN_GETMAD((ps[(3) - (8)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(6) - (8)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 43:
|
|
#line 453 "perly.y"
|
|
{
|
|
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
|
|
newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'W');
|
|
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
|
|
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 44:
|
|
#line 462 "perly.y"
|
|
{
|
|
/* a block is a loop that happens once */
|
|
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
|
|
(OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
|
|
;}
|
|
break;
|
|
|
|
case 45:
|
|
#line 468 "perly.y"
|
|
{
|
|
int save_3_latefree = (ps[(3) - (5)].val.opval)->op_latefree;
|
|
(ps[(3) - (5)].val.opval)->op_latefree = 1;
|
|
package((ps[(3) - (5)].val.opval));
|
|
(ps[(3) - (5)].val.opval)->op_latefree = save_3_latefree;
|
|
if ((ps[(2) - (5)].val.opval)) {
|
|
int save_2_latefree = (ps[(2) - (5)].val.opval)->op_latefree;
|
|
(ps[(2) - (5)].val.opval)->op_latefree = 1;
|
|
package_version((ps[(2) - (5)].val.opval));
|
|
(ps[(2) - (5)].val.opval)->op_latefree = save_2_latefree;
|
|
}
|
|
;}
|
|
break;
|
|
|
|
case 46:
|
|
#line 481 "perly.y"
|
|
{
|
|
/* a block is a loop that happens once */
|
|
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
|
|
(OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
|
|
op_free((ps[(3) - (8)].val.opval));
|
|
if ((ps[(2) - (8)].val.opval))
|
|
op_free((ps[(2) - (8)].val.opval));
|
|
TOKEN_GETMAD((ps[(4) - (8)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(8) - (8)].val.i_tkval),(yyval.opval),'}');
|
|
if (PL_parser->copline > (line_t)IVAL((ps[(4) - (8)].val.i_tkval)))
|
|
PL_parser->copline = (line_t)IVAL((ps[(4) - (8)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 47:
|
|
#line 494 "perly.y"
|
|
{
|
|
PL_parser->expect = XSTATE;
|
|
(yyval.opval) = (ps[(1) - (2)].val.opval);
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),';');
|
|
;}
|
|
break;
|
|
|
|
case 48:
|
|
#line 500 "perly.y"
|
|
{
|
|
PL_parser->expect = XSTATE;
|
|
(yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
|
|
PL_parser->copline = NOLINE;
|
|
;}
|
|
break;
|
|
|
|
case 49:
|
|
#line 510 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 50:
|
|
#line 512 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 51:
|
|
#line 514 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
|
|
;}
|
|
break;
|
|
|
|
case 52:
|
|
#line 518 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
|
|
;}
|
|
break;
|
|
|
|
case 53:
|
|
#line 522 "perly.y"
|
|
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
|
|
;}
|
|
break;
|
|
|
|
case 54:
|
|
#line 526 "perly.y"
|
|
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
|
|
;}
|
|
break;
|
|
|
|
case 55:
|
|
#line 530 "perly.y"
|
|
{ (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
|
|
PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval));
|
|
;}
|
|
break;
|
|
|
|
case 56:
|
|
#line 535 "perly.y"
|
|
{ (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
|
|
break;
|
|
|
|
case 57:
|
|
#line 540 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 58:
|
|
#line 542 "perly.y"
|
|
{
|
|
((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
|
|
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 59:
|
|
#line 548 "perly.y"
|
|
{ PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
|
|
(yyval.opval) = newCONDOP(0,
|
|
newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
|
|
op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
|
|
PL_hints |= HINT_BLOCK_SCOPE;
|
|
TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'I');
|
|
TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 60:
|
|
#line 561 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 61:
|
|
#line 563 "perly.y"
|
|
{
|
|
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 62:
|
|
#line 571 "perly.y"
|
|
{ (yyval.ival) = (PL_min_intro_pending &&
|
|
PL_max_intro_pending >= PL_min_intro_pending);
|
|
intro_my(); ;}
|
|
break;
|
|
|
|
case 63:
|
|
#line 577 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 65:
|
|
#line 583 "perly.y"
|
|
{ YYSTYPE tmplval;
|
|
(void)scan_num("1", &tmplval);
|
|
(yyval.opval) = tmplval.opval; ;}
|
|
break;
|
|
|
|
case 67:
|
|
#line 591 "perly.y"
|
|
{ (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
|
|
break;
|
|
|
|
case 68:
|
|
#line 596 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
|
|
break;
|
|
|
|
case 69:
|
|
#line 600 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
|
|
break;
|
|
|
|
case 70:
|
|
#line 604 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
|
|
break;
|
|
|
|
case 71:
|
|
#line 607 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 72:
|
|
#line 608 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 73:
|
|
#line 612 "perly.y"
|
|
{ (yyval.ival) = start_subparse(FALSE, 0);
|
|
SAVEFREESV(PL_compcv); ;}
|
|
break;
|
|
|
|
case 74:
|
|
#line 618 "perly.y"
|
|
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
|
|
SAVEFREESV(PL_compcv); ;}
|
|
break;
|
|
|
|
case 75:
|
|
#line 623 "perly.y"
|
|
{ (yyval.ival) = start_subparse(TRUE, 0);
|
|
SAVEFREESV(PL_compcv); ;}
|
|
break;
|
|
|
|
case 76:
|
|
#line 628 "perly.y"
|
|
{ const char *const name = SvPV_nolen_const(((SVOP*)(ps[(1) - (1)].val.opval))->op_sv);
|
|
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|
|
|| strEQ(name, "INIT") || strEQ(name, "CHECK")
|
|
|| strEQ(name, "UNITCHECK"))
|
|
CvSPECIAL_on(PL_compcv);
|
|
(yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 77:
|
|
#line 638 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 79:
|
|
#line 644 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 80:
|
|
#line 646 "perly.y"
|
|
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
|
|
;}
|
|
break;
|
|
|
|
case 81:
|
|
#line 650 "perly.y"
|
|
{ (yyval.opval) = IF_MAD(
|
|
newOP(OP_NULL, 0),
|
|
(OP*)NULL
|
|
);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
|
|
;}
|
|
break;
|
|
|
|
case 82:
|
|
#line 660 "perly.y"
|
|
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
|
|
;}
|
|
break;
|
|
|
|
case 83:
|
|
#line 664 "perly.y"
|
|
{ (yyval.opval) = IF_MAD(
|
|
newOP(OP_NULL, 0),
|
|
(OP*)NULL
|
|
);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
|
|
;}
|
|
break;
|
|
|
|
case 84:
|
|
#line 673 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 85:
|
|
#line 674 "perly.y"
|
|
{ (yyval.opval) = IF_MAD(
|
|
newOP(OP_NULL,0),
|
|
(OP*)NULL
|
|
);
|
|
PL_parser->expect = XSTATE;
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
|
|
;}
|
|
break;
|
|
|
|
case 86:
|
|
#line 685 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 87:
|
|
#line 689 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 88:
|
|
#line 693 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 90:
|
|
#line 701 "perly.y"
|
|
{
|
|
#ifdef MAD
|
|
OP* op = newNULLLIST();
|
|
token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
|
|
(yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
|
|
#else
|
|
(yyval.opval) = (ps[(1) - (2)].val.opval);
|
|
#endif
|
|
;}
|
|
break;
|
|
|
|
case 91:
|
|
#line 711 "perly.y"
|
|
{
|
|
OP* term = (ps[(3) - (3)].val.opval);
|
|
DO_MAD(
|
|
term = newUNOP(OP_NULL, 0, term);
|
|
token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
|
|
)
|
|
(yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
|
|
;}
|
|
break;
|
|
|
|
case 93:
|
|
#line 724 "perly.y"
|
|
{ (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
|
|
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 94:
|
|
#line 729 "perly.y"
|
|
{ (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
|
|
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
|
|
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 95:
|
|
#line 736 "perly.y"
|
|
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST,
|
|
op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
|
|
newUNOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
|
|
TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
|
|
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 96:
|
|
#line 745 "perly.y"
|
|
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
|
|
newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
|
|
;}
|
|
break;
|
|
|
|
case 97:
|
|
#line 751 "perly.y"
|
|
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST,
|
|
op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
|
|
newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
|
|
;}
|
|
break;
|
|
|
|
case 98:
|
|
#line 757 "perly.y"
|
|
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST,
|
|
op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
|
|
newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 99:
|
|
#line 765 "perly.y"
|
|
{ (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 100:
|
|
#line 769 "perly.y"
|
|
{ (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 101:
|
|
#line 775 "perly.y"
|
|
{ SvREFCNT_inc_simple_void(PL_compcv);
|
|
(yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
|
|
break;
|
|
|
|
case 102:
|
|
#line 778 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST,
|
|
op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
|
|
;}
|
|
break;
|
|
|
|
case 105:
|
|
#line 793 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
|
|
PL_parser->expect = XOPERATOR;
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 106:
|
|
#line 800 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 107:
|
|
#line 805 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
|
|
ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
|
|
scalar((ps[(4) - (5)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 108:
|
|
#line 813 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
|
|
ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
|
|
scalar((ps[(3) - (4)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 109:
|
|
#line 820 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
|
|
PL_parser->expect = XOPERATOR;
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 110:
|
|
#line 827 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
|
|
ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
|
|
jmaybe((ps[(4) - (6)].val.opval)));
|
|
PL_parser->expect = XOPERATOR;
|
|
TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'a');
|
|
TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 111:
|
|
#line 837 "perly.y"
|
|
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
|
|
ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
|
|
jmaybe((ps[(3) - (5)].val.opval)));
|
|
PL_parser->expect = XOPERATOR;
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 112:
|
|
#line 846 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
|
|
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 113:
|
|
#line 853 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
|
|
newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 114:
|
|
#line 862 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
|
|
newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 115:
|
|
#line 869 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 116:
|
|
#line 875 "perly.y"
|
|
{ (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
|
|
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 117:
|
|
#line 882 "perly.y"
|
|
{ (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 118:
|
|
#line 887 "perly.y"
|
|
{ (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
|
|
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 119:
|
|
#line 897 "perly.y"
|
|
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 120:
|
|
#line 901 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 121:
|
|
#line 905 "perly.y"
|
|
{ if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
|
|
scalar((ps[(1) - (3)].val.opval));
|
|
(yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 122:
|
|
#line 911 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 123:
|
|
#line 915 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 124:
|
|
#line 919 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 125:
|
|
#line 923 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 126:
|
|
#line 927 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 127:
|
|
#line 931 "perly.y"
|
|
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 128:
|
|
#line 935 "perly.y"
|
|
{
|
|
(yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
|
|
DO_MAD({
|
|
UNOP *op;
|
|
op = (UNOP*)(yyval.opval);
|
|
op = (UNOP*)op->op_first; /* get to flop */
|
|
op = (UNOP*)op->op_first; /* get to flip */
|
|
op = (UNOP*)op->op_first; /* get to range */
|
|
token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
|
|
})
|
|
;}
|
|
break;
|
|
|
|
case 129:
|
|
#line 947 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 130:
|
|
#line 951 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 131:
|
|
#line 955 "perly.y"
|
|
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 132:
|
|
#line 959 "perly.y"
|
|
{ (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
|
|
((yyval.opval)->op_type == OP_NOT
|
|
? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
|
|
'~');
|
|
;}
|
|
break;
|
|
|
|
case 133:
|
|
#line 969 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 134:
|
|
#line 973 "perly.y"
|
|
{ (yyval.opval) = IF_MAD(
|
|
newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
|
|
(ps[(2) - (2)].val.opval)
|
|
);
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
|
|
;}
|
|
break;
|
|
|
|
case 135:
|
|
#line 980 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 136:
|
|
#line 984 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 137:
|
|
#line 988 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
|
|
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 138:
|
|
#line 993 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
|
|
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 139:
|
|
#line 998 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
|
|
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 140:
|
|
#line 1003 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
|
|
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 141:
|
|
#line 1012 "perly.y"
|
|
{ (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 142:
|
|
#line 1017 "perly.y"
|
|
{ (yyval.opval) = newANONLIST((OP*)NULL);
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 143:
|
|
#line 1022 "perly.y"
|
|
{ (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 144:
|
|
#line 1028 "perly.y"
|
|
{ (yyval.opval) = newANONHASH((OP*)NULL);
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 145:
|
|
#line 1034 "perly.y"
|
|
{ SvREFCNT_inc_simple_void(PL_compcv);
|
|
(yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
|
|
OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
|
|
OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
|
|
;}
|
|
break;
|
|
|
|
case 146:
|
|
#line 1045 "perly.y"
|
|
{ (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 147:
|
|
#line 1049 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
|
|
;}
|
|
break;
|
|
|
|
case 148:
|
|
#line 1053 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
|
|
OPf_SPECIAL|OPf_STACKED,
|
|
op_prepend_elem(OP_LIST,
|
|
scalar(newCVREF(
|
|
(OPpENTERSUB_AMPER<<8),
|
|
scalar((ps[(2) - (4)].val.opval))
|
|
)),(OP*)NULL)); dep();
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 149:
|
|
#line 1065 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
|
|
OPf_SPECIAL|OPf_STACKED,
|
|
op_append_elem(OP_LIST,
|
|
(ps[(4) - (5)].val.opval),
|
|
scalar(newCVREF(
|
|
(OPpENTERSUB_AMPER<<8),
|
|
scalar((ps[(2) - (5)].val.opval))
|
|
)))); dep();
|
|
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 150:
|
|
#line 1078 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
|
|
op_prepend_elem(OP_LIST,
|
|
scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep();
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 151:
|
|
#line 1086 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
|
|
op_prepend_elem(OP_LIST,
|
|
(ps[(4) - (5)].val.opval),
|
|
scalar(newCVREF(0,scalar((ps[(2) - (5)].val.opval)))))); dep();
|
|
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 156:
|
|
#line 1102 "perly.y"
|
|
{ (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
|
|
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
|
|
;}
|
|
break;
|
|
|
|
case 157:
|
|
#line 1107 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 158:
|
|
#line 1111 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 159:
|
|
#line 1113 "perly.y"
|
|
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
|
|
;}
|
|
break;
|
|
|
|
case 160:
|
|
#line 1117 "perly.y"
|
|
{ (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 161:
|
|
#line 1122 "perly.y"
|
|
{ (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 162:
|
|
#line 1124 "perly.y"
|
|
{ (yyval.opval) = sawparens(newNULLLIST());
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 163:
|
|
#line 1129 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 164:
|
|
#line 1131 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 165:
|
|
#line 1133 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 166:
|
|
#line 1135 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 167:
|
|
#line 1137 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
|
|
break;
|
|
|
|
case 168:
|
|
#line 1139 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 169:
|
|
#line 1141 "perly.y"
|
|
{ (yyval.opval) = op_prepend_elem(OP_ASLICE,
|
|
newOP(OP_PUSHMARK, 0),
|
|
newLISTOP(OP_ASLICE, 0,
|
|
list((ps[(3) - (4)].val.opval)),
|
|
ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
|
|
;}
|
|
break;
|
|
|
|
case 170:
|
|
#line 1150 "perly.y"
|
|
{ (yyval.opval) = op_prepend_elem(OP_HSLICE,
|
|
newOP(OP_PUSHMARK, 0),
|
|
newLISTOP(OP_HSLICE, 0,
|
|
list((ps[(3) - (5)].val.opval)),
|
|
ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
|
|
PL_parser->expect = XOPERATOR;
|
|
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
|
|
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
|
|
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
|
|
;}
|
|
break;
|
|
|
|
case 171:
|
|
#line 1161 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 172:
|
|
#line 1163 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
|
|
break;
|
|
|
|
case 173:
|
|
#line 1165 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 174:
|
|
#line 1170 "perly.y"
|
|
{
|
|
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
|
|
DO_MAD({
|
|
OP* op = (yyval.opval);
|
|
if (op->op_type == OP_CONST) { /* defeat const fold */
|
|
op = (OP*)op->op_madprop->mad_val;
|
|
}
|
|
token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
|
|
token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
|
|
})
|
|
;}
|
|
break;
|
|
|
|
case 175:
|
|
#line 1183 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 176:
|
|
#line 1188 "perly.y"
|
|
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
|
|
PL_hints |= HINT_BLOCK_SCOPE;
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 177:
|
|
#line 1193 "perly.y"
|
|
{ (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 178:
|
|
#line 1197 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 179:
|
|
#line 1201 "perly.y"
|
|
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 180:
|
|
#line 1205 "perly.y"
|
|
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 181:
|
|
#line 1209 "perly.y"
|
|
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 182:
|
|
#line 1213 "perly.y"
|
|
{ (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 183:
|
|
#line 1217 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 184:
|
|
#line 1221 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
|
|
break;
|
|
|
|
case 185:
|
|
#line 1223 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
|
|
break;
|
|
|
|
case 186:
|
|
#line 1226 "perly.y"
|
|
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
|
|
;}
|
|
break;
|
|
|
|
case 187:
|
|
#line 1230 "perly.y"
|
|
{ (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 188:
|
|
#line 1236 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 189:
|
|
#line 1238 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (3)].val.opval);
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 190:
|
|
#line 1243 "perly.y"
|
|
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
|
|
scalar((ps[(1) - (1)].val.opval))); ;}
|
|
break;
|
|
|
|
case 191:
|
|
#line 1246 "perly.y"
|
|
{ (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
|
|
? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
|
|
: newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
|
|
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 192:
|
|
#line 1255 "perly.y"
|
|
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 193:
|
|
#line 1261 "perly.y"
|
|
{ (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1);
|
|
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 196:
|
|
#line 1268 "perly.y"
|
|
{
|
|
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
|
|
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
|
|
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'X');
|
|
;}
|
|
break;
|
|
|
|
case 198:
|
|
#line 1278 "perly.y"
|
|
{ (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
|
|
DO_MAD(
|
|
token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
|
|
append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
|
|
(ps[(3) - (3)].val.opval)->op_madprop = 0;
|
|
)
|
|
;}
|
|
break;
|
|
|
|
case 199:
|
|
#line 1286 "perly.y"
|
|
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
|
|
;}
|
|
break;
|
|
|
|
case 200:
|
|
#line 1293 "perly.y"
|
|
{ (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 201:
|
|
#line 1298 "perly.y"
|
|
{ (yyval.opval) = sawparens(newNULLLIST());
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
|
|
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
|
|
;}
|
|
break;
|
|
|
|
case 202:
|
|
#line 1303 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 203:
|
|
#line 1305 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 204:
|
|
#line 1307 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 205:
|
|
#line 1312 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 206:
|
|
#line 1314 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 207:
|
|
#line 1318 "perly.y"
|
|
{ (yyval.opval) = (OP*)NULL; ;}
|
|
break;
|
|
|
|
case 208:
|
|
#line 1320 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
case 209:
|
|
#line 1324 "perly.y"
|
|
{ (yyval.i_tkval) = (ps[(1) - (1)].val.i_tkval); ;}
|
|
break;
|
|
|
|
case 210:
|
|
#line 1326 "perly.y"
|
|
{ munge_qwlist_to_paren_list((ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 211:
|
|
#line 1328 "perly.y"
|
|
{ (yyval.i_tkval) = (ps[(3) - (3)].val.i_tkval); ;}
|
|
break;
|
|
|
|
case 212:
|
|
#line 1334 "perly.y"
|
|
{ PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 213:
|
|
#line 1338 "perly.y"
|
|
{ (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
|
|
;}
|
|
break;
|
|
|
|
case 214:
|
|
#line 1344 "perly.y"
|
|
{ (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
|
|
;}
|
|
break;
|
|
|
|
case 215:
|
|
#line 1350 "perly.y"
|
|
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
|
|
;}
|
|
break;
|
|
|
|
case 216:
|
|
#line 1356 "perly.y"
|
|
{ (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
|
|
;}
|
|
break;
|
|
|
|
case 217:
|
|
#line 1362 "perly.y"
|
|
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
|
|
;}
|
|
break;
|
|
|
|
case 218:
|
|
#line 1368 "perly.y"
|
|
{ (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
|
|
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
|
|
;}
|
|
break;
|
|
|
|
case 219:
|
|
#line 1375 "perly.y"
|
|
{ (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 220:
|
|
#line 1377 "perly.y"
|
|
{ (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 221:
|
|
#line 1379 "perly.y"
|
|
{ (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
|
|
break;
|
|
|
|
case 222:
|
|
#line 1382 "perly.y"
|
|
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
|
|
break;
|
|
|
|
|
|
/* Line 1267 of yacc.c. */
|
|
|
|
default: break;
|
|
|
|
|
|
/* Generated from:
|
|
* 7fb05fb0a9bd3f1c047696941084a07f2d9928ccde2dd343a19d32cf51669760 perly.y
|
|
* 738ca60a0b4cb075902435e976a2f393d438e8e6e32ba81e037dd773b75c87b5 regen_perly.pl
|
|
* ex: set ro: */
|