summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2004-10-10 19:18:00 +0000
committerDave Mitchell <davem@fdisolutions.com>2004-10-10 19:18:00 +0000
commit131b3ad08b25bcfcb31b9933319b3186bdd13248 (patch)
tree49a4863bce88baf2d0050c81f56637cb3eb2c742 /toke.c
parent54cf8e17f0d40db1139c694ac85474f8b0c35b86 (diff)
downloadperl-131b3ad08b25bcfcb31b9933319b3186bdd13248.tar.gz
Turn regcomp into a list op
p4raw-id: //depot/perl@23357
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/toke.c b/toke.c
index 80a9ba7682..7c9d88f4d9 100644
--- a/toke.c
+++ b/toke.c
@@ -2411,7 +2411,11 @@ Perl_yylex(pTHX)
if (PL_lex_starts) {
s = PL_bufptr;
PL_lex_starts = 0;
- Aop(OP_CONCAT);
+ /* commas only at base level: /$a\Ub$c/ => ($a,uc(b.$c)) */
+ if (PL_lex_casemods == 1 && PL_lex_inpat)
+ OPERATOR(',');
+ else
+ Aop(OP_CONCAT);
}
else
return yylex();
@@ -2441,7 +2445,11 @@ Perl_yylex(pTHX)
}
if (PL_lex_starts++) {
s = PL_bufptr;
- Aop(OP_CONCAT);
+ /* commas only at base level: /$a\Ub$c/ => ($a,uc(b.$c)) */
+ if (!PL_lex_casemods && PL_lex_inpat)
+ OPERATOR(',');
+ else
+ Aop(OP_CONCAT);
}
return yylex();
@@ -2495,8 +2503,13 @@ Perl_yylex(pTHX)
PL_nextval[PL_nexttoke] = yylval;
PL_expect = XTERM;
force_next(THING);
- if (PL_lex_starts++)
- Aop(OP_CONCAT);
+ if (PL_lex_starts++) {
+ /* commas only at base level: /$a\Ub$c/ => ($a,uc(b.$c)) */
+ if (!PL_lex_casemods && PL_lex_inpat)
+ OPERATOR(',');
+ else
+ Aop(OP_CONCAT);
+ }
else {
PL_bufptr = s;
return yylex();