什么是命令和语句之间的区别

Geo*_*pty 5 command language-design tcl

通常在阅读Tcl(例如http://antirez.com/articoli/tclmisunderstood.html)时,您会读到"一切都是命令".有时您也会听到其他语言,如Tcl,"命令语言".

对于我的其他语言背景,我只是将这些"命令"视为语句.命令和语句之间究竟有什么区别?

RHS*_*ger 7

传统上,在Tcl中,短语"一切都是命令"意味着没有"保留字"命令,或者由系统定义的无法更改的命令.每个可执行的Tcl代码片段都具有以下格式:

command ?arg1? ... ?argN?
Run Code Online (Sandbox Code Playgroud)

没有一个命令是语法的一部分,不能被覆盖(如"if"和大多数语言中的其他控制结构).完全有可能重新定义"if"命令以执行稍微不同的操作.

例如,您可以将"while"重新定义为:

proc while {expression body} {
    for {} {[uplevel 1 expr $expression]} {} {
        uplevel 1 $body
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码未经测试......但它显示了一般的想法.