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 ...
随机推荐
- Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...
- android kotlin determine file type from bytes 根据文件内容识别文件类型,类似python的filetype
尝试了 URLConnection.guessContentTypeFromStream(ByteArrayInputStream(bytes)) 和 Tika().detect(bytes) 一个识 ...
- Windows内核-7-IRP和派遣函数
Windows内核-7-IRP和派遣函数 IRP以及派遣函数是Windows中非常重要的概念.IRP 是I/O Request Pocket的简称,意思是I/O操作的请求包,Windows中所有Use ...
- qGPU on TKE - 腾讯云发布下一代 GPU 容器共享技术
背景 qGPU 是腾讯云推出的 GPU 共享技术,支持在多个容器间共享 GPU卡,并提供容器间显存.算力强隔离的能力,从而在更小粒度的使用 GPU 卡的基础上,保证业务安全,达到提高 GPU 使用率. ...
- Dapr实战(三)状态管理
状态管理解决了什么 分布式应用程序中的状态可能很有挑战性. 例如: 应用程序可能需要不同类型的数据存储. 访问和更新数据可能需要不同的一致性级别. 多个用户可以同时更新数据,这需要解决冲突. 服务必须 ...
- dubbo微服务架构
架构 节点角色说明 调用关系说明 服务容器负责启动,加载,运行服务提供者. 服务提供者在启动时,向注册中心注册自己提供的服务. 服务消费者在启动时,向注册中心订阅自己所需的服务. 注册中心返回服务提供 ...
- javascript wchar_t 宽字符 转化为 ascii字符码数组
String.prototype.charCodeAt String.fromCharCode() String.prototype.toUtfArray = function() { return ...
- P3706-[SDOI2017]硬币游戏【高斯消元,字符串hash】
正题 题目链接:https://www.luogu.com.cn/problem/P3706 题目大意 给出 \(n\) 个长度为 \(m\) 的 \(H/T\) 串. 开始一个空序列,每次随机在后面 ...
- AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】
正题 题目链接:https://www.luogu.com.cn/problem/AT4505 题目大意 给出\(n\)个点和\(n-1\)个点集\(U_i\),每个点集中选择两个点连边使得该图是一棵 ...
- Python isinstance() 函数 Python 内置函数 Python 内置函数
描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关 ...