X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.y;h=b1e7f9077d78b692f9aece6df8a6a0d5df11e3ab;hb=c963b151157dab5813a32fc6004b63916ad155e8;hp=f87f5815646edf4cc291f1e8f59848d38113e676;hpb=d73f34fb2db5664941bbe71b34c335b0ae3b50b3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.y b/perly.y index f87f581..b1e7f90 100644 --- a/perly.y +++ b/perly.y @@ -96,7 +96,7 @@ static void yydestruct(pTHX_ void *ptr); %nonassoc PREC_LOW %nonassoc LOOPEX -%left OROP +%left OROP DOROP %left ANDOP %right NOTOP %nonassoc LSTOP LSTOPSUB @@ -104,7 +104,7 @@ static void yydestruct(pTHX_ void *ptr); %right ASSIGNOP %right '?' ':' %nonassoc DOTDOT -%left OROR +%left OROR DORDOR %left ANDAND %left BITOROP %left BITANDOP @@ -419,6 +419,8 @@ expr : expr ANDOP expr { $$ = newLOGOP(OP_AND, 0, $1, $3); } | expr OROP expr { $$ = newLOGOP($2, 0, $1, $3); } + | expr DOROP expr + { $$ = newLOGOP(OP_DOR, 0, $1, $3); } | argexpr %prec PREC_LOW ; @@ -545,6 +547,8 @@ termbinop : term ASSIGNOP term /* $x = $y */ { $$ = newLOGOP(OP_AND, 0, $1, $3); } | term OROR term /* $x || $y */ { $$ = newLOGOP(OP_OR, 0, $1, $3); } + | term DORDOR term /* $x // $y */ + { $$ = newLOGOP(OP_DOR, 0, $1, $3); } | term MATCHOP term /* $x =~ /$y/ */ { $$ = bind_match($2, $1, $3); } ;