Что такое линейные пробелы? (LWS/LWSP)

Я видел упоминание этого термина вместе с CRLF, CR, LF, CTL (управляющие символы) и SP (пробел).

Если это не регулярное встроенное whitespace(), то какой это символ (ы)?

Ответы

Ответ 1

От STD68 Добавленный BNF для синтаксиса Технические характеристики: ABNF

LWSP    =  *(WSP / CRLF WSP)  ; Use of this linear-white-space rule permits
                              ; lines containing only white space*
WSP     =  SP / HTAB          ; white space
CRLF    =  CR LF              ; Internet standard newline
SP      =  %x20               ; space
HTAB    =  %x09               ; horizontal tab
CR      =  %x0D               ; carriage return
LF      =  %x0A               ; linefeed

Комментарий к LWSP изменился в STD68 (aka RFC5234) из RFC2234 и RFC4234 и теперь дает советы против использования этого определения в новых документах.

Простой английский. Линейное белое пространство: любое количество пробелов или горизонтальных вкладок, а также символ новой строки (CRLF), если за ним следует хотя бы одна пробельная или горизонтальная вкладка.

Пример строк, которые являются линейным пробелом:

  • [SP]
  • [HTAB]
  • [SP] [SP]
  • [HTAB] [HTAB]
  • [SP] [HTAB] [SP]
  • [SP] [CR] [LF] [SP]
  • [CR] [LF] [SP] [CR] [LF] [SP] [CR] [LF] [HTAB]

Пример строк, которые не являются линейным пробелом:

  • [SP] [VTAB] [SP] Вкладка Vertical не входит в спецификацию
  • [SP] [CR] [LF] [CR] [LF] [CR] [LF] CRLF, за которым следует CRLF, не входит в спецификацию
  • [SP] [CR] [LF] [CR] [LF] [SP] Это два линейных белых пробела. Первый - это только первое пространство, поскольку за первым CRLF не следует пробел или htab. Второй - это последний CRLF и SP.

Благодаря Юкке К. Корпеле, чтобы напомнить мне проверить устаревшие RFC и unwind для пояснения, что за CRLF должно следовать пробел или htab, чтобы быть частью LWSP.