没有合适的资源?快使用搜索试试~ 我知道了~
首页Tcl编程简介 TCL脚本
Tcl编程简介 TCL脚本
4星 · 超过85%的资源 需积分: 10 52 下载量 49 浏览量
更新于2023-03-16
评论
收藏 206KB DOC 举报
TCL简介 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”, 实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
资源详情
资源评论
资源推荐
Tcl 编程简介
1.TCL 简介
Tcl 是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是 tool
command language 的缩写,发音为 "tickle”, 实际上包含了两个部分:一个语言和一个库。
首先,Tcl 是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和
shell。它有一个简单的语法 和很强可扩充性,Tcl 可以创建新的过程以增强其内建命令的能力。
其次,Tcl 是一个库包,可以被嵌入应用程序,Tcl 的库包含了一个分析器、用于执行内建命令的例
程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生 Tcl 命令并执行,命令可以由用户产
生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但 Tcl 库收到命令后将它分解并执行内建
的命令,经常会产生递归的调用。
下面简单介绍以下 txl 的语法规则:
2.解释器
在 Tcl 的数据结构中的核心是 Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述
状态的东西。每一个 Tcl 命令是 在特定的 Tcl_Interp 中运行的,基于 Tcl 的应用程序可以同时拥有
几个 Tcl_Interp。Tcl_Interp 是一个轻量级的结构,可以快速的新建和删除。
3.数据类型
Tcl 只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所
有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 这是它比较有特点的方面字符串有三种
形式:命令(command), 表达式(expresion)和表(list)。
4.Basic Command Syntax 基本语法
Tcl 有类似于 shell 和 lisp 的语法,当然也有许多的不同。一 条 Tcl 的命令串包含了一条或多条
命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个
域是一个命令的名字,其它的是作为参数来传给它。
例如:
set a 22 //相当于 C 中的 a=22 a 是一个变量这条命令分为三个域:1: set 2: a 3: 22
set 使用于设置变量的值的命令,a、20 作为参数来传给它,a 使它要操作的变量名,22 是要付给的 a
值。
Tcl 的命令名可以是内置的命令也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用
函数 Tcl_CreateCommand 来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数
的。命令的名字必须被打全,但 Tcl 解释器找不到一同名的命令时会用 unknown 命令来代替。
在很多场合下,unknown 会在库目录中搜寻,找到一个的话,会自动生成一个 Tcl 命令并调用它。
unknown 经常完成缩略的命令名的执行。但最好不要使用。
4.注释
和 shell 很象,第一个字母是"#"的 Tcl 字符串是注释。
5.其他细节规则
Grouping arguments with double-quotes 用双引号来集群参数,目的在于使用有空白的参
数。
例如:
set a "this string contains whitespace"
如够一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。
Variable substitution with $ 用美元符进行变量替换说白了就是引用该变量。
如:
set a hello
set b $a // b = "hello" 实际上传给 set 命令的参数
//是 b,"hello"
set c a // b = "a"
Command substitution with brackets 命令子替换(用方括号)
例如:
set a [set b "hello"]
实现执行 set b "hello" 并用其结果来替换源命令 中的方括号部分,产生一条新命令
set a "hello" //"hello" 为 set b "hello" 的返回值
最终的结果是 b="hello" a="hello"
当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其
结果来替换原命令中的方括号部分。方括号中的部分都被视为 Tcl 命令。
如下一个复杂一点的例子:
set a xyz[set b "abc"].[set c "def"]
//return xyzabcdef
Backslash substitution 转移符替换
转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与 C 语言中的一样。
Backspace (0x8).
f Form feed (0xc).
Newline (0xa).
Carriage-return (0xd).
Tab (0x9).
v Vertical tab (0xb).
{ Left brace (`{").
} Right brace (`}").
[ Open bracket (`[").
] Close bracket (`]").
$ Dollar sign (`$").
sp Space (` "): does not terminate argument.
; Semicolon: does not terminate command.
" Double-quote.
Grouping arguments with braces 用花扩括号来集群参数
用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号来集群参数其中的三种上述的
子替换不被执行。而且可以嵌套。
例如:
set a {xyz a {b c d}}//set 收到俩个参数 a "xyz a {b c d}"
eval {
set a 22
set b 33
}//eval 收到一个参数 "set a 22
set b 33"
6.命令综述
1.一个命令就是一个字符串(string)。
2.命令是用换行符或分号来分隔的。
3.一个命令由许多的域组成。第一个于是命令名,其它的域作为参数来传递。
4.域通常是有空白(Tab 横向制表健 Space 空格)来分开的。
5.双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。
6.花括号类似于双引号,只是不进行三总体换。
7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。
8.如果第一个非控字符是`#", 这一行的所有东西都是注释。
7.表达式
对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr、for 和 if,并调用
Tcl 表达式处理器(Tcl_ExprLong, Tcl_ExprBoolean 等)来处理它们。其中的运算符与 C 语言的很
相似。
!
逻辑非
* / % + -
<< >>
左移 右移 只能用于整数。
< > <= >= == !=
逻辑比较
& ^ |
位运算 和 异或 或
&&' '
逻辑"和" "或"
x ? y : z
If-then-else 与 C 的一样
Tcl 中的逻辑真为 1,逻辑假为 0。
一些例子:
5 / 4.0
5 / ( [string length "abcd"] + 0.0 )
计算字符串的长度 转化为浮点数来计算
"0x03" > "2"
"0y" < "0x12"
都返回 1
set a 1
expr $a+2
expr 1+2
都返回 3
8.列表
字符串的另一种解释为列表。一个列表是类似于结果的一个字 符串包含了用空白分开的很多域。例
如 "Al Sue Anne John" 是 一个有四个元素的例表,在列表中换行父被视为分隔符。例如:
b c {d e {f g h}} 是一个有三个元素的列表 b 、c 和 {d e {f g h}}。
Tcl 的命令 concat, foreach, lappend, lindex, linsert,list, llength,
lrange,lreplace, lsearch, 和 lsort 可以使你对列表操作。
9.正则表达式
Tcl 提供了两个用于正则表达式的命令 regexp 和 regsub。 这里的正则表导师实际上是扩展的
正则表达式,与 egrep 相一致。
支持 ^ $ . + ? > < () | []
10.命令结果
每一条命令有俩个结果:一个退出值和一个字符串。退出值标志着命令是否正确执行,字符串给出附
加信息。有效的返回制定议在`tcl.h", 如下:
TCL_OK
命令正确执行,字符串给出了命令的返回值。
TCL_ERROR
剩余28页未读,继续阅读
chenph
- 粉丝: 12
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1