Tcl脚本由命令组成。每条命令一行,由空格分隔的命令名和参数组成。
通过使用分组使单个参数可以包含空白字符(包括换行)。
基本上掌握了上面三条原则,就掌握了Tcl/Tk语法上的本质。
从上面的原则也可以看出,Tcl/Tk自身的语法相对于其他语言来说是比较简单的。
Tcl中所有的语句都是命令,很多时候这非常适合描述人们对工具的操作。比如:
# 描述GUI的操作 open_dialog dlg_open_file set_dialog_field "File Name" "The file name to open" ok_dialog dlg_open_file # 或者直接简化为一条命令 open_file $file_name
相较於其他语言, Tcl 的基本语法规则非常简单, parser 只认得几个特殊字符.
# 用分号将数个命令放在同一行 puts hello ; puts world # 同一行的左边写命令, 右边写注释 set msg "hello, world!" ; # this is a comment
由于仅仅要求命令和参数之间以及参数之间用空白字符分割。这也意味着Tcl当中的命令名或者变量名并没有什么太多限制。比如完全可以模拟其他语言中的双斜线注释符如下。
proc // {args} { # This is a comment. Do NOTHING. } // Some comment here
Tcl 中的注释是比较有趣的。两种基本的注释方式
但考察下面的例子
if { 3 < 10 } { # while { 3 < 5 } { puts "Inside ..." }
带有 # 号的行,我们试图把它当作注释行,但实际执行时却会发现上面的代码是错误的。原因在于 大括号没有成对匹配。
出现这样情况的原因在于,带有# 号的行首先是 if 命令参数内容的一部分,它首先被当作文本来解释。