最近、私はパーサーと文法、そしてそれらがどのように機能するかを研究しています。http://www.ietf.org/rfc/rfc4627.txt
EBNFを使用するJSONの形式文法を読んでいました。私はBNFとEBNFの理解にかなり自信を持っていましたが、どうやらまだ完全には理解していません。RFCは、次のような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