为什么解释/脚本语言很少有多行注释?

时间:2011-05-20 18:34:22

标签: parsing programming-languages comments interpreted-language

在我所知的解释语言(Python,Perl,R,bash)中,多行注释似乎通常涉及一些滥用语言的另一个特征(例如多行字符串)。

解析器类型是否存在固有的内容,使得多行注释难以解决?它似乎与多行字符串不同。

6 个答案:

答案 0 :(得分:1)

事实上,我确信在实现任何形式的多行注释时都没有意义(基于大多数解析器用来读取/执行脚本的方法)。在我个人看来,由于分发和解释,脚本最需要多行注释(大多数高级语言通常是编译的,并且只有一部分是开源的)。我知道Lua是一种脚本语言,它确实提供了多行注释:

--[==[
COMMENT
]==]--

我确信这只是一种侥幸,许多语言都不支持这一点。通常可以使用单行注释来创建多行注释。

//*****************************************\\
//**                                     **\\
//**            JOHN SMITH               **\\
//**        COPYRIGHT 2008-2011          **\\
//**                                     **\\
//*****************************************\\

很多人还会利用单行注释创建一个很酷的图像(ASCII ART),使用注释字符开始图像(上面显示的内容,其中//是注释字符(s )/短语)。

答案 1 :(得分:1)

不,脚本语言没有理由不支持多行注释。 JavaScript,Groovy,Lua,PHP,REXX,Smalltalk和Dart都支持多行注释。

答案 2 :(得分:0)

在Python中,我们只使用多行字符串作为注释。

为什么会有两种语法?

答案 3 :(得分:0)

并非所有解释型语言都缺少多行注释。例如,Ruby有它们。

我怀疑这主要是语言设计师的偏好。有些人认为多行评论不是必要的功能。 (如今,许多代码编辑都提供了使用单行注释来评论/取消注释大量代码的快捷方式。)

此外,多行注释会增加解析器的复杂性。例如,它必须处理嵌套注释的可能性。如果你不需要增加复杂性,为什么呢?

答案 4 :(得分:0)

我怀疑这只是一点语言偏见。 C风格的多行注释倾向于以c-esque语言显示,但大多数其他语言没有等效语言。

至于解析器本身。我没有理由认为解析器不会实现多行注释,除了lang设计者不想要的。大多数解析器生成器都可以轻松处理构造。

答案 5 :(得分:0)

你的问题有两个错误的假设。

第一个错误的假设是“解释/脚本语言很少有多行注释”。你正遭受确认偏见。有编译语言包含单行注释(例如Fortran,许多Lisp方言)和带有多行注释的解释语言(例如Perl,Python)。

第二个错误的假设是“涉及滥用其他功能”。语言设计得更好,没有必要为多行注释引入额外的功能,如果某些功能无论如何都可以实现。例如,在Python中,存在多行字符串,并且仅包含字符串的指令是无操作,因此多行字符串可以进行精细注释。在Perl中,获得多行注释的一种方法是通过Pod,一种文档格式;评论是一种文档,因此将=pod … =cut用于多行注释(多行字符串,通过here documents <<'EOF'; … EOF,这是另一种方法)非常自然。