リストの抽出
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/10 13:51 UTC 版)
Tcl パーサーがソースコードからコマンド行としてリストを取り出すとき、ひとつのリストの終端は改行コードかセミコロン(;)で判断する。しかし改行コードやセミコロンがブレスの内側にあれば、それをリストの終端記号とは見なさない。したがって、以下の3行の文字列は3つの要素から成るひとつのリストである。改行コードは3個あるが、最後の改行コードだけがリストの終端記号の役割を果たす。 if {$a<0} { set a 0 } 上記リストは Tcl の if コマンドでありC言語の if 文に似ている。しかしブレスがリスト記述記号として採用されているので似ているだけである。上記の if コマンドを以下のように改行の位置を変えると、ifコマンドの引数エラーになる。 if {$a<0} { set a 0 } Tcl パーサーは上記4行の文字列を2つのリストとして認識する。したがって先頭行のifコマンド行は引数がひとつだけしか与えられていないことになり、引数エラーが発生する。 ここで重要なのは、エラーを返したのは if コマンドであり、Tcl パーサーが検出した「文法エラー」ではないということである。Tcl には制御文などの「文」はない。分岐や繰り返しなどの実行制御も単にコマンドによって実現されているだけである。「Tcl には細かなルールが無い」のであり、そこにはリスト構造と、以下に解説する「特殊記号」しかない。
※この「リストの抽出」の解説は、「Tcl/Tk」の解説の一部です。
「リストの抽出」を含む「Tcl/Tk」の記事については、「Tcl/Tk」の概要を参照ください。
- リストの抽出のページへのリンク