nitcc: introduce nitcc
[nit.git] / contrib / nitcc / examples / json.sablecc
1 Grammar json;
2
3 Lexer
4
5 number = int frac? exp;
6 int = '-'? d+;
7 d = '0'..'9';
8 frac = '.' d+;
9 exp = e d+;
10 e = ('e'|'E') ('+'|'-')?;
11
12 string = '"' (ch-'\\'-'"' | '\\'ch)+ '"';
13 ch = ' '..'~';
14
15 blank = (' '|'\n'|'\t')+;
16
17 Parser
18 Ignored blank;
19
20 value =
21         {object:} '{' members? '}' |
22         {array:} '[' elements? ']' |
23         number |
24         string |
25         'true' |
26         'false' |
27         'null' ;
28
29 members = members ',' pair | pair ;
30 pair = string ':' value ;
31 elements = elements ',' value | value ;