JSON文法:
json -> num|str|true|false|array|obj
obj -> {optmembers}
optmembers -> members|ε
members -> members,member|member
member -> key:value
value -> json|null
array -> [optelements]
optelements -> elements|ε
elements -> elements,element|element
element -> json|null
*斜体字为非终结符;粗体为终结符
消除左递归:
members -> memberA
A -> ,member|ε
elements -> elementB
B -> ,element|ε
最终文法:
json -> num|str|true|false|array|obj
obj -> {optmembers}
optmembers -> members|ε
members -> memberA
A -> ,member|ε
member -> key:value
value -> json|null
array -> [optelements]
optelements -> elements|ε
elements -> elementB
B -> ,element|ε
element -> json|null
终结符:
num str true false { } , key : null [ ] ε
非终结符:
json array obj optmembers members member A value optelements elements B element