TCL评论:为什么解释意见?(Tcl comments: why interpret comment

2019-10-21 16:12发布

在Tclers wiki页面,在“Dodeklogue”它提到的关于评论:

编辑点评 :如果出现其中一个命令有望#,该行的其余部分是注释。 没有命令执行尝试,并在线路没有字符被解释,不同之处在于该终止换行符可以与\转义,表示评论继续对下一行。

然而,似乎注释解释BYOND终端\ :例如,让文件的内容test.tcl是如下:

proc test {} {
    # Open brace {
    puts "I am fine"
}

test

Ť

然后tclsh test.tcl提供了以下错误信息:

missing close-brace: possible unbalanced brace in comment
    while executing
"proc test {} {"
    (file "hello.tcl" line 1)
Even more interesting

更有趣的是,当开括号{替换关闭括号} ,该错误信息是完全不同的。

为什么Tcl解释弄懂什么是有一个评论的意义,你会输球,如果Tcl的解释器(或一般任何解释器)的设计采取评论为真正的注释:一旦你看到#完全忽略,直到新生产线(除了检查意见的最后一个字符,如果它是\ )?

Answer 1:

TCL,不像其他一些语言,处理在同一时间作为其语法的其他意见。 这意味着,因为它碰到一个{第一(视的一部分proc命令调用)它的重点是匹配了括号。 它只是一个领悟#当它正在评估程序(即调用由定义的命令注释proc指令)。

这些将作为评论:

proc commentDemonstration {} {
    puts "A"
    # if [exit] {
        puts "B"
    # } else [exit]
    puts "C"
}
# Call it and see, _no_ early exit
commentDemonstration

他们是真正的意见。 它只是你必须平衡(或反斜杠引号)括号中的程序定义(除非你足够疯狂来定义双引号或里面的东西一个过程身体; 不这样做,对你自己的理智的缘故)独立的什么评论你使用。 大多数时候,你没有注意到的平衡要求,但是这是它重要的一个案例。


能够把#里面的东西一样,是嵌入内的Tcl等语言的关键。 例如,Critcl允许C源代码将要被嵌入内Tcl和#是指在东西C.完全不同的



文章来源: Tcl comments: why interpret comments?