在我所知的解释语言(Python,Perl,R,bash)中,多行注释似乎通常涉及一些滥用语言的另一个特征(例如多行字符串)。
解析器类型是否存在固有的内容,使得多行注释难以解决?它似乎与多行字符串不同。
答案 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
,这是另一种方法)非常自然。