Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH (redux): POSIX `for' syntax
- X-seq: zsh-workers 15027
 
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
 
- To: zsh-workers@xxxxxxxxxx (Zsh hackers list)
 
- Subject: PATCH (redux): POSIX `for' syntax
 
- Date: Thu, 21 Jun 2001 10:34:39 +0000
 
- In-reply-to: <Tc0a88d0154470c687b@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
 
- References: <Tc0a88d0154470c687b@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
On Jun 21, 10:52am, Peter Stephenson wrote:
} Subject: Re: PATCH: 4.1: multi-parameter for loop
}
} > I guess, Bart suggestion (use foreach) is better. And more Perlish :-)
} 
} I'm not so convinced, since `for' and `foreach' currently do the same
} thing, and I don't really like dividing the syntax to make people use the
} non-standard variant just for one use.  foreach is automatically handled at
} the moment, as well as for, by the way.
Hrm.  The patch I just sent makes
	for x
	(a b c)
behave as `for x (a b c)' used to, but
	foreach x
	(a b c)
is taken as a short-loop to run the command "a b c" in a subshell once for
each positional parameter.  I think they should both behave that way; so
the change to parse.c has to be fractionally more complicated.
This goes on top of the last one.
--- zsh-forge/current/Src/parse.c	Thu Jun 21 03:06:36 2001
+++ zsh-4.0/Src/parse.c	Thu Jun 21 03:31:04 2001
@@ -903,13 +903,15 @@
 	yylex();
 	type = WC_FOR_COND;
     } else {
+	int posix_in;
 	infor = 0;
 	if (tok != STRING || !isident(tokstr))
 	    YYERRORV(oecused);
 	ecstr(tokstr);
 	incmdpos = 1;
 	yylex();
-	while (isnewlin && !csh)
+	posix_in = isnewlin;
+	while (isnewlin)
 	  yylex();
 	if (tok == STRING && !strcmp(tokstr, "in")) {
 	    int np, n;
@@ -922,7 +924,7 @@
 		YYERRORV(oecused);
 	    ecbuf[np] = n;
 	    type = (sel ? WC_SELECT_LIST : WC_FOR_LIST);
-	} else if (tok == INPAR) {
+	} else if (!posix_in && tok == INPAR) {
 	    int np, n;
 
 	    incmdpos = 0;
-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   
Messages sorted by:
Reverse Date,
Date,
Thread,
Author