Документ «Shell Command Language» - нелогичное предложение в разделе «Распознавание токенов» - PullRequest
0 голосов
/ 09 апреля 2020

В разделе 2.3 («Распознавание токена») этого документа: https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/utilities/V3_chap02.html появляется следующее предложение:

«Если указано, что токен разграничен, и никакие символы не были включены в токен, обработка должна продолжаться, пока фактический токен не будет разделен "

Что это должно означать? Как токен может быть помечен как разделитель, прежде чем в него будет включен какой-либо символ?

1 Ответ

0 голосов
/ 20 апреля 2020

Это предложение кажется неоднозначным. В новой формулировке говорится: «Если токен пуст, обработка продолжается до тех пор, пока не будет дан непустой токен».

Токен «помечается как разделенный», когда его начало и конец известны. Таким образом, от последнего разделителя к вновь найденному разделителю.

Токен может быть пустым, если рядом находятся 2 разделителя.

Например, допустим, что разделитель - запятая.

fashl,gasdf,agasdf,aasdf,,ghask

Из шести токенов пятый токен пуст. Его начало и конец устанавливаются четвертой и пятой запятыми, поэтому он «разделен». Но никакие символы не были включены в него.


Однако предложение делает go неоднозначным. «Обработка должна продолжаться» не указывает, что происходит с пустым токеном. Вернее, он не определяет, какое логическое действие или путь следует предпринять. Так что это может означать:

  1. Если найден пустой токен, продолжайте чтение до следующего разделителя и считайте, что токен.

  2. Если найден пустой токен, проигнорируйте токен и продолжайте чтение.

Хотя конечный эффект этого может не иметь значения.

...