Tclの文法TOP>Tcl>8.4.1>TclReferenceTOPKeywords次の規則があります。[1]Tclスクリプトは1つ以上のコマンドを含む文字列です。下述のようにクォートされていなければ、セミコロンと改行はコマンド区切り記号です。コマンド置き換えの間のコマンドを終了する記号です。[2]コマンドは2つのステップで評価されます。最初に、Tclインタプリタはコマンドをwordに分割し、下述のように置き換えを行います。これらの置き換えはすべてのコマンドで同じ方法で行われます。最初の単語は、コマンドを実行するコマンドプロシージャを決定するために使われる部分です。すべての単語がコマンドプロシージャに渡されます。コマンドプロシージャはそれぞれの単語を好きな方法で自由に解釈できます。リスト、Tclスクリプト等。異なるコマンドはそれらの単語を異なる方法で解釈します。[3]コマンドの単語は(コマンドを分離する改行を除く)空白で分離されます。[4]単語の最初の文字が2重引用符(""'')なら、その単語は次の2重引用符文字で終了します。(改行を含む)空白文字が引用符の間に現れても、それらは普通の文字として扱われ、単語に含まれてしまいます。変数置き換え、そしてバックスラッシュ置き換えは下述のように、引用符の間の文字で行われます。2重引用符は単語の一部としては保有されません。[5]単語の最初の文字が左中括弧("{'')なら、単語は対応する右中括弧("}'')で終了します。中括弧は単語の内側でネストします。(しかし、単語内の左中括弧や右中括弧がバックスラッシュで引用されていると対応する右中括弧の計算に入られません)。中括弧の間の文字では、以下で記述されるバックスラッシュ-改行置き換えを除いて置き換えは行われません。セミコロン、改行、右大括弧あるいは空白文字はいかなる特別の扱いも受けません。単語はそれ自身は含まれない外側の中括弧の間の文字から構成されます。[6]単語が左大括弧("['')を含んでいると、Tclはコマンド置き換えを行います。これを行うためにTclは、右大括弧に続く文字をTclスクリプトとして処理するためにインタプリタを再帰的に呼び出します。しなければなりません。その間の文字の場所と置き換えられます。1つの単語のなかにはいかなる数のコマンド置き換えがあってもかまいません。コマンド置き換えは中括弧に納められている単語では行われません。[7]単語がドルマーク("$'')を含んでいると、Tclは変数置き換えを行います。単語の中のドルマークとそれに続く文字は変数の値と置き換えられます。変数置き換えは次の形式のいずれかをとります。スカラ変数の名前です。ネームスペース区切り記号等の1つ以上の文字列です。配列変数の名前で、indexはその配列内の要素の名前を与えます。英字、数字、下線またはネームスペース区切り記号だけを含んでいなければなりません。index内の文字ではコマンド置き換え、変数置き換え、そしてバックスラッシュ置き換えが行われます。スカラ変数の名前です。除くいかなる文字も含むことができます。1つの単語でいくつの変数置き換えがあってもよい。変数置き換えは中括弧で括られた単語では行われません。[8]バックスラッシュ("\'')が単語内に現れると、バックスラッシュ置き換えが発生します。以下で言及されるものを除く、バックスラッシュは取り除かれ、続く文字は普通の文字として扱われ、単語に含まれます。ドルマークのような文字を特別な処理を引き起こすことなく単語に含むことを可能にします。扱われるバックスラッシュ列を、各列が置き換えられた結果値と共に列挙します。