[PHP-BUG] Bug #69091 [NEW]: assign by reference and math
[email protected] ("rstoll at tutteli dot ch")
| Newsgroups | php.standards |
|---|---|
| Message-ID | <[email protected]> |
From: rstoll at tutteli dot ch Operating system: PHP version: 5.6.6 Package: PHP Language Specification Bug Type: Bug Bug description:assign by reference and math Description: ------------ assign by reference in conjunction with arithmetic does not result in a syntax error as expected. The test script shows two examples. The first one is correct according to the current implementation, but should result in a parser error IMO. The second results in a parser error (how it should be). It seems like the parser has a wrong precedence. I think the problem is this line in the grammar: http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_language_parser.y#777 The langspec does not mention operator precedence explicitly (which should be added IMO) but implicitly the =& operator can be found in the section "Assignment Operator" (https://github.com/php/php-langspec/blob/b1e7a65fb9c985a8114322330468b77fb955cfae/spec/19-grammar.md#assignment-operators) which is further below than + Test script: --------------- $a = &$a + 1; $a = 1 + &$a; Expected result: ---------------- parser error in both cases or the precedence explanation needs to be changed. Reading the spec I would assume the first line in the code above is equivalent to: $a = (&$a + 1); and not ($a = &$a) + 1; -- Edit bug report at https://bugs.php.net/bug.php?id=69091&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=69091&r=trysnapshot54 Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=69091&r=trysnapshot55 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=69091&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=69091&r=fixed Fixed in release: https://bugs.php.net/fix.php?id=69091&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=69091&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=69091&r=needscript Try newer version: https://bugs.php.net/fix.php?id=69091&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=69091&r=support Expected behavior: https://bugs.php.net/fix.php?id=69091&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=69091&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=69091&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=69091&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=69091&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=69091&r=dst IIS Stability: https://bugs.php.net/fix.php?id=69091&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=69091&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=69091&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=69091&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=69091&r=mysqlcfg