已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCL简介,引言TCL语法TCL内建命令TCL命令的扩展,引言,TCL指工具命令语言(ToolCommandLanguage),主要包括两个方面的内容:语法和函数库。TCL语法简单,可扩充性强。%seta3%3TCL的函数库包含分析器、执行内建命令的例程及定义新的过程的库函数。这组库函数提供了丰富的扩充函数,允许用户编写新的命令解释程序,加入TCL的解释器中;,引言,TCL提供了C语言的调用接口,可以很容易地嵌入到C程序中;由于TCL提供了与C的接口函数,所以可以在C编写的应用中调用TCL的库函数,执行TCL的命令或脚本。具体的工作有:创建TCL的解释器;执行TCL的命令或脚本;对返回代码进行处理;撤消TCL的解释器。,引言,基本的C程序结构如下:#include#includemain()Tcl_Interp*ip;/定义解释器intcode;ip=Tcl_CreateInterp();/创建该解释器code=Tcl_EvalFile(ip,test.tcl);/执行文件“test.tcl”if(code!=TCL_OK)exit(1);/是否成功elseexit(0);,引言,TCL运行环境:Windows/Unix/LinuxTCL版本:tcl8.5(最高版本)运行文件:tclsh85.exewish85.exe:包括tcl和tk两个部分文本编辑器:NotePadTextPadUltraEdit,TCL语法,TCL语法是TCL解释器对TCL命令进行分析执行的规则的集合。在分析阶段TCL解释器将TCL命令分成一个个的单词,第一个单词是命令名,其余单词是命令的参数,单词之间用空格或Tab键隔开,同时进行必要的置换。在执行阶段TCL解释器根据第一个单词查找该命令是否有定义,有的话就激活该命令所对应的C/C+过程,并将所有的参数传递给该命令过程,通过命令过程进行处理。%seta3%setb$a%3,TCL语法,置换TCL解释器在分析命令时把所有的命令参数当做字符串对待,置换的作用是获取命令参数所对应的值,而非命令参数所代表的字符串。置换包括变量置换、命令置换和反斜杠置换。变量置换传递的是变量的值,命令置换传递的是命令参数的计算结果,反斜杠置换主要用于在单词符号中插入诸如换行符、空格、$等被TCL解释器当作特殊符号对待的字符。置换可以嵌套。,TCL语法,变量置换由一个符号标记E.G:%setx10%10%sety$x+100%10+100命令置换是由括起来的TCL命令及其参数E.G:%setyexprx+100%110反斜杠置换E.G:%setmsgmultiplespace%multiplespace。,TCL语法,注释TCL中的注释符是,和直到所在行结尾的所有字符都被TCL看作注释,TCL解释器对注释将不作任何处理。E.G:%Thisisacomment%seta100#Notacomment%wrong#args:shouldbesetvarName?newValue?E.G:%setb101;#thisisacomment%101,TCL内建命令,TCL解释器自身提供的一些命令:变量列表控制结构过程与作用域字符串操作文件访问错误和异常其他TCL命令,TCL内建命令,TCL支持两种类型的变量:简单变量和数组。简单变量包含两个部分:名字和值,名字把从符号往后直到第一个不是字母、数字或下划线的字符之间的单词符号作为要被置换的变量的名字;数组只能和数组元素一起声明。相关命令:setunsetappendincrputsexpr%seta6%appenda6%incra1%expr$a+3%puts$a%unseta,TCL内建命令,列表命令:listconcatlindexllengthlinsertlreplacelrangelappendlsearchlsortsplitjoin%linsert1234178910%178910234,TCL内建命令,控制结构命令:if、while、for、foreach、switch、break、continue%setb%setiexprllength$a-1%while$i=0%lappendblindex$a$i%incri-1%,TCL内建命令,TCL过程与作用域命令:TCL中过程是由proc命令产生E.G:%procaddxyexpr$x+$yproc命令的第一个参数是你要定义的过程的名字,第二个参数是过程的参数列表,参数之间用空格隔开,第三个参数是一个TCL脚本,代表过程体。proc生成一个新的内建命令,可以像固有命令一样调用:%add12%3,TCL内建命令,TCL还提供三种特殊的参数形式:首先,你可以定义一个没有参数的过程。%procaddexpr2+3其次,可以定义具有缺省参数值的过程。%procaddval1val22val33%expr$val1+$val2+$val3%另外,TCL的过程定义还支持可变个数的参数,如果过程的最后一个参数是args,那么就表示这个过程支持可变个数的参数调用。,TCL内建命令,过程内部引用一个全局变量的值,可以使用global命令。E.G:%seta4%4%procsamplex%globala%incra%returnexpr$a+$x%sample3%8,TCL内建命令,引用:upvar命令语法:upvar?level?otherVarmyVar?otherVarmyVar.?upvar命令使得用户可以在过程中对全局变量或其他过程中的局部变量进行访问。upvar命令的第一个参数otherVar是我们希望以引用方式访问的参数的名字,第二个参数myVar是这个过程中的局部变量的名字,一旦使用了upvar命令把otherVar和myVar绑定,那么在过程中对局部变量myVar的读写就相当于对这个过程的调用者中otherVar所代表的局部变量的读写。upvar命令语法中的level参数表示:调用upvar命令的过程相对于我们希望引用的变量myVar在调用栈中相对位置。,TCL内建命令,引用:upvar%proctemparg%upvar$argb%setbexpr$b+2%procmyexpvar%seta4%tempa%returnexpr$var+$a%则:%myexp7%13,TCL内建命令,字符串操作命令:string、format、regexp、regsub、scan等regexp?switchs?-?expstring?matchVar?subMatchVarsubMatchVar.?%regexp(0 x)?0-9a-fA-F+|0-9+)$ab%1%regexp(0 x)?0-9a-fA-F+|0-9+)$123j%0,TCL内建命令,文件访问命令:文件名:TCL中文件名和我们熟悉的windows表示文件的方法有一些区别:在表示文件的目录结构时它使用/,而不是。基本文件输入输出命令:opengetsreadputsflushclose随机文件访问命令:seektelleof管理当前工作目录命令:pwdcd文件操作和获取文件信息命令:TCL提供了两个命令进行文件名操作:glob和file,用来操作文件或获取文件信息。,TCL内建命令,%proctgreppatternfilename%setffopenresult.txtw+%setfopen$filenamer%whilegets$fline!=-1%ifregexp$pattern$linex%puts$ff$x%flush$ff%close$ff%close$f%tgrep.*(d+.d+.d+.d+)HUAWEI_1log.txt%RouterIP:10.20.0.59,TCL内建命令,错误和异常相关命令:catchcommand?varName?errormessage?info?code?return-codecode?-errorinfoinfo?-errorcodeerrorCode?string?%catchunsetxmsg%1%setmsg%cantunsetx:nosuchvariable,TCL内建命令,procdovarNamefirstlastbodyglobalerrorInfoerrorCodeupvar$varNamevforsetv$first$v=$lastincrvswitchcatchuplevel$bodystring1return-codeerror-errorInfo$errorInfo-errorcode$errorCode$string/error2return-codereturn$string/return3return/break,TCL内建命令,其他TCL命令:arrayinfohistorytimetracerenamenamespace,TCL命令扩展,TCL解释器由C过程库构成,并且能嵌入到C程序中,所以程序员可以用C编写新的TCL命令,从而可以在脚本中像TCL的命令一样使用该命令。,TCL命令扩展,扩展一个TCL命令大致可以分为两步:编写扩展命令对应的C/C+过程,注册命令。对Tcl命令的扩展过程一般按下图所示的步骤进行:,TCL命令扩展,方法(一)编写扩展命令函数:intTcl_CmdProc(ClientDataclientdata,Tcl_Interp*interp,intargc,char*argv);注册命令函数:Tcl_CreateCommand(Tcl_Interp*interp,char*cmdName,Tcl_CmdProc*cmdProc,ClientDataclientdata,Tcl_CmdDeleteProc*deleteProc)缺点:TCL从外部应用到内部实现都是基于字符串的,这样在涉及到类型转换时,需要在各种数据类型及其字符串表示之间来回转换,效率比较低,加上TCL是解释执行的,导致在利用TCL作较为大型的应用程序时执行速度不够理想。,TCL命令扩展,方法(二)编写扩展命令函数:i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质量管理规范考核试题及答案
- 教师招聘考试教育综合知识题库103名校含答案解析
- 2025 年大学冰雪运动(滑雪技能训练)试题及答案
- 2025 年大学软件工程(软件工程导论)试题及答案
- 新员工考试试题(第二部分)要点
- 施工员岗位面试题库及答案解析(版)
- 氯碱公司从业人员安全培训复习题(附答案)
- 2025年刑警学院考研题库及答案
- 智慧365人力资源管理中激励很重要-图文
- 企业如何构建以人为本的科学激励模式
- 2025年及未来5年中国机电安装工程市场竞争态势及行业投资潜力预测报告
- 道路运输企业档案管理制度
- 术中输血安全管理
- 黑龙江省哈尔滨市九中2025-2026学年高一上学期期中语文试题(含答案及解析)
- 2025年乌苏市公安局开招聘警务辅助人员(67人)笔试考试参考试题附答案解析
- 2025重庆医科大学附属大足医院招聘4人笔试考试参考试题及答案解析
- DB5201-T 126-2022 商务楼宇等级划分与评定
- 2025北京国家电投集团创新投资招聘1人笔试历年常考点试题专练附带答案详解2套试卷
- 2025广东深圳市罗山科技园开发运营服务有限公司第二批招聘4人笔试考试参考试题及答案解析
- 学堂在线 人工智能 章节测试答案
- 彼得·蒂尔:硅谷教父的叛逆人生
评论
0/150
提交评论