Brent --

Clever points are relatively high here, but I find the idea of
doing the notionally simultaneous parse uncomfortable. I really
don't want my programs subject to a hidden double parse cost.

Regards,

-- Gregor

On Wed, 2004-04-14 at 15:30, Brent 'Dax' Royal-Gordon wrote:
> Aaron Sherman wrote:
> > On Wed, 2004-04-14 at 09:29, Gregor N. Purdy wrote:
> > 
> >>So, we are moving in a more verbose direction, which is a bummer for
> >>people who like to write one-liners and other tiny programs.
> > 
> > 
> >         perl6 -i.bak -ple 'rule octet {\d{1,2}|<[01]>\d{2}|2[<[1-4]>\d|5<[1-5]>]} 
> > s:g/\b<octet>\.<octet>\.<octet>\.<octet>\b/IP ADDR/;' *
> > 
> > No biggie.
> 
> Curlies aren't used for that anymore.  I'd also suggest using an 
> assertion for a much shorter C<octet> rule:
> 
>       perl6 -i.bak -ple 'rule octet {(\d<1,3>)<($1<256)>}
>               s:g/\b<octet>\.<octet>\.<octet>\.<octet>\b/IP ADDR/' *
> 
> TMTOWTDI, though, and I'm being rather nitpicky.
> 
> Personally, I would implement Perl 5 vs. Perl 6 switching as:
> 
> 1. If argv[0] includes either '5' or '6', use the appropriate version.
> 2. Parse the program as *both* Perl 5 and Perl 6.
> 3. Figure out which parses succeeded:
>     a. If Perl 5 succeeded...
>        i. If Perl 6 succeeded, emit an ambiguity warning.  (I think this
>           warning should be on by default, but that's open to
>           negotiation.)
>       ii. Execute the Perl 6 parse.
>     b. Else if Perl 6 succeeded, execute the Perl 6 parse.
>     c. Else...
>        i. If exactly one of the parses died on an error that
>           disambiguates between the Perls (e.g. a package statement, a
>           'use 6'), emit the other's error message.
>       ii. Otherwise, emit an ambiguity warning and both error messages.
-- 
Gregor Purdy                            [EMAIL PROTECTED]
Focus Research, Inc.               http://www.focusresearch.com/

Reply via email to