IMO labeld breaks are *alot* more readable then break NUM; On 11/30/05, Dmitry Stogov <[EMAIL PROTECTED]> wrote: > Hi Sara, > > This "break LABEL" construct does exactly the same as "break NUM", > > Also I don't like syntax for loops that you suggested. > I prefer "LABEL: while(1) {...}" instead of while LABEL (1) {...}". > > This construct has logic and make sense, but I am not sure that we should > incrise complication of PHP compiler without any serious benefits. > Readability is the only one benefit of this patch. > > May be I missed something? I didn't look into patch deep. > > Thanks. Dmitry. > > > -----Original Message----- > > From: Sara Golemon [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, November 30, 2005 4:41 AM > > To: internals@lists.php.net > > Subject: [PHP-DEV] Labeled Break (nothing at all whatsoever > > to do with GOTO) > > > > > > But first, this word from our sponsor: > > Group A wants anything resembling goto to burn in the fires > > of hell Group B wants full non-crippled goto or nothing at > > all Group C wants partial goto (non-backward jumping) or > > nothing at all Groups B and C both (generally) want it called > > either GOTO or JUMP, not BREAK > > > > Since no group this size will ever come to an agreement on > > something this divisive, I'd like to turn the topic to a > > completely different language feature which (might) please > > enough people to get a rousing consensus. > > > > Actual labeled breaks. Not the break+jump that was proposed > > earlier in the guise of a break statement, but an actual > > straightforward, no funny-business labeled break which does > > no more and no less than the current break N; construct, but > > allows the use of identifier labels rather than numbers which > > may change as the result of the addition or removal of break > > containers. > > > > http://libssh2.org/patches/true_labeled_break.diff > > > > Usage: > > > > while FOO ($condition) { > > /* statements */ > > break FOO; > > /* more statements */ > > } > > > > Or a stacked example: > > > > for FOO(;;) { > > while BAR (true) { > > foreach BAZ ($arr as $val) { > > switch Foof ($value) { > > default: > > do Plop { > > break FOO; > > } while (false); > > } > > } > > } > > } > > > > Notes on this implementation: > > > > * Labels can't be repeated in an ancestral line. For > > example, the parser will throw an ERROR on the following: > > while FOO(true) { > > while FOO(true) { > > break FOO; > > } > > } > > > > * Labels can be repeated by siblings. I'm not married to > > this, and it certainly has WTF potential. This behavior is > > easily modified to throw an error. I left it permissable > > because there was no technical reason to disallow it. For > > example, the following is okay: while FOO(true) { > > break; > > } > > while FOO(true) { > > break FOO; > > } > > > > * Labeled breaks also apply to continue; For example: > > foreach FOO($arr as $key => $val) { > > if ($key % 2) continue FOO; > > if (empty(%key)) break FOO; > > } > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php