blob: 923ac8379d26e66703e5345cbb86904ad4e427b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
; 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:
|