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

Reply via email to