T C L 语法 教程 一 TCL 语法 1 脚本、命令和单词符号 一个 TCL 脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL 的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或 TAB 键隔开。 TCL 解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(su bstitu tion); 在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的 C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 2 置换(su bstitu tion) 注:在下面的所有章节的例子中,'%'为 TCL 的命令提示符,输入命令回车后,TCL 会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL 解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: %set x 10 //定义变量 x,并把 x 的值赋为 10 10 %set y x+100 //y 的值是 x+100,而不是我们期望的 110 x+100 上例的第二个命令中,x 被看作字符串 x+100 的一部分,如果我们想使用 x 的值'10' ,就必须告诉 TCL 解释器:我们在这里期望的是变量 x 的值,而非字符'x'。怎么告诉 TCL 解释器呢,这就要用到 TCL 语言中提供的置换功能。 TCL 提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。 1) 变量置换(v ariable su btitu tion) 变量置换由一个$符号标记,变量置换会导致变量的值插入一个单词中。例如: %set y $x+100 //y 的值是 10+100,这里 x 被置换成它的值 10 10+100 这时,y 的值还不是我们想要的值 110,而是 10+100,因为 TCL 解释器把 10+100 看成是一个字符串而不是表达式,y 要想得到值 110,还必须用命令置换,使得 TCL 会把 10+100 看成一个表达式并求值。 2) 命令置换(command substitution) 命令置换是由[]括起来的 TCL 命令及其参数,命令置换会导致某一个命令的所有或部分单词被另一个命令的结果所代替。例如: %set y [expr $x+...