cvs: ZendEngine2 / zend_language_parser.y
| From: | Stanislav Malyshev | Date: | Fri, 18 May 2007 20:48:19 +0000 |
| Subject: | cvs: ZendEngine2 / zend_language_parser.y | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-5810@lists.php.net to get a copy of this message | ||
stas Fri May 18 20:48:19 2007 UTC
Modified files:
/ZendEngine2 zend_language_parser.y
Log:
fix unary operator precision (bug #41401)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_parser.y?r1=1.182&r2=1.183&diff_format=u
Index: ZendEngine2/zend_language_parser.y
diff -u ZendEngine2/zend_language_parser.y:1.182 ZendEngine2/zend_language_parser.y:1.183
--- ZendEngine2/zend_language_parser.y:1.182 Fri May 18 13:12:47 2007
+++ ZendEngine2/zend_language_parser.y Fri May 18 20:48:19 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_parser.y,v 1.182 2007/05/18 13:12:47 dmitry Exp $ */
+/* $Id: zend_language_parser.y,v 1.183 2007/05/18 20:48:19 stas Exp $ */
/*
* LALR shift/reduce conflicts and how they are resolved:
@@ -592,8 +592,8 @@
| expr '%' expr { zend_do_binary_op(ZEND_MOD, &$$, &$1, &$3 TSRMLS_CC); }
| expr T_SL expr { zend_do_binary_op(ZEND_SL, &$$, &$1, &$3 TSRMLS_CC); }
| expr T_SR expr { zend_do_binary_op(ZEND_SR, &$$, &$1, &$3 TSRMLS_CC); }
- | '+' expr { Z_LVAL($1.u.constant)=0; Z_TYPE($1.u.constant)=IS_LONG; $1.op_type =
IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_ADD, &$$, &$1, &$2
TSRMLS_CC); }
- | '-' expr { Z_LVAL($1.u.constant)=0; Z_TYPE($1.u.constant)=IS_LONG; $1.op_type =
IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_SUB, &$$, &$1, &$2
TSRMLS_CC); }
+ | '+' expr %prec T_INC { Z_LVAL($1.u.constant)=0; Z_TYPE($1.u.constant)=IS_LONG;
$1.op_type = IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_ADD, &$$, &$1,
&$2 TSRMLS_CC); }
+ | '-' expr %prec T_INC { Z_LVAL($1.u.constant)=0; Z_TYPE($1.u.constant)=IS_LONG;
$1.op_type = IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_SUB, &$$, &$1,
&$2 TSRMLS_CC); }
| '!' expr { zend_do_unary_op(ZEND_BOOL_NOT, &$$, &$2 TSRMLS_CC); }
| '~' expr { zend_do_unary_op(ZEND_BW_NOT, &$$, &$2 TSRMLS_CC); }
| expr T_IS_IDENTICAL expr { zend_do_binary_op(ZEND_IS_IDENTICAL, &$$, &$1, &$3
TSRMLS_CC); }