; Custom notation with PEG semantics Stream : Unit ( Blank Unit )* Unit : Blank* [Datum] Blank : '\t'...'\r' | SP | Comment Datum : OneDatum ( [JoinChar] OneDatum )* JoinChar : '.' | ':' Comment : ';' ( SkipUnit | SkipLine ) SkipUnit : '~' Unit SkipLine : ( ~LF )* [LF] OneDatum : BareString | CladDatum BareString : SpecBareChar ( BareChar | JoinChar )* | BareChar+ SpecBareChar : '+' | '-' | JoinChar | DIGIT BareChar : ALPHA | DIGIT | '!' | '$' | '%' | '*' | '+' | '-' | '/' | '<' | '=' | '>' | '?' | '^' | '_' | '~' CladDatum : PipeStr | QuoteStr | HashExpr | QuoteExpr | List PipeStr : '|' ( PipeStrChar | '\' StringEsc )* '|' QuoteStr : '"' ( QuotStrChar | '\' StringEsc )* '"' HashExpr : '#' HashExprs QuoteExpr : "'" Datum | '`' Datum | ',' Datum List : ParenList | SquareList | BraceList PipeStrChar : ~( '|' | '\' ) QuotStrChar : ~( '"' | '\' ) StringEsc : '\' | '|' | '"' | ( HTAB | SP )* LF ( HTAB | SP )* | '0' | 'a' | 'b' | 't' | 'n' | 'v' | 'f' | 'r' | 'e' | 'x' HexByte* ';' | 'u' UnicodeSV ';' HexByte : HEXDIG HEXDIG UnicodeSV : HEXDIG+ HashExprs : '!' ( SP | HTAB )* HBangLine [ LF ] | '%' Label ( '%' | '=' Datum ) | '\' BareString | CladDatum | Rune [ '\' BareString | CladDatum ] HBangLine : HBChars+ ( SP | HTAB )* [ HBChars+ ] HBChars : ~( SP | HTAB | LF ) Label : HEXDIG+ Rune : ALPHA ( ALPHA | DIGIT )* ParenList : '(' ListBody ')' SquareList : '[' ListBody ']' BraceList : '{' ListBody '}' ListBody : Unit* [ Blank* '&' Unit ] Blank* ;; Local Variables: ;; eval: (flyspell-mode -1) ;; End: