diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2004-10-10 19:18:00 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2004-10-10 19:18:00 +0000 |
commit | 131b3ad08b25bcfcb31b9933319b3186bdd13248 (patch) | |
tree | 49a4863bce88baf2d0050c81f56637cb3eb2c742 /toke.c | |
parent | 54cf8e17f0d40db1139c694ac85474f8b0c35b86 (diff) | |
download | perl-131b3ad08b25bcfcb31b9933319b3186bdd13248.tar.gz |
Turn regcomp into a list op
p4raw-id: //depot/perl@23357
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -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(); |