From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5041 invoked from network); 20 Apr 1998 19:57:30 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 20 Apr 1998 19:57:30 -0000 Received: (from list@localhost) by math.gatech.edu (8.8.5/8.8.5) id PAA18840; Mon, 20 Apr 1998 15:49:52 -0400 (EDT) Resent-Date: Mon, 20 Apr 1998 15:49:52 -0400 (EDT) From: Andrew Main Message-Id: <199804201949.UAA21486@taos.demon.co.uk> Subject: Re: zsh-3.1.2-zefram4 To: pws@ifh.de (Peter Stephenson) Date: Mon, 20 Apr 1998 20:49:37 +0100 (BST) Cc: zsh-workers@math.gatech.edu In-Reply-To: <199804201854.UAA10269@hydra.ifh.de> from "Peter Stephenson" at Apr 20, 98 08:54:08 pm X-Loop: zefram@tao.co.uk X-Phase: The Moon is Waning Crescent (40% of Full) X-Stardate: [-30]1034.13 X-US-Congress: moronic fuckers X-Headers: OTT X-Mouse: +++ ????? +++ Out Of Cheese Error. Redo From Start. X-Parrot: no, it's only resting. X-Personality: INTJ X-email-is-not-HTML: X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"3gswa.0.Jc4.VRwEr"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3849 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Peter Stephenson wrote: >The idea was that with the ksh and zsh models being incompatible >anyway, it was asking for trouble trying to mix them. If we add an unambigous syntax for qualifiers, it will be possible to mix them. Anyway, I simplified the code, as well as the documentation, quite a bit. >?? It didn't have any semantics before, it didn't work at all inside >parentheses. It works just as well as *~, unless I'm missing a critical test case. As I mentioned earlier, there's a serios bug in ~ processing. >but what's wrong with the meaning `negate the following' that it needs >the extra parentheses? Precedence. ^ binds tighter than /, | and so on. ~ binds looser than anything except |. You made a ^ immediately after a ( bind looser than *anything*, which made "(^foo|bar)" and "((|)^foo|bar)" behave differently. >> This turned up a very old >> bug in the exclusion handling: `(foo~bar)BAZ' is actually treated as >> `fooBAZ~barBAZ', rather than the exclusion being properly localised. > >?????? How could it possibly mean anything else? It matters when what follows the parentheses has more than one way to match. This includes the case of having two negations in the pattern or, and this is the killer, a negation inside a loop. Consider "(*~foo)b*" versus "*b*~foob*" -- "foobb" should match the former ("foob" matches "(*~foo)") but not the latter. -zefram