entry : chunk(s?) EOF { join('', @{$item[1]}) } chunk : text { $item[1] } | code { $item[1] } text : TEXT { join('', '
', $item[1], '
') } code : CODE_OP CODE_TEXT CODE_CL { join('', '
', CGI::escapeHTML($item[2]), '
') } # Tokens EOF : m{^\Z} TEXT : m{[\w ]+} { $item[1] } CODE_OP : m{} { $item[1] } CODE_CL : m{} { $item[1] } CODE_CHARS : m{[\w $]+} { $item[1] } CODE_SPECIAL : m{<\w+>} { $item[1] ne '' } { $item[1] } # Pseudo-token CODE_TEXT : CODE_TEXT_(s?) { join('', @{$item[1]}) } CODE_TEXT_ : CODE_CHARS { $item[1] } | CODE_SPECIAL { $item[1] }