my $grammar = q {
entry: chunk(s) eodata { $item[1] }
chunk: text | code
text: m{[\w ]+} { qq(
$item[1]
); }
code: opencode codetext closecode {$item[2] }
opencode: m{}
closecode: m{}
codetext: m{[\w <\$]+(?=)} { qq() . CGI::escapeHTML($item[1]) . qq(
); }
eodata: m{^\Z}
};