**型 - nil -- ソース中では nil で表現されます。 - SYMBOL -- シンボルです。英数字と記号で表現します。 - REF -- シンボルの先頭に '$' をつけたもので、シンボルの内容を現します。 - LIST -- '(' と ')' で囲まれた任意の型表現です。 - INTEGER -- 整数です。 - REAL -- 浮動小数点です。 - STRING -- " と " で囲まれた文字列です。 - BLOCK -- '{' と '}' で囲まれたスクリプトです。実行時にはクロージャになります。 - EVAL -- '[' と ']' で囲まれたスクリプトで、行が実行される際に事前に評価されます。 - OBJECT -- オブジェクトです。new コマンドと class コマンドによって生成されます。 - EXCEPTION -- 例外です。throw コマンドによって生成されます。 - CLOSURE -- BLOCK が実行されるとクロージャになります。クロージャは実行時の環境(ローカル変数、オブジェクト)を保持します。 - FUNC -- 関数です。fun コマンド、defun コマンドや、method コマンドで生成されます。 - CONTROL -- return/break/continue/redo/retry により生成されます。 **評価の方法 -スクリプトは、複数の行から構成されます。 -各行は ';' (セミコロン) で終了します。 -スクリプトの各行が順次実行されます。 -各行の評価方法は次のとおりです: --行内の各、REF(ex. $XXX)、EVAL(ex. [XXX; ...]) を評価します。 --行の先頭のシンボルを調べ、これが関数の場合は、その行の残りをパラメータとして関数を実行します。 --行の先頭がオブジェクトの場合、2番目のシンボルを調べ、オブジェクトのメソッドであれば、3番目以降を引数としてメソッドを実行します。 -すべての関数、制御構造は、上記のとおり関数として実行します。 例: if {$i > 10} then: {println "true"}; 上記の場合、まず、'if' という関数が存在するかを調べ、この関数に対して {$i > 10} 、then: {println "true"} を引数として渡します。 if 関数は、{$i > 10} を評価し、この結果により then: ブロックを実行します。 $x foo 1 上記の場合、$x がオブジェクトの場合、$x のメソッドとして 'foo' を調べます。foo が見つかった場合、$x のオブジェクト環境を設定し、foo の引数として 1 を渡し、実行します。 **コマンドリファレンス 組み込みのコマンド(関数)の一覧です。 -false --nil を返します。toy の場合、nil のみが偽として扱われます。 -true --true を返します。 -set --ローカル変数に値を設定します。 -sets --インスタンス変数に値を設定します。 -defvar --グローバル変数に値を設定します。 -fun --名前無しの関数を生成します。 -defun --名前つきの関数を生成します。 -info --引数により次の情報を返します。local:ローカル変数、self:インスタンス変数、func:コマンド、class:クラス、global:グローバル変数。 -return --引数を伴い関数から抜けます。 -break --while/each から抜けます。引数を指定すると、while/each の戻り値となります。 -continue --while/each の次のイテレーションを実行します。 -redo --while/each の現在のイテレーションを再実行します。 -retry --while/each を最初からやり直します。try コマンドの catch: ブロックで使うと、tryを最初からやり直します。 -new --オブジェクトを作成します。 -if --コンディションの真偽により、then:ブロック、else:ブロックのいずれかを実行します。 -while --コンディションが真の間中、do:ブロックを実行します。 -print --引数を表示します。改行はしません。 -println --引数を表示し、改行します。 -time --ブロックの実行時間を秒で表示します。 -class --クラスを生成します。 -try --ブロックを実行し、EXCEPTIONが発生した場合、catch: ブロックを実行します。そのさい、var: で指定した変数で EXCEPTIONを参照できます。fin: ブロックが定義されていた場合、try の終了時点で必ず実行されます。 -throw --EXCEPTIONを発生します。 -case --第一引数の内容にマッチするブロックを実行します。 -set? --ローカル変数が設定されていれば真を返します。 -sets? --インスタンス変数が設定されていれば真を返します。 -unset --ローカル変数を消去します。 -unsets --インスタンス変数を消去します。 -self --自オブジェクトを返す関数です(変数ではありません)。 **Objectクラスのメソッド - vars --インスタンス変数のシンボルをリストで返します。 - method --メソッドを定義します。 - var? --インスタンス変数の内容を返します。 - set! --インスタンス変数に外部から値を設定します。 - type? --オブジェクトのタイプのシンボルを返します。 - delegate? --オブジェクトのデレゲータとして設定されているオブジェクトのリストを返します。 - string --オブジェクトの文字列表現を返します。 **Integerクラスのメソッド -- + -- ----