page: block(s?)
block: nonplainblock | plainblock
plainblock: emptyline(?) plainline(s) { $return = [ '
' ; }
list: olist | ulist
line: linepart(s) newline(?) { $return = [($arg[0]||''),@item[1..$#item-1],($arg[1]||''), $item[-1]] ; }
unformattedline: unformattedlinepart(s) newline(?) { $return = [($arg[0]||''),@item[1..$#item-1],($arg[1]||''), $item[-1]] ; }
unformattedlinepart: link | plaintextpart
plaintextpart: image | urllink | /[ \t\w]+ |(?!\z).?/
plaintextline: plaintextpart(s) newline(?) { $return = [($arg[0]||''),@item[1..$#item-1],($arg[1]||''), $item[-1]] ; }
newline: "\n"
pre: preline(s) { $return = [ '
', @item[1..$#item], '
' ] ; }
olist: ol_line(s) { $return = [ '
', @item[1..$#item], '
' ] ; }
ulist: ul_line(s) { $return = [ '
' ] ; }
preline: ' ' plaintextline['',''] { $return = $item[2] ; }
ol_line: /\+ +/ line['
',''] { $return = $item[2] ; }
ul_line: /\* +/ line['
',''] { $return = $item[2] ; }
emptyline: /[ \t]*/ newline(s)
link: locallink | manlink
linktext: /[\w '.,-]+/
#urltextlink: '{' linktext '}' '(' url ')' { $return = "
$item{linktext}" }
urllink: url { (my $url = $item[1]) =~ s!&!%26!g; $return = "
$item[1]" }
url: m!\bhttp:/\S*[\w/]!
image: 'image:' url { $return = "

" ; }
locallink: '{' linktext '}'
{
(my $href=my $link=$item[2])=~s/ /+/g;
$return = -s ::find_file($link)
? "
$link"
: "
¿$link
?"
}
manlink: m!(([\w:]+)\((\d)\w?\))! { $return = "
$1" }
strong: '*' (...!'*' linepart)(s) '*' { $return = [ '
', $item[2], '' ] ; }
emphasized: '//' (...!'//' linepart)(s) '//' { $return = [ '
', $item[2], '' ] ; }
plaintext: '[[' (...!']]' plaintextpart)(s) ']]' { $return = $item[2] ; }
striked: m!\B-\S+-\B! { (my $strike = $item[1]) =~ tr!-! !; $return = "
$strike" ; }
monospace: "''" (...!"''" linepart)(s) "''" { $return = ['
',$item[2],''] ; }
linepart: formattedlinepart | unformattedlinepart
formattedlinepart: strong | emphasized | striked | monospace | plaintext