интервал heredoc? - PullRequest
       8

интервал heredoc?

2 голосов
/ 12 марта 2012

Это небольшой вопрос, который я знаю. Мы пишем подсветку Bash на Ruby и нам нужно реализовать подсветку heredoc . Два формата, которые я видел, таковы. Обратите внимание на пробел перед EOF

cat <<EOF
Hello
World
EOF

cat << EOF
Hello
World
EOF

Вопрос в том, является ли неправильной / неофициальной / плохой практикой использование пробела перед первым EOF?

1 Ответ

5 голосов
/ 12 марта 2012

Спецификация POSIX Shell Command Language явно указывает, что номер дескриптора файла, если таковой имеется, "непосредственно предшествует оператору перенаправления"; но это не требует аналогичного требования, чтобы оператор перенаправления непосредственно предшествовал слову. Правила распознавания токенов подразумевают, что любые пробелы будут отбрасываться между оператором перенаправления и словом, поэтому я думаю, что любая правильная реализация должна принимать такие пробелы. (Следует признать, что это было бы более обнадеживающим, если бы не одно и то же правило распознавания токенов, подразумевающее одно и то же в отношении пробелов между номером дескриптора файла и оператором перенаправления.)

Хотя примеры справочника по Bash для heredocs не содержат пробела перед словом, в нем приводятся другие примеры с перенаправлениями, которые do включают пробел перед словом и ничто в спецификации POSIX или справочном руководстве Bash не дает оснований думать, что слово heredocs отличается в этом отношении от слова в любом другом виде перенаправления, поэтому я не думаю, что это следует считать плохой практикой. Я думаю, что ваша подсветка синтаксиса должна поддерживать и то, и другое, если только одна из целей проекта не состоит в том, чтобы навязать какой-то стандартный стиль для таких вещей.

...