What's undefined isn't the relationship between preinc/postinc and add. What's undefined is the use of multiple preinc/postinc operators within a single expression (preincrements in particular). Our parser grammer, as it currently stands, does have a predictable order, but that is a side-effect of implementation. The language's definition of order of resolution of multiple preinc/postinc elements within a single ticked statement is that they are undefined. And *that* is what made your *particular* change to the documentation incorrect.
If you'd like to define behavior for: echo ++$a + 1; then that's a different matter. Defining the behavior of ++$a + $a++, however is inviting misunderstanding*. What was inappropriate, was asking for comment, receiving comment which cited an issue, then committing without discussing that issue first. -Sara * Even if, technically, either order of evaluation will result in the same answer for this contrived expression. ++$a * $a++ is a more obviously ambiguous answer for a language which explicitly does not define an order of resolution. On Fri, Jul 19, 2013 at 9:28 PM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: > Hi Sara, > > 2013/7/20 Sara Golemon <poll...@php.net> > >> On Fri, Jul 19, 2013 at 7:16 PM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: >> >>> >>> >>> If there aren't comments, I'll rewrite the example. >>> >>> >>> There were comments. I explicitly told you that that the behavior is >> defined as undefined. You CHOSE to ignore that comment. You CHOSE to >> break the documentation. >> > > If there is defined precedence, arithmetic operation should follow it. > If there is exception, it should be documented. > > I don't understand why/how the arithmetic operation can be > ambiguous with defined precedence. (++ and -- are higher than +) > > $a = 1; > echo ++$a + $a++; > > should always print 4 with current PHP precedence definition. > If it does not, it's a bug in language. > > // mixing ++ and + produces undefined behavior > $a = 1; > echo ++$a + $a++; // may print 4 or 5 > > I don't see any reason it became undefined. > If this kind of simple precedence is broken, how programmers write > code and/or trust the language? > > http://3v4l.org/mR4da/vld#tabs > > This site seems support PHP 4.3.0 to PHP 5.5.0 and opcode looks > fine. Am I missing something? > > If you would like to suggest use of (), it should be done differently. > IMHO. > The comment only ruins PHP's reputation as language. > > Regards, > > -- > Yasuo Ohgaki > yohg...@ohgaki.net >