Tcl/Tk用語集

 

 

 解析
   Tclインタプリタが、スクリプト文字列を読み込んでワード分割や
置換を行い、実行できる準備を行うこと。
 空白文字
   Tclインタプリタが、スクリプト文字列を区切るためのセパレータ文字のことで、具体的には空白およびタブである。
 コマンド
   広義のコマンドは、Tclインタプリタに登録された命令。狭義のコマンドは、C言語で作成されライブラリ化された実行形式の関数を呼び出すためのTclの命令。⇔
プロシジャ

 実行
   インタプリタが、Tclスクリプトを解析した後、第1ワードを
コマンドとみなして、対応する関数またはプロシジャを呼び出すこと。
 
スクリプト
   Tcl/Tkプログラムを指す。「命令文によって処理手順を記述する方法でアプリケーションソフトが解釈しながら処理を実行します。この処理方法を記述したテキストのことです。」
 
スコープ
   処理実行の影響範囲のこと。コンソールウィンドウにスクリプトを入力して、実行しているスコープがグローバルで、レベル#0。
   グローバルレベルから呼び出されたプロシジャは、レベル#1で、これ以降のスコープがローカルとなる。
   具体的な例としては、変数の通用範囲で、基本的に作成されたレベルでのみ参照・修正が可能である。(例外:upvar uplevel コマンド)
   ただし、グローバル変数は、global コマンドで各ローカルレベルから使用できるようになる。

 遅延評価
    インタプリタは、ブレース({})に囲まれた文字列をいちばん外側のブレースを外しただけで、コマンドに引数として渡します。
    そのため、文字列の中に変数があっても、その場では変数置換等はされません。
    引数としてスクリプト文字列を渡されたコマンドは、その文字列を再度インタプリタに渡して評価させます。
    つまり、最初にインタプリタが評価する時点では、評価されずに遅れて評価されるため、「遅延評価」と呼ばれるわけです。
    procコマンドや if コマンドなどの処理で一般的に用いられています。
 
 
set sum 0
set cnt 0
while { $cnt < 10 } {
  incr sum [incr cnt]
}
 合計、カウンタの初期値を0に設定する

 最後が左ブレースで終了しているので、対応する右ブレースがある3行分が1スクリプトとなる。
 whileコマンドには、第1引数として「 $cnt < 10 」、第2引数として「改行  incr sum [incr cnt]改行」が
 渡される。変数cntの置換やincr sum…の評価は、whileコマンドが再度イナプリタを呼び出した時点で行われる。


 

 評価
   インタプリタがTclスクリプトを解析→
実行すること。
 
プロシジャ
   proc コマンドで Tclインタプリタに登録された、Tclスクリプトで記述された命令。⇔
コマンド
   いわゆるサブルーチンのことで、特にシビアな性能を要求される処理以外はプロシジャで記述するのが普通。

 

 

 

 ワード
   文字列を
空白文字で区切ってできた1つの固まりのこと。以下の文字列は、3ワードからなる。
   puts stdout "Hello World"