> Date: Tue, 4 Feb 2003 01:57:00 +0100 > From: =?iso-8859-1?Q?St=E9phane?= Payrard <[EMAIL PROTECTED]> > > In the tradition of Perl concision, I would like newline to be a > statement terminator everywhere it can: that is when > a) the parser expects an operator > _and_ b) we are not in the middle of a parenthesised expression.
Can you say "Ruby"? No, I think a semicolon should still be required to seperate statements. > Accessorily, it would also help people to switch back and forth > between language that use newline as statement terminator and perl6: > they will not be burn anymore when forgetting a semicolon. Of course, error detection as far as semicolons go is getting much better. Parsers can determine (usually) exactly which line the semicolon was left off of. > Note that in Perl5, semicolon is not always required as statement > terminator. At the end of a scope, being a closing brace, or the end > of a program, including an explicit eval or an implicit one (perldb > shell). That's because, in Perl 5, semicolon is not a statement terminator. It is a statement I<separator>. That is why you don't need it at the end of various places, because you don't need to separate it from anything. > About the b) rule. > ------------------ > > The following code does not parse because of the newlines that are > interpreted as statement terminator. > > for > 1..10 > { ... } > > But > > for ( > 1.. 10 > ) { > } > > is legit. See, this is the main, unPerlish thing you're doing. You're enforcing particular styles upon people, something Perl is proud of *not* doing. Let's not forget the often occurence of: $fh = open 'foobar' or die "Can't open foobar: $!"; An implicit semicolon would cause it to croak there. Also, s/or/$(any <<if unless for while when ...>>)/ It would be trivial with a grammar munge to implement this (heck, I did it with a source filter in Perl 5). Surely CPAN6 (6PAN/CP6AN/??) will come out with one of these right off the bat, so you could do: use Grammar::ImplicitSemicolon; Or something like that, and be done with it. Luke