Tcl語法簡介
[Tcl的語法比這複雜的多,無疑需要長期的浸淫,轉載此篇文章權當拋磚引玉]
作為一種指令碼語言,Tcl具有簡單的語法.
cmd arg arg arg
一條Tcl命令由空格分割的單片語成. 其中, 第一個單詞是命令名稱, 其餘的是命令引數 .
$foo
$符號代表變數的值. 在本例中, 變數名稱是foo.
[clock seconds]
方括號執行了一個巢狀命令. 例如, 如果你想傳遞一個命令的結果作為另外一個命令的引數, 那麼你使用這個符號 . 在本例中, 巢狀命令是以秒為單位的當前時間秒數 .
"some stuff"
雙引號把片語標記為命令的一個引數. "$"符號和方括號在雙引號內仍被解釋 .
{some stuff}
大括號也把片語標記為命令的一個引數. 但是, 其他符號在大括號內不被解釋.
反斜線符號() 是用來引用特殊符號. 例如:n 代表換行. 反斜線符號也被用來關閉"$"符號 , 引號,方括號和大括號的特殊含義 .
--------------------------------------------------------------------------------
一個小例子
下面是Tcl中列印當前時間的命令. 它使用了三條Tcl命令 : set, clock, 和 puts. set 命令給變數賦值. clock 命令生成時間值 . puts 命令列印結果.
set seconds [clock seconds]
puts "The time is [clock format $seconds]"
注意在給變數賦值時並未使用$符號. 只有在使用變數時才使用$符號.在上個例子中, seconds 變數並不是必須的. 你能使用一句命令列印出當前時間:
puts "The time is [clock format [clock seconds]]"
--------------------------------------------------------------------------------
分組和替換
Tcl解析Tcl語法是透過以下三步: 引數分組, 結果替換和命令分派.
引數分組. Tcl需要決定怎樣組織命令的引數 . 在最簡單的情況中, 空格分隔了各引數 . 作為早期規定, 引號和括號使多個單詞成為一個引數 . 在上個例子中 , 雙引號使多個單詞成為puts命令的一個引數.
結果替換. 在引數分組後 , Tcl執行字串替換. Put命令中, 只是簡單地用變數 $foo 的值替換了foo, 用結果替換了括號命令. 替換是在分組之 後 後進行的. 這種次序使特別的值並未使命令結構變複雜.
命令分派. 在結果替換後, Tcl使用命令名稱作為關鍵字 ,查詢分派表,呼叫相應的C程式,來執行命令. . 你也可以在Tcl中開發命令程式. 在引數傳遞和錯誤處理中有一些簡單的約定.
--------------------------------------------------------------------------------
<wbr> <wbr>另一個例子
下面是另一個例子:
set i 0
while {$i < 10} {
<wbr> <wbr> puts "$i squared = [expr $i*$i]"
<wbr> <wbr> incr i
}
這裡, 大括號用來引數分組, 並沒進行任何替換. Tcl語法解析知道 while 命令沒有特別的地方,象對待其它命令一樣. while 命令的執行程式知道第一個引數是表示式, 第一個引數是多個Tcl命令 . 大括號把它分成兩個引數:邏輯表示式控制迴圈,命令在迴圈部分 .
我們看到了兩個數學表示式: 邏輯比較和乘法計算. while命令自動計算第一個引數值. 在其它場合時,你要明確使用 expr 命令來執行數學計算.
<wbr> <wbr>
--------------------------------------------------------------------------------
命令分派
最後,Tcl呼叫程式執行復雜的工作. 我們可以看到Tcl 使用 expr 命令來執行數學運算, puts 命令來執行輸出功能, set 命令來給變數賦值. 這些Tcl命令,是透過已在Tcl中註冊的C語言程式來執行的. C語言程式呼叫Tcl命令傳來的字串引數, 然後傳回結果字串. 寫C語言程式並不複雜, 而且可以做任何事情,包括訪問資料庫和建立圖形介面. Tcl語言, 並不清楚命令會做什麼 , 它只是進行引數分組, 結果替換和命令分派 .
--------------------------------------------------------------------------------
最後一個例子
這是一個階乘程式:
proc fac {x} {
<wbr> <wbr> if {$x < 0} {
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>error "Invalid argument $x: must be a positive integer"
<wbr> <wbr> } elseif {$x <= 1} {
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>return 1
<wbr> <wbr> } else {
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>return [expr $x * [fac [expr $x-1]]]
<wbr> <wbr> }
}
[@more@]
cmd arg arg arg
一條Tcl命令由空格分割的單片語成. 其中, 第一個單詞是命令名稱, 其餘的是命令引數 .
$foo
$符號代表變數的值. 在本例中, 變數名稱是foo.
[clock seconds]
方括號執行了一個巢狀命令. 例如, 如果你想傳遞一個命令的結果作為另外一個命令的引數, 那麼你使用這個符號 . 在本例中, 巢狀命令是以秒為單位的當前時間秒數 .
"some stuff"
雙引號把片語標記為命令的一個引數. "$"符號和方括號在雙引號內仍被解釋 .
{some stuff}
大括號也把片語標記為命令的一個引數. 但是, 其他符號在大括號內不被解釋.
反斜線符號() 是用來引用特殊符號. 例如:n 代表換行. 反斜線符號也被用來關閉"$"符號 , 引號,方括號和大括號的特殊含義 .
--------------------------------------------------------------------------------
一個小例子
下面是Tcl中列印當前時間的命令. 它使用了三條Tcl命令 : set, clock, 和 puts. set 命令給變數賦值. clock 命令生成時間值 . puts 命令列印結果.
set seconds [clock seconds]
puts "The time is [clock format $seconds]"
注意在給變數賦值時並未使用$符號. 只有在使用變數時才使用$符號.在上個例子中, seconds 變數並不是必須的. 你能使用一句命令列印出當前時間:
puts "The time is [clock format [clock seconds]]"
--------------------------------------------------------------------------------
分組和替換
Tcl解析Tcl語法是透過以下三步: 引數分組, 結果替換和命令分派.
引數分組. Tcl需要決定怎樣組織命令的引數 . 在最簡單的情況中, 空格分隔了各引數 . 作為早期規定, 引號和括號使多個單詞成為一個引數 . 在上個例子中 , 雙引號使多個單詞成為puts命令的一個引數.
結果替換. 在引數分組後 , Tcl執行字串替換. Put命令中, 只是簡單地用變數 $foo 的值替換了foo, 用結果替換了括號命令. 替換是在分組之 後 後進行的. 這種次序使特別的值並未使命令結構變複雜.
命令分派. 在結果替換後, Tcl使用命令名稱作為關鍵字 ,查詢分派表,呼叫相應的C程式,來執行命令. . 你也可以在Tcl中開發命令程式. 在引數傳遞和錯誤處理中有一些簡單的約定.
--------------------------------------------------------------------------------
下面是另一個例子:
set i 0
while {$i < 10} {
}
這裡, 大括號用來引數分組, 並沒進行任何替換. Tcl語法解析知道 while 命令沒有特別的地方,象對待其它命令一樣. while 命令的執行程式知道第一個引數是表示式, 第一個引數是多個Tcl命令 . 大括號把它分成兩個引數:邏輯表示式控制迴圈,命令在迴圈部分 .
我們看到了兩個數學表示式: 邏輯比較和乘法計算. while命令自動計算第一個引數值. 在其它場合時,你要明確使用 expr 命令來執行數學計算.
--------------------------------------------------------------------------------
命令分派
最後,Tcl呼叫程式執行復雜的工作. 我們可以看到Tcl 使用 expr 命令來執行數學運算, puts 命令來執行輸出功能, set 命令來給變數賦值. 這些Tcl命令,是透過已在Tcl中註冊的C語言程式來執行的. C語言程式呼叫Tcl命令傳來的字串引數, 然後傳回結果字串. 寫C語言程式並不複雜, 而且可以做任何事情,包括訪問資料庫和建立圖形介面. Tcl語言, 並不清楚命令會做什麼 , 它只是進行引數分組, 結果替換和命令分派 .
--------------------------------------------------------------------------------
最後一個例子
這是一個階乘程式:
proc fac {x} {
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9378682/viewspace-1018021/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Azure Bicep(二)語法簡介
- GOLANG簡介與基礎語法Golang
- flex設計思想和語法簡介Flex
- Typora編輯器Markdown語法簡介
- SPF 記錄:原理、語法及配置方法簡介
- Hive內部函式簡介及查詢語法Hive函式
- shell 語法介紹
- JavaScript 語法介紹JavaScript
- V8最新支援的一些語法簡介
- yaml語音簡介YAML
- C#基礎程式設計——簡介及基礎語法C#程式設計
- ASP.NET Razor – C# 和 VB 程式碼語法簡介ASP.NETC#
- Markdown簡單語法
- 8 語言模型簡介模型
- [EasyHexo 專欄] #1 - Markdown 編輯器推薦與語法簡介Hexo
- 01 Python3程式設計之程式設計語法簡介Python程式設計
- javascript字串的語法介紹JavaScript字串
- Markdown 常用簡明語法
- vue簡單模板語法Vue
- mysql 常用sql語句 簡介MySql
- Verilog 多路分支語句簡介
- Go語言工具簡介 - HoneybadgerGo
- logstash 配置檔案語法介紹
- YAML語法簡易入門YAML
- 簡單的查詢語法
- K-最近鄰法(KNN)簡介KNN
- Go語言學習(1) - 簡介Go
- python之程式語言(簡介)01Python
- Java程式語言特點簡介Java
- JavaScript return語句簡單介紹JavaScript
- [Dart]Dart語言之旅<一>:簡介Dart
- C語言基礎-C簡介C語言
- 多人對話語篇解析簡介
- groovy 程式語言簡單介紹
- Verilog HDL迴圈語句簡介
- 使用 Tcl 實現簡單的文字識別程式
- 大資料教程之《MYSQL資料庫》TCL語言和DCL語言大資料MySql資料庫
- PostCSS 常用外掛與語法介紹CSS
- Swift基礎語法簡化版Swift