From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by melb.werple.net.au (8.7.5/8.7.3/2) with ESMTP id KAA09009 for ; Tue, 9 Jul 1996 10:42:48 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id UAA15705; Mon, 8 Jul 1996 20:36:26 -0400 (EDT) Resent-Date: Mon, 8 Jul 1996 20:33:41 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199607090033.CAA11237@bolyai.cs.elte.hu> Subject: Re: Suggested "case" syntax extension To: segal@morgan.com (Morris M. Siegel) Date: Tue, 9 Jul 1996 02:33:06 +0200 (MET DST) Cc: zsh-users@math.gatech.edu, segal@morgan.com In-Reply-To: <9607081946.ZM7325@morgan.com> from "Morris M. Siegel" at "Jul 8, 96 07:46:21 pm" Organization: Dept. of Comp. Sci., Eotvos University, Budapest, Hungary Phone: (36 1)2669833 ext: 2667, home phone: (36 1) 2752368 X-Mailer: ELM [version 2.4ME+ PL16 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"MUG5P.0.7q3.aZQun"@euclid> Resent-From: zsh-users@math.gatech.edu X-Mailing-List: archive/latest/276 X-Loop: zsh-users@math.gatech.edu X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu > Newer versions of ksh allow an optional '(' before each pattern in a case > statement, complementary to the mandatory ')' following the pattern. As > well as being esthetically symmetric, this also facilitates verifying that > a shell script has balanced parentheses (e.g. with the '%' command in vi). > > It seems that zsh still recognizes only the classic Bourne shell syntax for > "case", with the ')' but no optional '('. Considering all the syntactic > variation zsh supports, it would be quite reasonable for zsh to allow a > leading '(', thereby enhancing compatibility with ksh scripts. Although > I have not looked into the zsh source, I imagine this should not pose an > implementation problem. Zsh accepts an optional leading '(' since 2.6-beta21. POSIX 1003.2 requires this. It also allows us to use case sttement in $(...) command substitutions (of course even a normal case should work in a command substitution but the zsh implementation requires ballanced parentheses like bash and pdksh). Zsh is not completely ksh compatible here since due to the enhanced glob pattern syntax recognized by zsh if there is a leading '(' the closing ')' must be delimited with a blank from the command following that. So case foo in (f*)echo yes;; (*)echo no;; esac does not work in zsh but case foo in (f*) echo yes;; (*) echo no;; esac works. Zoltan