Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_language_parser.y /tests break_label01.phpt
break_label02.phpt break_label03.phpt break_label04.phpt break_label05.phpt break_label06.phpt break_l

From: Date: Fri, 03 Mar 2006 22:49:55 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_compile.c zend_compile.h zend_globals.h zend_language_parser.y /tests break_label01.phpt
break_label02.phpt break_label03.phpt break_label04.phpt break_label05.phpt break_label06.phpt break_l
References: 1 2 3 4  Groups: php.zend-engine.cvs 
Request: Send a blank email to [email protected] to get a copy of this message
Andi Gutmans wrote:
At 10:29 AM 3/3/2006, Rasmus Lerdorf wrote:
Marcus Boerger wrote:
Hello Dmitry, the code is the opposite of our beloved KISS approach. When i read: Label: while(1) { break Label; } i clearly expect an endless loop, guess why?
I'd have to agree with Marcus on this one. We are making one of the first forward compatibility breaks in the procedural language for this?
Sorry, I don't get it. Why do we expect this to be an endless loop? break Label just says what loop to break out of. Or am I misunderstanding the concern?
The confusion is that label: infers that execution ends up at this label somehow. Doesn't really matter how, but our syntax has it roots in C so if we are going to use a common C notation for something, it should behave in a somewhat similar fashion. If we want some notation for naming a specific loop (which I personally don't think is worth the core change) then couldn't we come up with a different notation? Heck, even flipping the colon to the other side a-la named SQL parameters would give people a visual cue that it isn't like a C label. :label while {
     ...
     continue :label;
} -Rasmus

Thread (28 messages)

« previous php.zend-engine.cvs (#4652) next »