Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Parsing with Perl 6

by Juerd (Abbot)
on Jul 05, 2002 at 05:44 UTC ( [id://179569]=note: print w/replies, xml ) Need Help??


in reply to Parsing with Perl 6

Wow, very impressive. ++!

// <-[\n]>*:

I'd really want to take advantage of the new \N:

// \N*

foreach my $function (@functions)

In Perl6, foreach will just be for. The C-style for loop will be called loop. And the for syntax will slightly change:

for @functions -> my $function { ... }

rule quoted_string ($type) { $type [ <-[$type]>*: | [ <after \\ > $type ] ]* $type }

Why not already have both types there?

rule quoted_string { $delimiter := ( <['"]> ) [ <!before $delimiter> . | <after \\> $delimiter ]* $delimiter }
Hmm - In current regex stuff, I'd probably have written: /(['"]) (?: (?! \\ | \1) . | \\ . )* \1/x. Why not use something like that? (Or is it just a matter of taste?)
rule quoted_string { $delimiter := ( <['"]> ) [ <!before \\ | $delimiter> . | \\ . ] $delimiter }

- Yes, I reinvent wheels.
- Spam: Visit eurotraQ.

Replies are listed 'Best First'.
Re: Re: Parsing with Perl 6
by jryan (Vicar) on Jul 05, 2002 at 23:04 UTC

    Ah, you are completely right about \N, of course. I'm just a blockhead ;(

    Concerning quotes: I think that the way I structured mine is easier to convert from logic. For instance, I defined a quoted string as:

    - start quote - string of (non-quote or backslashed quote) characters - end quote

    Which I then translated into (comments added this time):

    rule quoted_string { " # start quote [ # string <-["]>+: # non quote characters | # or [ <after \\ > " ] # backslashed quote character ]* # end string " # end quote }

    It was then shown how to make it "dynamic" by simply adding an argument and subsituting that argument in for the quote delimeter. While yours is much more elegant and efficient, I thought that my example was easier to follow in the current context.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://179569]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2024-04-18 20:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found