Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
"be consistent"
 
PerlMonks  

Re: Re: Re: Re: Re: Re: parsing an ASP file

by Juerd (Abbot)
on May 25, 2004 at 17:34 UTC ( [id://356387]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Re: Re: Re: Re: Re: parsing an ASP file
in thread parsing an ASP file

/\G((?: [^<]+ | <(?!%) )*) (?: <%(.*?)%> | ((?=<%)) )?/gsx

Just for fun, I wanted to try to make a Perl 6 rule from this. Here it is, untested and mostly guessed. I have no idea how to do line numbers, so I cheated and imagined a method of .pos for that :)

rule code_begin ($type) { <{ { asp => '<%', php => '<?', plp => '<:' }.{$type} // fail "Unknown type: $type" }> } rule code_end ($type) { <{ { asp => '%>', php => '?>', plp => ':>' }.{$type} // fail "Unknown type: $type" }> } rule code_block ($type) { <code_begin $type> (.*?) <code_end $type> } rule code_document ($type) { [ # First, match any number of subsequent code blocks. [ { $?line := .pos.line } <code_block $type> :: { push @?blocks, [ $?line, code => $?code_block ] } ]* # If there is now a code_begin, obviously that is an open bloc +k. # (In PLP, that is valid, but let's assume for now that it's n +ot.) [ { $?line := .pos.line } <code_begin $type> \n* $?context := (\N<,15>) { fail "Unclosed code block on line $?line, near '$?contex +t'" } ]? # And then a piece of text. # (At least one character, to avoid having empty blocks.) [ { $?line := .pos.line } $?html := (.+?) [ <before <code_begin $type>> | $ ] :: { push @?blocks, [ $?line, html => $?html ] } ]? ]* } my @parsed = ($asp ~~ /<code_document 'asp'>/).{blocks}

Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://356387]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.