位置:首頁 > 軟件操作教程 > 工業(yè)產(chǎn)品軟件 > UG(Unigraphics NX) > 問題詳情

UG-NX6 7.5.3 TCL語法簡介 1.基本語法

提問人:劉團圓發(fā)布時間:2020-10-29

1.基本語法

TCL語言的語法實際上是一些TCL解釋器怎樣對TCL命令進行分析的規(guī)則的集合,TCL 的基本語法類似于 UNIX shell:命令由用空格或 TAB 分隔的一個或多個字段組成。第一個字段是命令的名字,它可以是內(nèi)置命令、特定于應(yīng)用的命令、或者是由一系列的 TCL命令組成的過程。在第一個單詞后面的字段都作為參數(shù)傳遞給命令。 

(1)注釋

關(guān)于TCL的注釋有一個特殊的要求:'#'必須出現(xiàn)在TCL解釋器期望命令的第一個字符出現(xiàn)的地方,才被當(dāng)作注釋。

例如:

set a 1 # Not a comment

set b 2 ; # this is a comment

第一個例子中'#'及其后面的內(nèi)容會被當(dāng)作set 的參數(shù)而非注釋從而導(dǎo)致參數(shù)個數(shù)錯誤;但第二個被解釋為注釋,因為'#'前面有一個分號,而分號和換行一樣被看作是命令的分隔符。

(2)eval命令

eval命令是一個用來構(gòu)造和執(zhí)行TCL腳本的命令,其語法為: 

TCL提供三種形式的置換:變量置換、命令置換和反斜杠置換。每種置換都會導(dǎo)致一個或多個單詞本身被其他的值所代替。置換可以發(fā)生在包括命令名在內(nèi)的每一個單詞中,而且置換可以嵌套。

(1)變量置換(variable substitution)

變量置換由一個$符號標(biāo)記,變量置換會導(dǎo)致變量的值而非變量(標(biāo)識符)本身被插入到字符串中。

set x 10

set y 100 + $x

這時,y的值還不是我們想要的值110,而是10+100,因為TCL解釋器把10+100看成是一個字符串而不是表達(dá)式;y要想得到值110,還必須用命令置換,使得TCL會把10+100看成一個表達(dá)式并求值。

(2)命令置換(command substitution)

命令置換是由[ ]括起來的TCL命令及其參數(shù),命令置換會導(dǎo)致某一個命令的所有或部分單詞(參數(shù))被另一個命令的結(jié)果所代替。

set x 10

set y [expr 100+$x]

這時,y的值就是110了。這里當(dāng)TCL解釋器遇到字符'['時,它就會把隨后的expr作為一個命令名,從而激活與expr對應(yīng)的C/C++過程,并把expr命令中變量置換后得到的'10+110'傳遞給該命令過程進行處理。

注意,[ ]中必須是一個合法的TCL腳本,長度不限。[ ]中腳本的值為最后一個命令的返回值。 

有了命令置換,實際上就表示命令之間是可以嵌套的,即一個命令的結(jié)果可以作為別的命令的參數(shù)。

(3)反斜杠置換(backslash subtitution)

TCL語言中的反斜杠置換類似于C語言中反斜杠的用法,主要用于在單詞符號中插入諸如換行符、空格、[、$等被TCL解釋器當(dāng)作特殊符號對待的字符。例如:

set msg multiple\ space 

如果沒有'\'的話,TCL會報錯,因為解釋器會把這里最后兩個單詞之間的空格認(rèn)為是分隔符,于是發(fā)現(xiàn)set命令有多于兩個參數(shù),從而報錯。加入了'\'后,空格不被當(dāng)作分隔符,'multiple space'被認(rèn)為是一個單詞(word)。

(4)雙引號和花括號

除了使用反斜杠外,TCL提供另外兩種方法來使得解釋器把分隔符和置換符等特殊字符當(dāng)作普通字符,而不作特殊處理,這就要使用雙引號“”和花括號{}。TCL解釋器對雙引號中的各種分隔符將不作處理,但是對換行符及$和[]兩種置換符會照常處理。而在花括號中,所有特殊字符都將成為普通字符,失去其特殊意義,TCL解釋器不會對其作特殊處理。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部