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

Reply via email to