+x::="x"
// indentation styling...
// literal blocks [[need to ignore bracing]] double-colon style?
// definition -- by prior line indentation, like headings in the original structured text
//////////////////////////////////////////////////////////////////////////////
-s ::= {Doc} => top
+s ::= { Doc } => "top"
Doc ::= Header Body /ws => doc
Header ::= "header" { kv */ ws } /ws => header
kv ::= word "=" text /ws => kv1
-num !::= [0-9]++ => "stringify"
Paragraph ::= { "\"\"" ws text } => "blockquote"
> { "*" " " ws text } => "ul"
> { "#" " " ws text } => "ol"
- > { num " " ws text } => "ol"
+ > { num " " ws text => "ol" }
> { "---" "-"* } => "hr"
> { text } => "p"
port ::= [0-9]+
domain ::= part +/ "."
-part ::= [a-zA-Z0-9\-]++ => "stringify" // interesting use of boolean grammars
+part ::= [A-Za-z0-9\-]++ => "stringify"
// &~ ([\-0-9] ~[]* | ~[]* [\-0-9])
email ::= username "@" host => email
-host ::= [0-9]+ "." [0-9]+ "." [0-9]+ "." [0-9]+ => "ip"
- | domain
+host ::= domain
+ | [0-9]+ "." [0-9]+ "." [0-9]+ "." [0-9]+ => "ip"
// Chars ///////////////////////////////////////////////////////////////
alpha ::= [a-zA-Z]
-num ::= [0-9]
+num !::= [0-9]++ => "stringify"
+//num ::= [0-9]
alphanum ::= [a-zA-Z0-9]
sym ::= ~[a-zA-Z0-9\ \r\n]