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: [email protected]
> 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