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概述的更多相关文章

  1. Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述

    1.逻辑综合的概述 synthesis = translation + logic optimization + gate mapping . DC工作流程主要分为这三步 Translation : ...

  2. DC综合与Tcl语法结构概述

    转载:https://www.cnblogs.com/IClearner/p/6617207.html 1.逻辑综合的概述 synthesis = translation + logic optimi ...

  3. Tcl与Design Compiler (三)——DC综合的流程

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 1.基本流程概述 首先 ...

  4. Tcl与Design Compiler (四)——DC启动环境的设置

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 主要内容有: ·启动环 ...

  5. linux 设备驱动概述

    linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和 ...

  6. 菜鸟崛起 DB Chapter 2 MySQL 5.6的概述与安装

    在上文菜鸟崛起 DB Chapter 1 数据库概述我们初步认识了数据库,也知道市面上常见的几种数据库,下面我们就针对常见的MySQL数据库展开对DataBase的探讨. 2.1  MySQL介绍 M ...

  7. 数据库SQL语言从入门到精通--Part 1--SQL语言概述

    数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...

  8. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  9. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

随机推荐

  1. C#多线程开发-线程同步 02

    上一篇文章主要带领大家认识了线程,也了解到了线程的基本用法和状态,接下来就让我们一起学习下什么是线程同步. 线程中异常的处理 在线程中始终使用try/catch代码块是非常重要的,因为不可能在线程代码 ...

  2. vue系统总结2

    注册组件 组件其他补充 组件数据存放 父子组件通信 父级向子级传递信息 子级向父级传递信息 插槽slot 1.1什么是组件化 1.2 注册组件的基本步骤 创建组件构造器 注册组件 使用组件 <d ...

  3. Java特性和优势

    Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性

  4. vue ele 表单规则校验俩次输入密码是否相同,校验手机号 ( 前端小课堂:小细节,大进步 )

     这个是密码的拦截 : [{ required: true, validator: validatePass4, trigger: "blur" }],   同级关系下写下方法,类 ...

  5. 用XPath定位Web页面元素时,如何快速验证XPath语句是否正确?

    在使用Selenium做Web UI自动化测试的过程中,XPath是一种定位页面元素的常用方式.然而,面对某些元素的XPath路径过于复杂,我们想快速验证拼凑的Xpath语句是否正确时,该怎么办呢?这 ...

  6. Python之telnetlib模块

    telnetlib是python标准库中的一员,我们可以使用该模块以telnet的方式与服务器交互.请观察下面示例了解它的用法: import telnetlib def run_telnet(hos ...

  7. Linux学习笔记 - Linux快捷操作及常用命令

    一.快捷键 剪切光标前的内容 Ctrl + u 剪切光标至行末的内容 Ctrl + k 粘贴 Ctrl + u 或 Ctrl +k 的内容 Ctrl + y 移动光标到行末 Ctrl + e 移动光标 ...

  8. python 给多个变量赋值

    # assign values directly a = b = 'hello' a, b = 1, 2 print(b, type(b)) assert a == 1 and b == 2 # as ...

  9. 关联数组VS索引数组

    关联数组和常规说的数组类似,它包含标量抄数据,可用索引值来单独选择这些数据,和常规数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量袭.这些标量称为百Keys,可以在以后用于检索数组中的数值 ...

  10. eclipse安装配置

    安装eclipse,并运行了第一个Hello World!