※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

  • 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 により生成されます。
  • 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
    • 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
    • EXCEPTIONを発生します。
  • 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
    • ミリ秒単位で 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
    • リストの2番目以降の要素を返します。
  • append!/+
    • リストに要素を追加します。元のオブジェクトが変更されます。
  • each
    • リストの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。
  • len
    • リストの長さを返します。
  • null?
    • リストが空のとき真を返します。
  • join
    • リストの各要素を STRING へ変換し結合します。sep: キーワードが指定された場合は、要素間にセパレータ文字列を挿入します。
  • add
    • リストに要素を追加し、オブジェクト全体を返します。
  • .
    • リスとに要素を追加しますが、元の変数は変更されません。
  • filter
    • ブロックの実行結果が真である要素のみのリストを返します。
  • map
    • ブロックの実行結果による要素のリストを返します。

Stringクラスのメソッド

  • len
    • 文字列の長さを返します。
  • =,!=
    • 比較演算。比較対象は、Object::string により変換されるため、どのようなオブジェクトも文字列として比較されます。
  • +
    • STRING オブジェクトに引数の要素を追加します。
  • eval
    • 文字列をスクリプトとして評価します。
  • =~ / match
    • 文字列に対して、引数で指定された正規表現(RQote … 'regex')がマッチすれば、そのマッチした情報(開始位置、終了位置)のリストを返します。

Hashクラスのメソッド

  • init
    • Hashのコンストラクタ。
  • set
    • Hashに値を設定します。
  • get
    • Hashから値を取り出します。
  • set?
    • Hashに値が設定されていれば真を返します。
  • keys
    • Hashに設定されたすべてのkeyをリストで返します。
  • pairs
    • Hashに設定されたすべてのkey、value の対をドット対のリストで返します。
  • len
    • Hashの要素数を返します。
  • unset
    • Hashから値を削除します。

Blockクラスのメソッド

  • eval
    • クロージャを実行します。
  • >>
    • ブロックの実行結果をファイルへ出力します。

Fileクラスのメソッド

  • open
    • ファイルをオープンします。mode: でオープンモードを指定します(i: 入力(デフォルト)、o: 出力、a: 追加書き出し)。
  • close
    • ファイルをクローズします。
  • gets
    • ファイルを行単位(\nで区切られた行)で読み込みます。
  • puts
    • ファイルに書き出します。
  • flush
    • ファイルに書き出した内容をフラッシュします。
  • stat
    • ファイルの状態を表示します。
  • eof?
    • ファイルが EOF に達している場合、非 nil を返します。
  • ready?
    • ファイルが読み書き可能な状態であれば真を返します。

Arrayクラスのメソッド

  • + , append
    • Array の最後の要素に値を追加します。要素数は自動拡張します。
  • set
    • Array の指定位置にオブジェクトを設定します。
  • get
    • Array の指定位置のオブジェクトを返します。
  • len
    • Array の要素数を返します。
  • each
    • Arrayの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。