exp = e d+;
e = ('e'|'E') ('+'|'-')?;
-string = '"' (Any-'\\'-'"' | '\\'Any)+ '"';
+hexdig = '0'..'9' | 'a'..'z' | 'A'..'Z';
+string = '"' (Any - '\\' - '"' | '\\' (
+ '\\' |
+ '"' |
+ '/' |
+ 'b' |
+ 'f' |
+ 'n' |
+ 'r' |
+ 't' |
+ 'u' hexdig hexdig hexdig hexdig
+ ))* '"';
blank = (' '|'\n'|'\t')+;
value =
{object:} '{' members? '}' |
{array:} '[' elements? ']' |
- number |
- string |
- 'true' |
- 'false' |
- 'null' ;
+ {number:} number |
+ {string:} string |
+ {true:} 'true' |
+ {false:} 'false' |
+ {null:} 'null' ;
-members = members ',' pair | pair ;
+members = {tail:} members ',' pair | {head:} pair ;
pair = string ':' value ;
-elements = elements ',' value | value ;
+elements = {tail:} elements ',' value | {head:} value ;