in reply to Raw Text and Parse::RecDescent
To answer my own question-- Read the fine pod brother! Within minutes of posting, the usual Myers-Murphy Law of Public Posting1 did it's usual magic. The pod in part reads:
“ The "<perl_codeblock>" directive can be used to parse
curly-brace-delimited block of Perl code, such as: { $a = 1; f() =~ m/pat/; }.
It does this by calling Text::Balanced::extract_codeblock().
If the directive matches text representing a valid Perl code block,
it returns that text. Otherwise it fails with the usual "undef"
value.”
All of which leads to an improved shorter solution:
(1) Embarrassment is directly proportional to how obvious the answer suddenly becomes.my $parser = new Parse::RecDescent( q{ startrule: script script: 'script' '[' script_options(s /,/) ']' codeblock codeblock: <perl_codeblock> script_options: script_option '=' qstring script_option: 'tag-prefix' | 'language' | 'implements-prefix' is_printable: /[a-zA-Z0-9_&\#;:\$()\'= ,!\@\/.\[\]\-]+/ qstring: '"' is_printable '"' } );
–hsm
"Never try to teach a pig to sing…it wastes your time and it annoys the pig."
|
|---|