热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCL编程的语法规则

TCL编程的语法规则TCL的语法规则:1、解释器在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个Tcl命令是在特

TCL编程的语法规则

TCL的语法规则:1、解释器在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是 在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。

Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。

2、数据类型Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。这是它比较有特点的方面字符串有三种形式:命令(command),表达式(expresion)和表(list)。

3、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经常完成缩略的命令名的执行。但最好不要使用。

4、注释和shell很象,第一个字母是"#"的Tcl字符串是注释。其他细节规则Grouping arguments with double-quotes 用双引号来集群参数,目的在于使用有空白的参数。例如:set a "this string contains whitespace"如果一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。

Variable substitution with $ 用美元符进行变量替换说白了就是引用该变量。例如:set a helloset 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 xyz[set b "abc"].[set c "def"]//return xyzabcdefBackslash 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 22set b 33}//eval收到一个参数 "set a 22set b 33"5、命令综述1.一个命令就是一个字符串(string)。2.命令是用换行符或分号来分隔的。3.一个命令由许多的域组成。

第一个于是命令名,其它的域作为参数来传递。4.域通常是有空白(Tab横向制表健 Space空格)来分开的。5.双引号可以使一个参数包括换行符或分号。

三种子替换仍然发生。6.花括号类似于双引号,只是不进行三总体换。7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。

8.如果第一个非控字符是`#",这一行的所有东西都是注释。6、表达式对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr、for 和 if,并调用Tcl表达式处理器(Tcl_ExprLong,Tcl_ExprBoolean等)来处理它们。

其中的运算符与C语言的很相似。!逻辑非* / % + -<>>左移 右移 只能用于整数。 > = == !=逻辑比较& ^ |位运算和 异或 或&&''逻辑"和" "或"x y : zIf-then-else 与C的一样Tcl 中的逻辑真为1,逻辑假为0。

tcl/tk 这种编程语言过时吗

看您用来做什么事,如果想靠这个来吃程序员的饭,就过时了。如果用tcl/tk来做工作中的辅助事情,还时非常高效的。

TCL语言的参数定义

Tcl的Procedures 和c的函数差不多. 它们有参数,它们返回值。基本定义方法是:proc name argListbody当一个procedure被定义,它就被看做是一个命令,如同Tcl的自带命令一样,通过名字来呼叫,名字后面跟上参数。

缺省的,procedure的返回值是它的最后一个命令结果。

但也可以通过return命令来返回其他值。Return值可以在procedure的任何地方,一旦执行,procedure就此返回。Example 5.1:proc sum_proc {a b} {return [expr $a + $b]}proc magnitude {num} {if {$num > 0} {return $num}set num [expr $num * (-1)]return $num}set num1 12set num2 14set sum [sum_proc $num1 $num2]puts The sum is $sumputs The magnitude of 3 is [magnitude 3]puts The magnitude of -2 is [magnitude -2]Output:The sum is 26The magnitude of 3 is 3The magnitude of -2 is 2在procedure中可以通过set创造变量,但是变量只在procedure中有效,而且一旦procedure返回,这些变量就不可访问。如果procedure需要访问主程序中的变量,就需要使用global关键字。

有关Tcl脚本语言编程的问题

set

编程语言一共有多少种?

编程语言的种类繁多,总的来说分为机器语言、汇编语言以及高级语言三大类。 机械语言(machine language):计算机可直接识别、运行的二进制代码,执行速度快,资源占用少,但可读性不强,编程复杂; 汇编语言(assembly language):一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

目标代码简短,占用内存少,执行速度快,但缺乏可移植性,编程复杂; 高级语言(High-level programming language):相对于机器语言以及汇编语言,高级语言的可读性强,可移植性高,一般通过事先编好的一个叫做编译程序的机器语言程序编译成用机器指令表示的目标程序。

现在流行的高级语言有Java、C语言、C++、C#、Pascal、Basic等等。

计算机有哪些编程语言?

工业编程语言: A+ | Ada | 汇编语言| B | Brainfuck | C | C++ | C++/CLI| Cg | COBOL | Eiffel | Erlang | FORTRAN | IronPython | Java | JRuby | Jython | LISP | Oberon | Objective-C| Ocaml | Pascal | Perl | Powerbuilder | Python | QBASIC | R | REXX | Ruby | Self | Smalltalk | SQL | Tcl/Tk | Visual Basic | PHP | C# | F# | J# | Visual Basic .NET脚本编程语言: ActionScript | Javascript | JScript | Nuva | PostScript | Vbscript | lua学术编程语言: APL/J | Haskell | Logo | ML | pascal|Prolog | Scheme | SAC其他编程语言: ALGOL | BASIC| Clipper | Forth | Modula-2/Modula-3 | MUMPS | PL/I | Simula
推荐阅读
author-avatar
.
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有