最近我一直在研究解析器和語法以及它們是如何工作的。我正在閱讀使用EBNF的http://www.ietf.org/rfc/rfc4627.txt
的JSON形式語法。我對自己對BNF和EBNF的理解非常有信心,但顯然我還沒有完全理解它。該RFC定義了一個JSON對象是這樣的:關於EBNF表示法和JSON的問題
object = begin-object [ member *(value-separator member) ]
end-object
我明白的是,這裏的意圖是要表達的任何JSON對象可以(可選地)具有的部件,然後可以後跟0或更多(值的隔膜,成員)對。我不明白的是爲什麼星號出現之前的(value-separator member)
。是不是星號應該模仿正則表達式,所以它出現後項目要重複0次或更多次?不應將JSON對象語法寫成如下形式:
object = begin-object [ member (value-separator member)* ]
end-object