Вопрос о нотации EBNF и JSON

Недавно я изучал синтаксические анализаторы и грамматику и то, как они работают. Я читал формальную грамматику для JSON по адресу http://www.ietf.org/rfc/rfc4627.txt , в котором используется EBNF. Я был довольно уверен в своем понимании BNF и EBNF, но, видимо, до сих пор не совсем понимаю это. RFC определяет объект JSON следующим образом:

  object = begin-object [ member *( value-separator member ) ]
  end-object

Я понимаю, что намерение здесь состоит в том, чтобы выразить, что любой объект JSON может (необязательно) иметь член, а затем следовать 0 или более пар (разделитель значений, член). Я не понимаю, почему звездочка появляется перед (член-разделитель значений) . Разве звездочка не должна имитировать регулярное выражение, чтобы она появлялась после , элемент, который нужно повторить 0 или более раз? Разве грамматика объектов JSON не должна быть записана так:

  object = begin-object [ member ( value-separator member )* ]
  end-object
5
задан Channel72 7 November 2010 в 15:45
поделиться