Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:20879 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 72129 invoked by uid 1010); 30 Nov 2005 08:25:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 72114 invoked from network); 30 Nov 2005 08:25:25 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Nov 2005 08:25:25 -0000 X-Host-Fingerprint: 66.249.82.198 xproxy.gmail.com Linux 2.4/2.6 Received: from ([66.249.82.198:47653] helo=xproxy.gmail.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id EF/F2-14828-5F16D834 for ; Wed, 30 Nov 2005 03:25:25 -0500 Received: by xproxy.gmail.com with SMTP id t10so1730944wxc for ; Wed, 30 Nov 2005 00:25:23 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=H4c23TmHyys0A0VPaSb5Hyr0Paz+wAOL1HxngXJwv13r7sGNycDlGVpe+MvQOwduxNHsx3ZKR9TS3d8nqq0DtE6yU7SxolTrXoNI4fzCl3gZlEvg8CtQkcS0B6ArOWiLsFkX9nTgQ79VD974c2OlPEHJ+wyx7PqEb1tMTnCCvBw= Received: by 10.70.52.19 with SMTP id z19mr3392861wxz; Wed, 30 Nov 2005 00:25:23 -0800 (PST) Received: by 10.70.41.10 with HTTP; Wed, 30 Nov 2005 00:25:23 -0800 (PST) Message-ID: <7f3ed2c30511300025t7ea96e54o6951f5814676067a@mail.gmail.com> Date: Wed, 30 Nov 2005 09:25:23 +0100 To: Dmitry Stogov Cc: Sara Golemon , internals@lists.php.net In-Reply-To: <000001c5f584$77823f80$e902a8c0@thinkpad> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <2B.E1.14828.4130D834@pb1.pair.com> <000001c5f584$77823f80$e902a8c0@thinkpad> Subject: Re: [PHP-DEV] Labeled Break (nothing at all whatsoever to do with GOTO) From: hannes.magnusson@gmail.com (Hannes Magnusson) IMO labeld breaks are *alot* more readable then break NUM; On 11/30/05, Dmitry Stogov 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:pollita@php.net] > > 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 =3D> $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 > >