TCL语言基础知识

一.简介
Tcl 表示工具命令语言(Tool Command Language),它是一种流行的脚本编制语言,最初由加州大学伯克利分校的 John Ousterhout 教授开发。John Ousterhout 打算将 Tcl 作为一种将其它程序组件粘合在一起的语言,既可以以同其它脚本语言相同的方式将 Tcl 用作交互式 shell/脚本解释器,也可以将其作为脚本解释器嵌入您自己的 C 应用程序。在这种方式下,它就变成了一种向您自己的程序中添加脚本编制控制的方法,并且它提供了一些接口,这些接口允许您用自己的以 C 语言实现的脚本命令扩展基本 Tcl 语言.
Tcl 还有各种扩展,诸如 Tk,UI 工具箱,以及 Expect,Expect 是一种扩展,用于自动化同其它基于 shell 的命令(例如 telnet 和 ftp)的交互。
Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。
Tcl包含了两个部分:一个语言和一个库。
  首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。
其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
脚本语言的优势:
快速开发:脚本语言极大地简化了“开发、部署、测试和调试”的周期过程。
容易部署:大多数脚本语言都能够随时部署,而不需要耗时的编译/打包过程。
同已有技术的集成:脚本语言被Java或者COM这样的组件技术所包围,因此能够有效地利用代码。
易学易用:很多脚本语言的技术要求通常要低一些,因此能够更容易地找到大量合适的技术人员。
动态代码:脚本语言的代码能够被实时生成和执行,这是一项高级特性,在某些应用程序里(例如JavaScript里的动态类型)是很有用也是必需的。

二.TCL的语法规则
1.解释器
  在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。
2.数据类型
  Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 这是它比较有特点的方面字符串有三种形式:命令(command), 表达式(expresion)和表(list)。
三.TCL基本语法
1.tcl命令
一条tcl命令的基本语法为:
command arg1 arg2 arg3
其中command可以是内建过程也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但 Tcl解释器找不到一同名的命令时会用 unknown命令来代替。;
空格符用来分隔命令名和他的变元,换行符或者分号用来表示一条命令的结束.
    例如:
set a 22 //相当于C中的 a=22 a是一个变量这条命令分为三个域:1: set 2: a 3: 22
set使用于设置变量的值的命令,a、20 作为参数来传给它,a使它要操作的变量名,22是要付给的a值。
2.注释
和shell很象,第一个字母是"#“的Tcl字符串是注释。
3.变量
set命令用于将值赋给变量.它接受2个变元:第一个是变量名,第2个是值.变量名可任意长,并且可区分大小写;
在使用变量前无须对tcl变量进行声明;
可以通过美元符号语法来获取变量的值.
4.数字表达式
tcl解释器本身不对数学表达式进行计算,tcl只是完成分组,替换和命令的调用工作,而expr命令用来对数字表达式进行分析和计算.
5.替换和分组
5.1 在变量里面提到过的使用 符合来完成替换 5.2 命令替换当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为 T c l 命令。例如 : s e t a [ s e t b " h e l l o " ]   实现执行 s e t b " h e l l o " 并用其结果来替换源命令中的方括号部分,产生一条新命令   s e t a " h e l l o " / / " h e l l o " 为 s e t b " h e l l o " 的返回值最终的结果是 b = " h e l l o " a = " h e l l o " 方括号没有分组作用 5.3 反斜杠替换用来引用对解释器来说具有特殊意义的字符 , 比如 : 你可以通过反斜杠引用形式指定一个纯粹的美元符合 , 花括号或者方括号 . 如 : s e t d o l l a r / 符合来完成替换 5.2命令替换 当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为Tcl命令。 例如: set a [set b "hello"]   实现执行 set b "hello" 并用其结果来替换源命令 中的方括号部分,产生一条新命令   set a "hello" //"hello" 为 set b "hello" 的返回值 最终的结果是b="hello" a="hello" 方括号没有分组作用 5.3反斜杠替换 用来引用对解释器来说具有特殊意义的字符,比如:你可以通过反斜杠引用形式指定一个纯粹的美元符合,花括号或者方括号. 如:set dollar /

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值