diff options
author | Father Chrysostomos <sprout@cpan.org> | 2013-09-16 09:44:34 -0700 |
---|---|---|
committer | Ricardo Signes <rjbs@cpan.org> | 2013-10-05 14:20:10 -0400 |
commit | cc624add4b00fb447b7fbbd045a9980d27c180e2 (patch) | |
tree | b715bb016205c8a2a44bc08f2ba1e721f6bae6af /perly.act | |
parent | 158beccad252a25c107551be283bdc27e2729d29 (diff) | |
download | perl-cc624add4b00fb447b7fbbd045a9980d27c180e2.tar.gz |
Allow ->@ ->$ interpolation under postderef_qq feature
This turned out to be tricky. Normally @ at the beginning of the
interpolated code signals to the lexer to emit ‘join($",’ immediately.
With "$_->@*" we would have to retract the $ _ -> tokens upon encoun-
tering @*, which we obviously cannot do.
Waiting until we reach the end of the interpolated text before emit-
ting anything could not work either, as it may contain BEGIN blocks
that affect the way part of the interpolated code is parsed.
So what we do is introduce an egregious or clever hack, depending on
how you look at it.
Normally, the lexer turns "@foo" into:
stringify ( join ( $ " , @ foo ) )
(The " is a WORD token, representing a variable name.)
"$_" becomes:
stringify ( $ _ )
We can turn "$_->@*" into:
stringify ( $ _ -> @ * POSTJOIN )
Where POSTJOIN is a new lexer token with special handling that creates
a join op just the way join($", ...) does.
To make "foo$_->@*bar" work as well, we have to make POSTJOIN have
precedence just below ->, so that
stringify ( "foo" . $ _ -> @ * POSTJOIN . "bar" )
(what the parser sees) is equivalent to:
stringify ( "foo" . ( $ _ -> @ * POSTJOIN ) . "bar" )
Diffstat (limited to 'perly.act')
-rw-r--r-- | perly.act | 351 |
1 files changed, 183 insertions, 168 deletions
@@ -1211,38 +1211,53 @@ case 2: case 145: #line 1057 "perly.y" + { (yyval.opval) = convert(OP_JOIN, 0, + op_append_elem( + OP_LIST, + newSVREF(scalar( + newSVOP(OP_CONST,0, + newSVpvs("\"")) + )), + (ps[(1) - (2)].val.opval) + )); + TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o'); + ;} + break; + + case 146: +#line 1069 "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 146: -#line 1062 "perly.y" + case 147: +#line 1074 "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 147: -#line 1071 "perly.y" + case 148: +#line 1083 "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 148: -#line 1076 "perly.y" + case 149: +#line 1088 "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 149: -#line 1081 "perly.y" + case 150: +#line 1093 "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),';'); @@ -1250,8 +1265,8 @@ case 2: ;} break; - case 150: -#line 1087 "perly.y" + case 151: +#line 1099 "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),';'); @@ -1259,8 +1274,8 @@ case 2: ;} break; - case 151: -#line 1093 "perly.y" + case 152: +#line 1105 "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'); @@ -1269,22 +1284,22 @@ case 2: ;} break; - case 152: -#line 1104 "perly.y" + case 153: +#line 1116 "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 153: -#line 1108 "perly.y" + case 154: +#line 1120 "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 154: -#line 1112 "perly.y" + case 155: +#line 1124 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_prepend_elem(OP_LIST, @@ -1298,8 +1313,8 @@ case 2: ;} break; - case 155: -#line 1124 "perly.y" + case 156: +#line 1136 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_append_elem(OP_LIST, @@ -1314,8 +1329,8 @@ case 2: ;} break; - case 156: -#line 1137 "perly.y" + case 157: +#line 1149 "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(); @@ -1325,8 +1340,8 @@ case 2: ;} break; - case 157: -#line 1145 "perly.y" + case 158: +#line 1157 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), @@ -1337,86 +1352,86 @@ case 2: ;} break; - case 162: -#line 1161 "perly.y" + case 163: +#line 1173 "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 163: -#line 1166 "perly.y" + case 164: +#line 1178 "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 164: -#line 1170 "perly.y" + case 165: +#line 1182 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 165: -#line 1172 "perly.y" + case 166: +#line 1184 "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 166: -#line 1176 "perly.y" + case 167: +#line 1188 "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 167: -#line 1181 "perly.y" + case 168: +#line 1193 "perly.y" { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); ;} break; - case 168: -#line 1183 "perly.y" + case 169: +#line 1195 "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 169: -#line 1188 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} - break; - case 170: -#line 1190 "perly.y" +#line 1200 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 171: -#line 1192 "perly.y" +#line 1202 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 172: -#line 1194 "perly.y" +#line 1204 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 173: -#line 1196 "perly.y" - { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;} +#line 1206 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 174: -#line 1198 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} +#line 1208 "perly.y" + { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;} break; case 175: -#line 1200 "perly.y" +#line 1210 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} + break; + + case 176: +#line 1212 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1430,8 +1445,8 @@ case 2: ;} break; - case 176: -#line 1212 "perly.y" + case 177: +#line 1224 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1445,8 +1460,8 @@ case 2: ;} break; - case 177: -#line 1224 "perly.y" + case 178: +#line 1236 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1462,8 +1477,8 @@ case 2: ;} break; - case 178: -#line 1238 "perly.y" + case 179: +#line 1250 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1479,26 +1494,26 @@ case 2: ;} break; - case 179: -#line 1252 "perly.y" + case 180: +#line 1264 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 180: -#line 1254 "perly.y" + case 181: +#line 1266 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;} break; - case 181: -#line 1256 "perly.y" + case 182: +#line 1268 "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 182: -#line 1261 "perly.y" + case 183: +#line 1273 "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)))); @@ -1513,127 +1528,127 @@ case 2: ;} break; - case 183: -#line 1274 "perly.y" + case 184: +#line 1286 "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 184: -#line 1279 "perly.y" + case 185: +#line 1291 "perly.y" { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'$'); ;} break; - case 185: -#line 1283 "perly.y" + case 186: +#line 1295 "perly.y" { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 186: -#line 1287 "perly.y" + case 187: +#line 1299 "perly.y" { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'%'); ;} break; - case 187: -#line 1291 "perly.y" + case 188: +#line 1303 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF(IVAL((ps[(3) - (4)].val.i_tkval)),(ps[(1) - (4)].val.opval)))); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'&'); ;} break; - case 188: -#line 1296 "perly.y" + case 189: +#line 1308 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'*'); ;} break; - case 189: -#line 1300 "perly.y" + case 190: +#line 1312 "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 190: -#line 1305 "perly.y" + case 191: +#line 1317 "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 191: -#line 1309 "perly.y" + case 192: +#line 1321 "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 192: -#line 1313 "perly.y" + case 193: +#line 1325 "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 193: -#line 1317 "perly.y" + case 194: +#line 1329 "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 194: -#line 1321 "perly.y" + case 195: +#line 1333 "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 195: -#line 1325 "perly.y" + case 196: +#line 1337 "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 196: -#line 1329 "perly.y" + case 197: +#line 1341 "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 197: -#line 1333 "perly.y" + case 198: +#line 1345 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; - case 198: -#line 1335 "perly.y" + case 199: +#line 1347 "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 199: -#line 1338 "perly.y" + case 200: +#line 1350 "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 200: -#line 1342 "perly.y" + case 201: +#line 1354 "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),'('); @@ -1641,27 +1656,27 @@ case 2: ;} break; - case 201: -#line 1348 "perly.y" + case 202: +#line 1360 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 202: -#line 1350 "perly.y" + case 203: +#line 1362 "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 203: -#line 1355 "perly.y" + case 204: +#line 1367 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; - case 204: -#line 1358 "perly.y" + case 205: +#line 1370 "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); @@ -1672,8 +1687,8 @@ case 2: ;} break; - case 205: -#line 1367 "perly.y" + case 206: +#line 1379 "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),'('); @@ -1681,8 +1696,8 @@ case 2: ;} break; - case 206: -#line 1373 "perly.y" + case 207: +#line 1385 "perly.y" { if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR @@ -1695,16 +1710,16 @@ case 2: ;} break; - case 207: -#line 1384 "perly.y" + case 208: +#line 1396 "perly.y" { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')'); ;} break; - case 210: -#line 1391 "perly.y" + case 211: +#line 1403 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -1712,8 +1727,8 @@ case 2: ;} break; - case 212: -#line 1401 "perly.y" + case 213: +#line 1413 "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'); @@ -1723,151 +1738,151 @@ case 2: ;} break; - case 213: -#line 1409 "perly.y" + case 214: +#line 1421 "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 214: -#line 1416 "perly.y" + case 215: +#line 1428 "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 215: -#line 1421 "perly.y" + case 216: +#line 1433 "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 216: -#line 1426 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} - break; - case 217: -#line 1428 "perly.y" +#line 1438 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 218: -#line 1430 "perly.y" +#line 1440 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 219: -#line 1435 "perly.y" - { (yyval.opval) = (OP*)NULL; ;} +#line 1442 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 220: -#line 1437 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} +#line 1447 "perly.y" + { (yyval.opval) = (OP*)NULL; ;} break; case 221: -#line 1441 "perly.y" - { (yyval.opval) = (OP*)NULL; ;} +#line 1449 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 222: -#line 1443 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} +#line 1453 "perly.y" + { (yyval.opval) = (OP*)NULL; ;} break; case 223: -#line 1449 "perly.y" - { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} +#line 1455 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 224: -#line 1453 "perly.y" +#line 1461 "perly.y" + { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} + break; + + case 225: +#line 1465 "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 225: -#line 1459 "perly.y" + case 226: +#line 1471 "perly.y" { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$'); ;} break; - case 226: -#line 1465 "perly.y" + case 227: +#line 1477 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 227: -#line 1472 "perly.y" + case 228: +#line 1484 "perly.y" { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%'); ;} break; - case 228: -#line 1479 "perly.y" + case 229: +#line 1491 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l'); ;} break; - case 229: -#line 1485 "perly.y" + case 230: +#line 1497 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*'); ;} break; - case 231: -#line 1492 "perly.y" + case 232: +#line 1504 "perly.y" { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 233: -#line 1499 "perly.y" + case 234: +#line 1511 "perly.y" { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 235: -#line 1506 "perly.y" + case 236: +#line 1518 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'*'); ;} break; - case 236: -#line 1513 "perly.y" + case 237: +#line 1525 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 237: -#line 1515 "perly.y" + case 238: +#line 1527 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 238: -#line 1517 "perly.y" + case 239: +#line 1529 "perly.y" { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;} break; - case 239: -#line 1520 "perly.y" + case 240: +#line 1532 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; @@ -1878,6 +1893,6 @@ case 2: /* Generated from: - * 1197382d22c31fcdde494b49bf64759ffa9ecf45fb2536cefae6300977d788aa perly.y + * 020be75832dcc7c18bd88434c3ba0e24a136dc093c4b8bf2cef9efa5875c9a29 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ |