




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Tcl编程简介(一)简介 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 tickle”, 实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。下面简单介绍以下txl的语法规则:解释器在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是 在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。数据类型Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 这是它比较有特点的方面字符串有三种形式:命令(command), 表达式(expresion)和表(list)。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经常完成缩略的命令名的执行。但最好不要使用。注释和shell很象,第一个字母是#的Tcl字符串是注释。其他细节规则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 xyzset 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 22set b 33 命令综述1.一个命令就是一个字符串(string)。2.命令是用换行符或分号来分隔的。3.一个命令由许多的域组成。第一个于是命令名,其它的域作为参数来传递。4.域通常是有空白(Tab横向制表健 Space空格)来分开的。5.双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。6.花括号类似于双引号,只是不进行三总体换。7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。8.如果第一个非控字符是#, 这一行的所有东西都是注释。表达式对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr、for 和 if,并调用Tcl表达式处理器(Tcl_ExprLong, Tcl_ExprBoolean等)来处理它们。其中的运算符与C语言的很相似。! 逻辑非* / % + - 左移 右移 只能用于整数。 = = != 逻辑比较& | 位运算 和 异或 或& 逻辑和 或x ? y : z If-then-e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源行业2025绿色发展报告:技术创新与环保责任协同效应
- 协议书离婚财产如何分配
- 协议书离婚协议书
- 协议书类型五
- 装修简易协议书
- 2025北京大学未来技术学院招聘1名劳动合同制工作人员模拟试卷附答案详解(模拟题)
- 物品管理协议书
- 协议书的叫法
- 婚姻法 离婚协议书
- 协议书过户绿本
- 体检中心投诉处理流程
- 银行解冻申请书
- 基于学科核心素养下的教学设计
- 人教版英语七年级(全册)单词表
- 全心衰竭的治疗与护理
- 扩张型心肌病治疗及护理
- 森林抚育作业设计
- 2002版干部履历表(贵州省)
- DL∕T 1396-2014 水电建设项目文件收集与档案整 理规范
- 行路难课件8省公开课一等奖新名师比赛一等奖课件
- 防欺凌隐患排查和矛盾化解记录表
评论
0/150
提交评论