原创 TCL学习小记(五)——流程控制

2011-8-11 12:38 2060 16 16 分类: FPGA/CPLD

         TCL中有用于控制流程脚本执行流程的命令,它与C语言及其它高级语言的流程控制相似,包括ifwhileforforeachswitcheval等。

         if:这个命令有两个参数,第一个参数是表达式,第二个参数是一个TCL脚本,如下式所示:

if {$x < 0} {

···

} elseif {$x == 0} {

···

} elseif {$x == 1} {

···

} else {

···

}

两个参数都用大括号引用,这样直到命令执行前都不会发生替换。这边需要注意的是左边大括号必须在它前一个单词的同一行,不然会发生错误,如下式所示,解析器会认为if {$x < 0}表示的就是一条命令,报告if命令因参数不足而导致错误。

if {$x < 0}

{

···

} else

{

···

}

 

switch:此命令是用一个值与很多模式比较,执行能匹配的那个模式对应的TCL脚本。命令形式如下:

switch $x {

      a {···}

      b {···}

      c {···}

      d {···}

}

 

whileforforeach:这三个命令都是循环命令,都是循环执行一段TCL脚本,不同之处在于它们决定退出循环的方式。

while命令有两个参数,分别是表达式和TCL脚本,在执行命令时首先处理表达式,如果表达式的结果非零则执行TCL脚本,命令形式如下:

while {$x > 0} {

   ···

}

for命令有四个参数,第一个参数是初始化脚本;第二个参数是决定循环终止的表达式;第三个参数是再初始化脚本;第四个参数是循环执行的脚本。命令形式如下:

for {set i 0} {$i < 7} {incr i 1} {

         ···

}

         foreach命令通过遍历一个列表中的所有元素来执行循环,其中有三个参数,第一个参数是变量名,第二个参数是列表,第三个参数是构成循环的TCL脚本。命令形式如下:

foreach {x} {a b c d f} {

   ···

}

         此命令是在TCL中特有的,这边详细说明一下,如图1所示,其中第一个参数中有两个变量名,因此每次需要读取列表中的两个元素,而在脚本中对这两个元素值进行输出。

1

 

         eval:此命令用于创建和运行TCL脚本的通用构造块,它的其中一个用途是能执行多个命令,可以先将一些命令放在变量中,然后用eval命令将变量的值作为脚本运行,如图2所示。

2

 

         source:此命令可以读取一个文件,然后将文件内容作为TCL脚本运行。如我在当前文件目录下有个文件:hoki.tcl,文件内容就是一条命令:puts “Hoki’blog——冰冻三尺非一日之寒!,然后用source命令读取这个文件,如图3所示,发现TCL也支持中文啊!

3

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /3 下一条