型
- 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 により生成されます。
- RQUOTE
- 正規表現を記述します。シングルクオート(') で囲んだ文字列です。
評価の方法
- スクリプトは、複数の行から構成されます。
- 各行は ';' (セミコロン) で終了します。
- スクリプトの各行が順次実行されます。
- 各行の評価方法は次のとおりです:
- 行内の各、REF(ex. $XXX)、EVAL(ex. [XXX; ...]) を評価します。
- 行の先頭のシンボルを調べ、これが関数の場合は、その行の残りをパラメータとして関数を実行します。
- 行の先頭がオブジェクトの場合、2番目のシンボルを調べ、オブジェクトのメソッドであれば、3番目以降を引数としてメソッドを実行します。
- すべての関数、制御構造は、上記のとおり関数として実行します。
例:
if {$i > 10} then: {println "true"};
上記の場合、まず、'if' という関数が存在するかを調べ、この関数に対して {$i > 10} 、then: {println "true"} を引数として渡します。
if 関数は、{$i > 10} を評価し、この結果により then: ブロック(もしくは else: ブロック)を実行します。
$x foo 1;
上記の場合、$x がオブジェクトの場合、$x のメソッドとして 'foo' が存在するかを調べます。foo が見つかった場合、$x のオブジェクト環境を設定し、foo の引数として 1 を渡し、実行します。
コマンドリファレンス
組み込みのコマンド(関数)の一覧です。
- false
- nil を返します。toy の場合、nil のみが偽として扱われます。
- true
- set
- sets
- defvar/setvar
- グローバル変数に値を設定します。defvar は、グローバルに設定されていない場合に実行可能です。setvar は、すでに存在するグローバル変数の内容を変更します。
- 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
- case
- set?
- sets?
- defvar?
- unset
- unsets
- self
- 自オブジェクトを返す関数です(変数ではありません)。
- stack-trace
- trap
- UNIXシグナルのハンドラを設定します。ハンドラを省略した場合、ハンドラは削除されます。
- load
- sid
- 関数の script-id を返します。(デバッグ用)
- !/and/or
- sdir
- alias
- 変数の別名を定義します。変数 i の別名を a として定義する場合、次のようにします。
alias i a
- また、up: 数値 を指定すると、コールスタックを遡り参照ができます。
- sleep
- file
- ファイルに関する問い合わせコマンドです。
- file exists?
- file dir?
- file read?
- file write?
- file exec?
- file list
- exists?
- 変数が存在すれば真を返します。変数の存在チェック順序は、$による参照順序と同じです。
Objectクラスのメソッド
- vars
- method
- var?
- set!
- type?
- delegate?
- オブジェクトのデレゲータとして設定されているオブジェクトのリストを返します。
- string
Integerクラスのメソッド
- +,-,*,/,%
- =,!=,>,<,>=,<=
- ++,--
- インクリメント/デクリメント演算。オブジェクトの内容が直接変更されます。
- each
- オブジェクトの値から、to: で指定された値まで、do: ブロックを実行します。その際、var: で指定した変数が設定されます。
Realクラスのメソッド
Listクラスのメソッド
- last
- item/car
- next/cdr
- append!/+
- リストに要素を追加します。元のオブジェクトが変更されます。
- each
- リストの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。
- len
- null?
- join
- リストの各要素を STRING へ変換し結合します。sep: キーワードが指定された場合は、要素間にセパレータ文字列を挿入します。
- add
- リストに要素を追加し、オブジェクト全体を返します。
- .
- リスとに要素を追加しますが、元の変数は変更されません。
- filter
- ブロックの実行結果が真である要素のみのリストを返します。
- map
Stringクラスのメソッド
- len
- =,!=
- 比較演算。比較対象は、Object::string により変換されるため、どのようなオブジェクトも文字列として比較されます。
- +
- STRING オブジェクトに引数の要素を追加します。
- eval
- =~ / match
- 文字列に対して、引数で指定された正規表現(RQote … 'regex')がマッチすれば、そのマッチした情報(開始位置、終了位置)のリストを返します。
Hashクラスのメソッド
- init
- set
- get
- set?
- keys
- Hashに設定されたすべてのkeyをリストで返します。
- pairs
- Hashに設定されたすべてのkey、value の対をドット対のリストで返します。
- len
- unset
Blockクラスのメソッド
Fileクラスのメソッド
- open
- ファイルをオープンします。mode: でオープンモードを指定します(i: 入力(デフォルト)、o: 出力、a: 追加書き出し)。
- close
- gets
- ファイルを行単位(\nで区切られた行)で読み込みます。
- puts
- flush
- stat
- eof?
- ファイルが EOF に達している場合、非 nil を返します。
- ready?
- ファイルが読み書き可能な状態であれば真を返します。
Arrayクラスのメソッド
- + , append
- Array の最後の要素に値を追加します。要素数は自動拡張します。
- set
- Array の指定位置にオブジェクトを設定します。
- get
- len
- each
- Arrayの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。
最終更新:2009年02月15日 20:42