/usr/share/doc/libparse-recdescent-perl/examples/demo_embedding.pl is in libparse-recdescent-perl 1.967009+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #!/usr/bin/perl -w
use Parse::RecDescent;
#$RD_TRACE=1;
my $parser = Parse::RecDescent->new(<<'EOGRAMMAR');
file: <skip:''> item(s)
item: directive
| text
directive: '<%' <skip:'\\s*'> command arg(s?) m|/?%>|
{ $return = bless \%item, 'directive' }
command: m|/?[a-z]\w*|i
arg: argname '=' string
{ $return = \%item }
| string
{ $return = \%item }
| data
{ $return = \%item }
argname: /[a-z]\w*/i
string: '"' /[^\\"]*(\\.[^\\"]*)*/ '"'
{ $return = $item[2] }
data: m|((?!/?%>)\S)+|
text: /((?!<%).)+/s
{ $return = bless \$item[1], 'text' }
EOGRAMMAR
my $data = join '', <DATA>;
my $info = $parser->file($data);
use Data::Dumper;
print Data::Dumper->Dump($info);
__DATA__
<% If expr %>
the if worked
<% Else %>
it didn't work
<% /If %>
>
<% Include file="foo.txt" /%>
>
<% Run Function="myFunc" Attr="x" ...%>
<% Arg Name="row" %>
<TR><TD>Name</TD><TD>{name}</TD></TR>
<% /Arg %>
<% /Run %>
|