如何找到关于给定语言的空白要求的精确和清晰的信息,例如bash?

时间:2011-10-26 22:01:18

标签: bash whitespace

Langs有不同的空格要求,例如,python非常严格地指定了所有内容的间距。如果您可以提供从手册或其他方面识别这些要求的一般程序,那将会有所帮助。一个具体的例子 - bash - 会非常有帮助。这是bash man的链接:https://www.gnu.org/software/bash/manual。你可以从那里引用回答,但也请说明你是如何查找信息的。这就是重点 - 找到一个有效的程序来了解lang的空白要求,而不事先了解它。

2 个答案:

答案 0 :(得分:1)

我认为bash没有特殊的空间要求。然而,有空间有义务的地方 - 例如:

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

在'['不起作用之后写一个没有空格的[$ a $“,因为'['通常是指向 test 实用程序的链接,所以如果bash之后没有空格将搜索[要执行的$ x可执行文件。但这是特例。我不认为bash对空格有任何要求。

很少有编程/脚本语言使用空格/制表符作为语言的组成部分。 例如,makefile use 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 / ...其中空格具有不同的含义,具体取决于它们使用的表达式的哪个部分。

答案 1 :(得分:1)

在大多数语言中,空格用作单词分隔符。所以在bash手册中,我首先会搜索“word”。第一次出现会引导我进入“单词分裂”部分,在那里我会遇到$IFS,我会进一步深入了解这是什么。

Python示例并不是您可以选择的最佳示例,因为在Python中使用空格来定义代码块,因此除了作为单词分隔符之外,空格在语言语法中起着重要作用。

如果你想找到像这样的主题的根源(作为旁注,我真的不明白白色空间为什么比括号或任何其他符号更有趣),只需寻找语法定义您感兴趣的语言,看看您正在跟踪的符号实际上扮演的角色。

你很少会找到关于某种语言的明确的“空白要求”,但是你会发现很多语法要求(可能涉及很多空白约束 - 比如Python中 - 或许多括号约束 - 如在Lisp)。