Как найти точную и ясную информацию о требованиях к пробелам для данного языка, например, bash? - PullRequest
2 голосов
/ 27 октября 2011

У Langs разные требования к пробелам, например, Python очень строго определяет, как все должно быть разнесено.Если бы вы могли предоставить общую процедуру для определения этих требований из руководства или иным образом, это было бы полезно.Конкретный пример - bash - был бы очень полезен.Это ссылка на bash man: https://www.gnu.org/software/bash/manual. Вы можете цитировать оттуда, чтобы ответить, но, пожалуйста, также укажите, как вы искали информацию.В этом суть - найти эффективную процедуру, чтобы узнать о требованиях к пустому пространству языка, не зная об этом заранее.

Ответы [ 2 ]

1 голос
/ 27 октября 2011

В большинстве языков пробел используется как разделитель слов. Поэтому в руководстве по bash я бы сначала поискал слово. Первое появление привело бы меня к разделу «Разделение слов», и там я встретил $IFS, и я бы копал дальше, чтобы узнать, о чем идет речь.

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

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

Вы редко найдете явные «требования к пробелам» в некоторых языках, но вы найдете много требований к синтаксису (которые могут включать множество ограничений на пробелы - как в Python - или множество ограничений в скобках - например, в Лисп).

1 голос
/ 27 октября 2011

Я не думаю, что есть особые требования к пространству для bash.Однако есть места, где пробел обязателен - например:

if [ "a$x" != "a" ]; then
      ...
fi 

Запись ["$ x" без пробела после '[' не будет работать, так как '[' обычно является ссылкой на test Утилита, поэтому, если после нее нет пробела, bash будет искать [исполняемый файл $ x для выполнения.Но это особый случай.Я не думаю, что у bash больше требований к пробелам.

Существует несколько языков программирования / сценариев, которые используют пробел / таб как неотъемлемую часть языка.Например, makefile использует tab для команд правил:

target: prerequisite1 prerequisite2
     command1  # the line starts with tab
     command2  # the line starts with tab

Другой язык, который использует пробелы для понимания кода, как вы упомянули, это python.

Другие языки не задают никакихТребования к пространству, но для удобства чтения необходимо использовать отступы.Поддержка всех современных IDE поможет вам автоматически сделать отступ для кода.Эта группа языков ИМХО довольно большая - C / C ++ / JAVA / bash /....

Например, код C:

  int foo()
     {
          int i = 0;  // compiler do not need the spaces (indentation) in the beginning of the line,
                      // It is required for programmer to easy understanding the code.
          ...
          return i;
     } 

Вы пишете код как:

  int foo(){int i=0;return i;}

Но есть и другие языки с разным синтаксисом - например, html / sed / ..., где пробелы имеют разное значение в зависимости от того, в какой части выражения они используются.

...