-qtext = "\"" text "\"" => "quoted"
-pre = "[verbatim]" { ~[]+ } /ws => "verbatim" // FIXME doesn't work
-
-styled = "__" text "__" => underline
- | "((" text "))" => footnote
- | ( "[[" text "]]" => tt
- > "[" word "]" => citation
- )
- | "!!" text "!!" => strikethrough
- | "^^" (word|block) => superscript
- | ",," (word|block) => subscript
- | "\\sc" block => smallcap
- | "**" text "**" => bold
- | "!" (word|block) => keyword
- > "*" text "*" => it
-
-block = { text }
-structured = { text } "->" (url|email) => link
- //> alphanum++ "->" (url|email) => link
-structuredx = glyph
+pre = Verbatim:: "[verbatim]" { ~[]+ } /ws // FIXME doesn't work
+
+styled = Underline:: "__" text "__"
+ | Footnote:: "((" text "))"
+ | TT:: "[[" text "]]"
+ | Citation:: "[" word "]"
+ | Strikethrough:: "!!" text "!!"
+ | Superscript:: "^^" (word|block)
+ | Subscript:: ",," (word|block)
+ | Smallcap:: "\\sc" block
+ | Bold:: "++" text "++"
+ | Keyword:: "!" (word|block)
+ | Italic:: "**" text "**"
+
+block = { text }
+
+link = LinkText:: text:({ text }) "->" href:(url|email)
+ > LinkChars:: text:alphanum++ !ws "->" href:(url|email)
+
+structured = command & "\\" !([a-zA-Z0-9]++) block?
+ > glyph