tcl概述
tcl,全名tool command language,是一种通用的工具语言。
1)每个命令之间,通过换行符或者分号隔开;
2)tcl的每个命令包含一个或者多个单词,默认第一个单词表示命令,第二个单词表示参数,
单词之间必须同空格或者tab键隔开;
3)tcl解释器的执行过程,分析阶段,对单词的拆分,同时进行必要的置换;
执行阶段,检查命令有效性,启动c/c++解释器,传递之后的单词作为参数,执行命令;
4)tcl中的注释,用###来表示,一个就可以。必须在一行的开头
5)同一行命令太长,转到下一行,使用\ //,先转义空格隔开单词,之后//表示转到下一行;
6)大括号,{}中,不做特殊字符的识别,所有字符作为普通字符来处理;
7)双引号,""""中,只有部分的特殊字符被处理,换行符,$,[],其他作为普通字符;
8)tcl对复杂的数据结构支持不好,数组的支持也很奇怪。本文只讨论变量;
9)tcl中的list 数据类型,不声明变量,直接放在{}中,也定义了一些list操作函数,直接对{}进行操作;
list中的不同对象之间用空格隔开;可以将list赋值给一个变量
tcl中的置换有三种:
1)变量置换,$只是进行变量的简单替换,并不进行运算;
set x 10; set y $x+100; 那y的值是10+100,被当做一个整体的字符来处理,而并没有进行运算;
2)命令置换,[,将最后一个命令的执行结果返回作为参数,内部可以有多条命令;
set y [expr $x+100;] 这时的y表示110;[]中的命令必须是若干tcl可识别的正确命令;
3)反斜杠置换,\,用来打出一些特殊的字符;如换行符\n,空格,[,$,并没有另一个方括号];
set msg money\ \$3333\ \nArray\ a\[2] 输出money $3333
Array a[2]
tcl中的操作数,整数,实数都可以,0x开头表示十六进制,o开头表示八进制;
运算符和优先级与C类似;
tcl中的控制流,while,for,if,foreach,switch,各个参数用空格隔开,可以使用{}包住各个分开的参数;
其中的{},{必须写在与命令一行的地方,避免tcl认为命令已经结束;
break和continue,来控制单个循环;
tcl中的默认命令:
1)set 设置变量,变量命令也遵守C的标准,字符,数字,下划线;
set a 2; $a表示该变量
2)unset,删掉某个变量;可以加多个变量 unset a b;表示都被删除
3)append,变量拼接, incr,操作数必须是整数,相加;
4)expr,数学计算命令,参数必须是数字,支持很多C的运算函数,可以直接调用;
tcl中的输入输出:
1)scan,可以实现格式化输入:
scan "some 26 34" "some %d %d" a b
2)puts,格式化输出:
puts [format "the value of c is %d, d is %d, e is %d, f is %d" $c $d $e $f]
tcl中的错误,异常处理:
1)catch command ? varname,执行command,返回之后的结果为命令返回值,或者直接赋值给变量var_name;并不会退出tcl
2)error message ? info ? code,将message作为一个错误信息,返回回去,
扔缺少procedure,文件,字符串处理部分,需要补充;
from:_9_8
tcl概述的更多相关文章
- Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述
1.逻辑综合的概述 synthesis = translation + logic optimization + gate mapping . DC工作流程主要分为这三步 Translation : ...
- DC综合与Tcl语法结构概述
转载:https://www.cnblogs.com/IClearner/p/6617207.html 1.逻辑综合的概述 synthesis = translation + logic optimi ...
- Tcl与Design Compiler (三)——DC综合的流程
本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 1.基本流程概述 首先 ...
- Tcl与Design Compiler (四)——DC启动环境的设置
本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 主要内容有: ·启动环 ...
- linux 设备驱动概述
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和 ...
- 菜鸟崛起 DB Chapter 2 MySQL 5.6的概述与安装
在上文菜鸟崛起 DB Chapter 1 数据库概述我们初步认识了数据库,也知道市面上常见的几种数据库,下面我们就针对常见的MySQL数据库展开对DataBase的探讨. 2.1 MySQL介绍 M ...
- 数据库SQL语言从入门到精通--Part 1--SQL语言概述
数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
随机推荐
- Excel 快速跳转到工作表
新建 vba 模块 Sub GotoSheet() tname = InputBox("input table name") If StrPtr(tname) = 0 Then E ...
- vue之 分页封装
npm 下载 npm i element-ui -S components 创建 Page 文件夹 创建 Page.vue 文件 vue 文件 <template> <div c ...
- vue 引用省市区三级联动(element-ui Cascader)
npm 下载 npm install element-china-area-data -S main.js import {provinceAndCityData,regionData,provinc ...
- Python习题集(十二)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 请写一个函数fin ...
- 路由懒加载---Vue Router
一.什么是懒加载? 懒加载也就是延迟加载或者按需加载,即在需要的时候进行加载. 二.为什么在Vue路由中使用懒加载? 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常 ...
- 第24篇-虚拟机对象操作指令之getfield
getfield指令表示获取指定类的实例域,并将其值压入栈顶.其格式如下: getstatic indexbyte1 indexbyte2 无符号数indexbyte1和indexbyte2构建为(i ...
- Windows Server 2022 OVF(SLIC 2.6)
请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:ww ...
- [原创]OpenEuler20.03安装配置PostgreSQL13.4详细图文版
OpenEuler安装配置PostgreSQL 编写时间:2021年9月18日 作者:liupp 邮箱:liupp@88.com 序号 更新内容 更新日期 更新人 1 完成第一至三章内容编辑: 202 ...
- Jmeter系列(21)- Jmeter录制手机App请求
前置知识点 Jmeter HTTP代理服务器每次点击启动录制,会往Jmeter的bin目录下生成相关证书,证书有效期是7天 录制前需要先看下证书过期没有,过期了,删除bin目录下的证书,即Apache ...
- 浏览器+css基础+选择器+权重+匹配规则
浏览器的组成: shell+内核 shell:用户能看得到的界面就叫shell 内核:渲染rendering引擎和js引擎 现在主流拥有自己开发内核的浏览器:opera现在属于360和昆仑万维 CSS ...