ast === pseudo regex to help remember the syntax rules. \u = unicode character (note utf-x currently just using std c ascii support) \t = horizintal tab \n = newline {x} = see rule x, 'x' must be the name of a rule or it's just regex syntax node{ "\n\n" = close open tag "\u." = ol,li,{list} "[*-] " = ul,li,{list} "\t\u+" = pre/ "\u\n={3,}\n" = h1/ "\u\n-{3,}\n" = h2/ "\u(\u|\n|\t)+\n\n" = p/ } list{ "\n\n" = '/li','/ol' "\n\u." = '/li','li' "\n\u[^.]" = (hardbreaks) ? 'br/' : ' ' }