Skip to content

Commit 807af1b

Browse files
committed
Add maml.abnf
1 parent 423936f commit 807af1b

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

maml.abnf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
maml = document
2+
3+
document = space value space
4+
5+
value = object / array / string / number / "true" / "false" / "null"
6+
7+
object = '{' [ members ] space '}'
8+
9+
members = space key-value space separator members
10+
members =/ space key-value space [ separator ]
11+
12+
key-value = key ws ':' space value
13+
14+
key = string / identifier
15+
16+
identifier = 1*( ALPHA / DIGIT / '-' / '_' )
17+
18+
array = '[' [ items ] space ']'
19+
20+
items = space value space separator items
21+
items =/ space value space [ separator ]
22+
23+
separator = ',' / newline
24+
25+
string = '"' *char '"'
26+
27+
number = [ '-' ] integer [ fraction ] [ exp ]
28+
29+
onenine = %x31-39
30+
31+
exp = ( 'e' / 'E' ) [ '-' / '+' ] 1*DIGIT
32+
33+
fraction = '.' 1*DIGIT
34+
35+
integer = '0' / ( onenine *DIGIT )
36+
37+
char = %x20-21 / %x23-5B / %x5D-10FFFF
38+
char =/ '\' ( '"' / '\' / '/' / 'b' / 'f' / 'n' / 'r' / 't' / %x75 4HEXDIG )
39+
40+
space = *( ws / [ comment ] newline )
41+
42+
comment = '#' *non-eol
43+
44+
non-eol = %x09 / %x20-7E / non-ascii
45+
46+
non-ascii = %x80-D7FF / %xE000-10FFFF
47+
48+
newline = LF / CRLF
49+
50+
ws = *( SP / HTAB / LF / CR )

0 commit comments

Comments
 (0)