这个语法可以解析JSON对象吗?
d= { kvp }
kvp= key : value | key : value , kvp
value= num | str | true | false | array | d | null
array= [] | [ element ]
element= value | value , element
key= num | str
它看起来不错,但正如Chris在评论中所说,所有JSON配置文件通常都包含null, trur, false ...
,这里缺少。
看看这个语法(摘自json.org):
json:价值;
obj:'{'pair(','pair)*'}'| '{''}';
对:STRING':'价值;
数组:'['value(','value)*']'| '['']';
值:STRING | NUMBER | obj |数组| '真'| '假'| '空值' ;
STRING:'''(ESC | SAFECODEPOINT)*'“';
片段ESC:'\'([“\ / bfnrt] | UNICODE);
片段UNICODE:'你'HEX HEX HEX HEX;
片段HEX:[0-9a-fA-F];
片段SAFECODEPOINT:〜[“\\ u0000- \ u001F];
NUMBER:' - '? INT('。'[0-9] +)? EXP? ;
片段INT:'0'| [1-9] [0-9] *;
//没有前导零
片段EXP:[Ee] [+ - ]? INT;
// - 因为 - 表示[...]内的“范围”
WS:[\ t \ n \ r] + - >跳过;