RFC 7578 и пробелы и атомы - PullRequest
       52

RFC 7578 и пробелы и атомы

1 голос
/ 15 марта 2019

Я застрял с кажущимися неявно разрешенными пробелами в RFC 7578 и RFC, на которые он ссылается, хотя кажется, что когда такие пробелы разрешены, это должно быть указано явно. У меня также есть другое трудное время с неоднозначностью, которую я считаю следствием той же истории про пустое пространство.

RFC 7578 при 4,2 о «Content-Disposition», дает этот пример:

Content-Disposition: form-data; name="user"

Это относится к RFC 2183. Этот RFC 2183 в 2 дает правила BNF без явного упоминания пробелов (ни WSP, ни LWS), хотя это очевидно из примера RFC 7578. выше, использует пробелы, хотя правило не упоминает об этом:

 disposition := "Content-Disposition" ":"
                disposition-type
                *(";" disposition-parm)

RFC 2183 относится к RFC 822, который теперь является RFC 2822. В этом RFC 2822 в 3.2.4 и 3.2.5 явно упоминается CFWS вокруг атомов (или точечных атомов). и цитируемые строки. В другом месте говорится, что грамматики, основанные на этом RFC, зависят от определяемой им токенизации.

Так что «form-data» и «name» могут быть атомами после RFC 2822, что объясняет, почему пробел может появляться перед обоими в примере («;» будет специальным символом, то есть токеном) , Но RFC 2234 при 3.1 , на который ссылается RFC 2822, говорит:

Любая грамматика, которая желает разрешить линейный пробел вокруг разделители или строковые сегменты должны указывать это явно. [...]

Тогда, примерно в том же примере, что и выше, если он сделан из атомов, то "name" "=" является неоднозначным, потому что "name =" будет столько же, сколько атом, и ни одно правило не говорит, разрешено ли пространство между «именем» и «=», что делает его двусмысленным для меня.

Это всего лишь пример, я просто чувствую, что так же неясно в других местах этих стандартов.

Можно ли это понимать как: он состоит из атомов (и в кавычках), и пробелы допускаются вокруг атомов (и в кавычках), хотя некоторые RFC явно ничего не говорят ни о пробелах, ни о атомы в их правилах, а они должны?

Обновление

Между прочим, эти RFC, похоже, вовсе не относятся к атомам / точечным атомам, а скорее к своего рода токену, составленному из любых печатаемых символов, кроме tspecials , одинаково определенных в нескольких местах, набор символов очень похож на спец из RFC 822, хотя и отличается. Это определение токена отличается от определения в RFC 822/2822. Хотя ссылаясь на RFC 822, эти RFC, похоже, переопределяют свои собственные обозначения. Пробелы все еще неясны.

...