UG-NX6 7.5.3 TCL語(yǔ)法簡(jiǎn)介 1.基本語(yǔ)法
1.基本語(yǔ)法
TCL語(yǔ)言的語(yǔ)法實(shí)際上是一些TCL解釋器怎樣對(duì)TCL命令進(jìn)行分析的規(guī)則的集合,TCL 的基本語(yǔ)法類(lèi)似于 UNIX shell:命令由用空格或 TAB 分隔的一個(gè)或多個(gè)字段組成。第一個(gè)字段是命令的名字,它可以是內(nèi)置命令、特定于應(yīng)用的命令、或者是由一系列的 TCL命令組成的過(guò)程。在第一個(gè)單詞后面的字段都作為參數(shù)傳遞給命令。
(1)注釋
關(guān)于TCL的注釋有一個(gè)特殊的要求:'#'必須出現(xiàn)在TCL解釋器期望命令的第一個(gè)字符出現(xiàn)的地方,才被當(dāng)作注釋。
例如:
set a 1 # Not a comment
set b 2 ; # this is a comment
第一個(gè)例子中'#'及其后面的內(nèi)容會(huì)被當(dāng)作set 的參數(shù)而非注釋從而導(dǎo)致參數(shù)個(gè)數(shù)錯(cuò)誤;但第二個(gè)被解釋為注釋?zhuān)驗(yàn)?#39;#'前面有一個(gè)分號(hào),而分號(hào)和換行一樣被看作是命令的分隔符。
(2)eval命令
eval命令是一個(gè)用來(lái)構(gòu)造和執(zhí)行TCL腳本的命令,其語(yǔ)法為:
TCL提供三種形式的置換:變量置換、命令置換和反斜杠置換。每種置換都會(huì)導(dǎo)致一個(gè)或多個(gè)單詞本身被其他的值所代替。置換可以發(fā)生在包括命令名在內(nèi)的每一個(gè)單詞中,而且置換可以嵌套。
(1)變量置換(variable substitution)
變量置換由一個(gè)$符號(hào)標(biāo)記,變量置換會(huì)導(dǎo)致變量的值而非變量(標(biāo)識(shí)符)本身被插入到字符串中。
set x 10
set y 100 + $x
這時(shí),y的值還不是我們想要的值110,而是10+100,因?yàn)門(mén)CL解釋器把10+100看成是一個(gè)字符串而不是表達(dá)式;y要想得到值110,還必須用命令置換,使得TCL會(huì)把10+100看成一個(gè)表達(dá)式并求值。
(2)命令置換(command substitution)
命令置換是由[ ]括起來(lái)的TCL命令及其參數(shù),命令置換會(huì)導(dǎo)致某一個(gè)命令的所有或部分單詞(參數(shù))被另一個(gè)命令的結(jié)果所代替。
set x 10
set y [expr 100+$x]
這時(shí),y的值就是110了。這里當(dāng)TCL解釋器遇到字符'['時(shí),它就會(huì)把隨后的expr作為一個(gè)命令名,從而激活與expr對(duì)應(yīng)的C/C++過(guò)程,并把expr命令中變量置換后得到的'10+110'傳遞給該命令過(guò)程進(jìn)行處理。
注意,[ ]中必須是一個(gè)合法的TCL腳本,長(zhǎng)度不限。[ ]中腳本的值為最后一個(gè)命令的返回值。
有了命令置換,實(shí)際上就表示命令之間是可以嵌套的,即一個(gè)命令的結(jié)果可以作為別的命令的參數(shù)。
(3)反斜杠置換(backslash subtitution)
TCL語(yǔ)言中的反斜杠置換類(lèi)似于C語(yǔ)言中反斜杠的用法,主要用于在單詞符號(hào)中插入諸如換行符、空格、[、$等被TCL解釋器當(dāng)作特殊符號(hào)對(duì)待的字符。例如:
set msg multiple\ space
如果沒(méi)有'\'的話,TCL會(huì)報(bào)錯(cuò),因?yàn)榻忉屍鲿?huì)把這里最后兩個(gè)單詞之間的空格認(rèn)為是分隔符,于是發(fā)現(xiàn)set命令有多于兩個(gè)參數(shù),從而報(bào)錯(cuò)。加入了'\'后,空格不被當(dāng)作分隔符,'multiple space'被認(rèn)為是一個(gè)單詞(word)。
(4)雙引號(hào)和花括號(hào)
除了使用反斜杠外,TCL提供另外兩種方法來(lái)使得解釋器把分隔符和置換符等特殊字符當(dāng)作普通字符,而不作特殊處理,這就要使用雙引號(hào)“”和花括號(hào){}。TCL解釋器對(duì)雙引號(hào)中的各種分隔符將不作處理,但是對(duì)換行符及$和[]兩種置換符會(huì)照常處理。而在花括號(hào)中,所有特殊字符都將成為普通字符,失去其特殊意義,TCL解釋器不會(huì)對(duì)其作特殊處理。
點(diǎn)擊加載更多評(píng)論>>