ソースを公開しています
高々10,000ステップのソースですが。
ソースも洗練されておりません。
しかも、コメントがほとんどありません、、、
それでも、もし興味があれば、ダウンロードして見て下さい。
ソースも洗練されておりません。
しかも、コメントがほとんどありません、、、
それでも、もし興味があれば、ダウンロードして見て下さい。
実行形式の作成は、ビルド方法をご参照ください。
- 20110828
- Hashクラス/Arrayクラスにかわるdict型、vector型を追加。
- 辞書を取得するコマンド各種を追加
- dict-local / dict-object / dict-func / dict-global / dict-class
- eq?コマンド追加。
- connectコマンド(TCPソケットのクライアント側)追加。
- loopコマンド追加。
- injectコマンド追加(Rubyからの輸入)。
- String::int、String::real、String::number を追加(それぞれ数値に変換)。
- Integer に real、<<、>>、||、&&、^^、~~ を追加(それぞれ、realに変換、左シフト、右シフト、ビット or、and、xor、not)。
- 関数呼び出しのパラメータについて、基本的に遅延評価により呼び出すように変更。
- hash.cのバグ修正。
- String::fmt を追加。
- memoiz 関数を作成する memoiz.toy をライブラリに追加。
- 20091101
- String::split メソッド。
- goto コマンド。
- 20090923
- ローカル変数のスコープを抑止する begin コマンド。
- 外部プロセスを起動する exec。
- print/println と対になる read コマンド。
- Block::<< メソッド。
- オブジェクトのメソッド一覧を表示する flat コマンド。
- 20090905
- Fileクラスのコンストラクタ。
- メソッドキャッシュ。Makefile に HAS_GCACHE を指定してください。
- call コマンドのシンタックス変更。メソッドも呼べるように。
- 最適化を少々。
- 20090727
- マニュアルをコマンドリファレンスまで作成。
- コンストラクタの書式を変更。
- Cのスタックを消費しつくすバグを修正。
- デフォルトのインタプリタスタックサイズを変更(1024→4096*4)。
- メモリ不足時の処理を変更。
- 20090706
- case コマンドのシンタックス変更。
- cond コマンド追加。
- lazy コマンド追加。
- Object::string のバグフィックス。
- Object::method? メソッド追加。メソッドをサーチします。
- Hash::each メソッド追加。
- unknown バグフィックス。
- あと、マニュアル(途中ですが)追加。doc の下においてあります。
- 20090517
- 遅延評価もどきの機能を導入してみた。竹内(たらい回し)関数が一瞬で終わる! サンプルを参照ください。正直、これほど効果があるとは思わなかった。
- 20090510
- rubyに似たイテレータ構文を導入。
- そのた色々変更。
- 20090308
- trace コマンドを追加。
- exit コマンドを追加。
- デフォルトのオプティマイズオプションを -O3 に変更。
- イベントドリブンに実行する対話形式インタプリタを追加。lib/interp.toy で、toysh から "interp" として実行する。SysQueue を使って多重にイベントを扱う仕組み。
- List:.. を追加。1 .. 100 で 1 から 100 までのリストを表します。
- 20090301
- msort (merge sort) のサンプルをライブラリに追加。
- List::>> (shift), List::<< (unshift), List::->> (pop), List::<<- (push) を追加。
- 20090222
- lsort のバグ修正。
- to_string_call にあった奇妙なバグを修正。
- toysh で、result の出力文字数のリミットを設定。
- 20090221
- if 文のコンディションがブロック以外でも動くよう文法を拡張した。
- List::flat、Array::list、String::>,>=,<,<= メソッドを追加。
- setup.toy を整理し、$LIB_PATH 配下に配置した。
- global.c へ各定数を分離した。
- 20090219
- unknown を実装。$LIB_PATH から自動的に 関数名 + ".toy" ファイルをロードし、実行します。
- 全体的にイテレータのシンタックスを変更 var: x -> in: x にしてみた。Ruby 的なイテレータを実装すべきなんだろうな。
- 20090215
- List::eval メソッド追加。
- sleep コマンド追加。
- Block::>> メソッド追加(setup.toy 内)
- setvar コマンド追加。これに伴い、defvar コマンドの動作を変更。
- setup.toy ファイルのインストール先を変更(/usr/local/lib/toy)。
- file コマンド追加。
- exists? コマンド追加。
- $HOME/.toyrc ファイル読み込み。
- List::filter メソッド追加。
- List::map メソッド追加。
- 20080904
- new コマンドの糖衣構文を追加。
- キーワード引数の糖衣構文を追加。
- Hash/Array のコンストラクタを作成。
- 20080831
- String::sub 部分文字列取得のメソッド追加。
- String::=~ のバグ修正。
- init メソッドでパラメータを渡せるように。
- Object::string methods.c/commands.c 内部の ::string 呼び出しをオブジェクトのメソッド呼び出しに変更。
- 20080824
- 正規表現による文字列マッチングができるようになりました。
- 20080823
- 原始的な install を書きました。
- pwd/cd/alias コマンドを書きました。
- グローバル変数に ENV 変数をセットアップ。VERSION 文字列をセットアップ。
- 20080822
- sdirコマンド--スクリプトの一覧を返す関数--を追加。
- List::append! のバグを修正。
- 20080819
- 論理演算コマンド ! (not) / and / or を追加。
- load コマンド追加。stack-trace でも load したファイルのファイル名が出るようにした。
- そのほか細々とした最適化(根本的な効果は非常に薄かった)。
- 20080816
- trap コマンドでシグナルを扱えるようになった。
- stack-trace コマンドでその時点のスタックトレースを取得できる。
- function/method でクロージャの変数を参照できるようになった。
- 20080813
- exception 発生時に、グローバル変数の '@stack-trace' にスタックトレースを出力するようになりました。仕様としては良くないですが、とりあえず実装してみたものです。
- 20080808
- print / println が、@out 変数、stdout 変数の File オブジェクトに出力するようになった。
- argv をローカルからグローバルのスロットに移動し、ARGV に変更。
- グローバルスロットの stdin / stdout / stderr を初期生成。
- 20080805
- File クラスの追加。
- Array クラスの追加。
- get マクロ (ex. [$objec get $key] → $obj,$key に展開。
- 引数展開のアルゴリズムを改良。
- 20080727
- Hash の追加。
- コンストラクタ(init メソッド) を呼べるように。
- 20080726
このwikiの更新情報RSS