On Tuesday 17 January 2006 16:50, Chris Dolan wrote: > Allison et al., > > I was looking at languages/punie/lib/punie.g in the current SVN head > and got confused. I see: > rule gprint { (print) \s* <PunieGrammar::expr> } > and > rule expr { <PunieGrammar::gprint> | <PunieGrammar::cexpr> } > > Doesn't that imply that "print print print print 1;" is a valid Punie > program? Is that intentional? It seems to me that the gprint rule > should instead contain "cexpr": > rule gprint { (print) \s* <PunieGrammar::cexpr> }
"print print print print 1;" is certainly a valid Perl 5 program; it prints a 1 followed by 3 other things (which are defined to be true, and which happen to also be the number 1). Digging on retroperl.cpan.org shows that it did exactly the same thing on perl 1.0.0. So to answer your question, it's probably intentional :) Andrew