Geo*_*pty 5 command language-design tcl
通常在阅读Tcl(例如http://antirez.com/articoli/tclmisunderstood.html)时,您会读到"一切都是命令".有时您也会听到其他语言,如Tcl,"命令语言".
对于我的其他语言背景,我只是将这些"命令"视为语句.命令和语句之间究竟有什么区别?
传统上,在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)
上面的代码未经测试......但它显示了一般的想法.