「ソース公開」の編集履歴(バックアップ)一覧はこちら
「ソース公開」(2012/07/16 (月) 18:44:24) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
** ソースを公開しています
高々10,000ステップのソースですが。
ソースも洗練されておりません。
しかも、コメントがほとんどありません、、、
それでも、もし興味があれば、ダウンロードして見て下さい。
実行形式の作成は、[[ビルド方法]]をご参照ください。
-[[20120716>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20120716.tar.gz]]
-- 多倍長整数が扱えるようになりました。
-- 多値代入が出来るよう、set コマンドの書式を拡張しました。
-[[20120610>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20120610.tar.gz]]
-- コルーチン機能の実装(コルーチンでCスタックを使用する処理を書きました)。
-- データタイプを判断するためのコマンドを追加。
--- symbol?/nil?/list?/integer?/real?/string?/rquote?/block?/closure?/func?/object?/dict?/vector?
-- パーサに ':' マクロを追加。以下の様に使います(→が ':' マクロを使用した例):
--- [[[self] vars] len] + 1 → self : vars : len : + 1
-- スコープのデータ構造・処理を変更。これにより、Yコンビネータが正しく動くようになりました。
-- 64ビット環境での動作。Linux、FreeBSD での64ビットOSに対応しました。
-[[20110828>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20110828.tar.gz]]
--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>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20091101.tar.gz]]
--String::split メソッド。
--goto コマンド。
-[[20090923>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090923.tar.gz]]
--ローカル変数のスコープを抑止する begin コマンド。
--外部プロセスを起動する exec。
--print/println と対になる read コマンド。
--Block::<< メソッド。
--オブジェクトのメソッド一覧を表示する flat コマンド。
-[[20090905>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090905.tar.gz]]
--Fileクラスのコンストラクタ。
--メソッドキャッシュ。Makefile に HAS_GCACHE を指定してください。
--call コマンドのシンタックス変更。メソッドも呼べるように。
--最適化を少々。
-[[20090727>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090727.tar.gz]]
--マニュアルをコマンドリファレンスまで作成。
--コンストラクタの書式を変更。
--Cのスタックを消費しつくすバグを修正。
--デフォルトのインタプリタスタックサイズを変更(1024→4096*4)。
--メモリ不足時の処理を変更。
-[[20090706>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090706.tar.gz]]
--case コマンドのシンタックス変更。
--cond コマンド追加。
--lazy コマンド追加。
--Object::string のバグフィックス。
--Object::method? メソッド追加。メソッドをサーチします。
--Hash::each メソッド追加。
--unknown バグフィックス。
--あと、マニュアル(途中ですが)追加。doc の下においてあります。
-[[20090517>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090517.tar.gz]]
--遅延評価もどきの機能を導入してみた。竹内(たらい回し)関数が一瞬で終わる! [[サンプル]]を参照ください。正直、これほど効果があるとは思わなかった。
-[[20090510>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090510.tar.gz]]
--rubyに似たイテレータ構文を導入。
--そのた色々変更。
-[[20090308>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090308.tar.gz]]
--trace コマンドを追加。
--exit コマンドを追加。
--デフォルトのオプティマイズオプションを -O3 に変更。
--イベントドリブンに実行する対話形式インタプリタを追加。lib/interp.toy で、toysh から "interp" として実行する。SysQueue を使って多重にイベントを扱う仕組み。
--List:.. を追加。1 .. 100 で 1 から 100 までのリストを表します。
-[[20090301>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090301.tar.gz]]
--msort (merge sort) のサンプルをライブラリに追加。
--List::>> (shift), List::<< (unshift), List::->> (pop), List::<<- (push) を追加。
-[[20090222>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090222.tar.gz]]
--lsort のバグ修正。
--to_string_call にあった奇妙なバグを修正。
--toysh で、result の出力文字数のリミットを設定。
-[[20090221>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090221.tar.gz]]
--if 文のコンディションがブロック以外でも動くよう文法を拡張した。
--List::flat、Array::list、String::>,>=,<,<= メソッドを追加。
--setup.toy を整理し、$LIB_PATH 配下に配置した。
--global.c へ各定数を分離した。
-[[20090219>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090219.tar.gz]]
--unknown を実装。$LIB_PATH から自動的に 関数名 + ".toy" ファイルをロードし、実行します。
--全体的にイテレータのシンタックスを変更 var: x -> in: x にしてみた。Ruby 的なイテレータを実装すべきなんだろうな。
-[[20090215>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090215.tar.gz]]
--List::eval メソッド追加。
--sleep コマンド追加。
--Block::>> メソッド追加(setup.toy 内)
--setvar コマンド追加。これに伴い、defvar コマンドの動作を変更。
--setup.toy ファイルのインストール先を変更(/usr/local/lib/toy)。
--file コマンド追加。
--exists? コマンド追加。
--$HOME/.toyrc ファイル読み込み。
--List::filter メソッド追加。
--List::map メソッド追加。
-[[20080904>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080904.tar.gz]]
--new コマンドの糖衣構文を追加。
--キーワード引数の糖衣構文を追加。
--Hash/Array のコンストラクタを作成。
-[[20080831>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080831.tar.gz]]
--String::sub 部分文字列取得のメソッド追加。
--String::=~ のバグ修正。
--init メソッドでパラメータを渡せるように。
--Object::string methods.c/commands.c 内部の ::string 呼び出しをオブジェクトのメソッド呼び出しに変更。
-[[20080824>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080824.tar.gz]]
--正規表現による文字列マッチングができるようになりました。
-[[20080823>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080823.tar.gz]]
--原始的な install を書きました。
--pwd/cd/alias コマンドを書きました。
--グローバル変数に ENV 変数をセットアップ。VERSION 文字列をセットアップ。
-[[20080822>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080822.tar.gz]]
--sdirコマンド--スクリプトの一覧を返す関数--を追加。
--List::append! のバグを修正。
-[[20080819>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080819.tar.gz]]
--論理演算コマンド ! (not) / and / or を追加。
--load コマンド追加。stack-trace でも load したファイルのファイル名が出るようにした。
--そのほか細々とした最適化(根本的な効果は非常に薄かった)。
-[[20080816>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080816.tar.gz]]
-- trap コマンドでシグナルを扱えるようになった。
-- stack-trace コマンドでその時点のスタックトレースを取得できる。
-- function/method でクロージャの変数を参照できるようになった。
-[[20080813>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080813.tar.gz]]
-- exception 発生時に、グローバル変数の '@stack-trace' にスタックトレースを出力するようになりました。仕様としては良くないですが、とりあえず実装してみたものです。
-[[20080808>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080808.tar.gz]]
-- print / println が、@out 変数、stdout 変数の File オブジェクトに出力するようになった。
-- argv をローカルからグローバルのスロットに移動し、ARGV に変更。
-- グローバルスロットの stdin / stdout / stderr を初期生成。
-[[20080805>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080805.tar.gz]]
-- File クラスの追加。
-- Array クラスの追加。
-- get マクロ (ex. [$objec get $key] → $obj,$key に展開。
-- 引数展開のアルゴリズムを改良。
-[[20080727>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080727.tar.gz]]
-- Hash の追加。
-- コンストラクタ(init メソッド) を呼べるように。
-[[20080726>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080726.tar.gz]]
----
** ソースを公開しています
高々10,000ステップのソースですが。
ソースも洗練されておりません。
しかも、コメントがほとんどありません、、、
それでも、もし興味があれば、ダウンロードして見て下さい。
最新のソースは、GitHub からでも取得が出来ます。
https://github.com/mitchan0321/toy
実行形式の作成は、[[ビルド方法]]をご参照ください。
-[[20120716>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20120716.tar.gz]]
-- 多倍長整数が扱えるようになりました。
-- 多値代入が出来るよう、set コマンドの書式を拡張しました。
-[[20120610>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20120610.tar.gz]]
-- コルーチン機能の実装(コルーチンでCスタックを使用する処理を書きました)。
-- データタイプを判断するためのコマンドを追加。
--- symbol?/nil?/list?/integer?/real?/string?/rquote?/block?/closure?/func?/object?/dict?/vector?
-- パーサに ':' マクロを追加。以下の様に使います(→が ':' マクロを使用した例):
--- [[[self] vars] len] + 1 → self : vars : len : + 1
-- スコープのデータ構造・処理を変更。これにより、Yコンビネータが正しく動くようになりました。
-- 64ビット環境での動作。Linux、FreeBSD での64ビットOSに対応しました。
-[[20110828>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20110828.tar.gz]]
--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>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20091101.tar.gz]]
--String::split メソッド。
--goto コマンド。
-[[20090923>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090923.tar.gz]]
--ローカル変数のスコープを抑止する begin コマンド。
--外部プロセスを起動する exec。
--print/println と対になる read コマンド。
--Block::<< メソッド。
--オブジェクトのメソッド一覧を表示する flat コマンド。
-[[20090905>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090905.tar.gz]]
--Fileクラスのコンストラクタ。
--メソッドキャッシュ。Makefile に HAS_GCACHE を指定してください。
--call コマンドのシンタックス変更。メソッドも呼べるように。
--最適化を少々。
-[[20090727>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090727.tar.gz]]
--マニュアルをコマンドリファレンスまで作成。
--コンストラクタの書式を変更。
--Cのスタックを消費しつくすバグを修正。
--デフォルトのインタプリタスタックサイズを変更(1024→4096*4)。
--メモリ不足時の処理を変更。
-[[20090706>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090706.tar.gz]]
--case コマンドのシンタックス変更。
--cond コマンド追加。
--lazy コマンド追加。
--Object::string のバグフィックス。
--Object::method? メソッド追加。メソッドをサーチします。
--Hash::each メソッド追加。
--unknown バグフィックス。
--あと、マニュアル(途中ですが)追加。doc の下においてあります。
-[[20090517>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090517.tar.gz]]
--遅延評価もどきの機能を導入してみた。竹内(たらい回し)関数が一瞬で終わる! [[サンプル]]を参照ください。正直、これほど効果があるとは思わなかった。
-[[20090510>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090510.tar.gz]]
--rubyに似たイテレータ構文を導入。
--そのた色々変更。
-[[20090308>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090308.tar.gz]]
--trace コマンドを追加。
--exit コマンドを追加。
--デフォルトのオプティマイズオプションを -O3 に変更。
--イベントドリブンに実行する対話形式インタプリタを追加。lib/interp.toy で、toysh から "interp" として実行する。SysQueue を使って多重にイベントを扱う仕組み。
--List:.. を追加。1 .. 100 で 1 から 100 までのリストを表します。
-[[20090301>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090301.tar.gz]]
--msort (merge sort) のサンプルをライブラリに追加。
--List::>> (shift), List::<< (unshift), List::->> (pop), List::<<- (push) を追加。
-[[20090222>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090222.tar.gz]]
--lsort のバグ修正。
--to_string_call にあった奇妙なバグを修正。
--toysh で、result の出力文字数のリミットを設定。
-[[20090221>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090221.tar.gz]]
--if 文のコンディションがブロック以外でも動くよう文法を拡張した。
--List::flat、Array::list、String::>,>=,<,<= メソッドを追加。
--setup.toy を整理し、$LIB_PATH 配下に配置した。
--global.c へ各定数を分離した。
-[[20090219>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090219.tar.gz]]
--unknown を実装。$LIB_PATH から自動的に 関数名 + ".toy" ファイルをロードし、実行します。
--全体的にイテレータのシンタックスを変更 var: x -> in: x にしてみた。Ruby 的なイテレータを実装すべきなんだろうな。
-[[20090215>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20090215.tar.gz]]
--List::eval メソッド追加。
--sleep コマンド追加。
--Block::>> メソッド追加(setup.toy 内)
--setvar コマンド追加。これに伴い、defvar コマンドの動作を変更。
--setup.toy ファイルのインストール先を変更(/usr/local/lib/toy)。
--file コマンド追加。
--exists? コマンド追加。
--$HOME/.toyrc ファイル読み込み。
--List::filter メソッド追加。
--List::map メソッド追加。
-[[20080904>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080904.tar.gz]]
--new コマンドの糖衣構文を追加。
--キーワード引数の糖衣構文を追加。
--Hash/Array のコンストラクタを作成。
-[[20080831>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080831.tar.gz]]
--String::sub 部分文字列取得のメソッド追加。
--String::=~ のバグ修正。
--init メソッドでパラメータを渡せるように。
--Object::string methods.c/commands.c 内部の ::string 呼び出しをオブジェクトのメソッド呼び出しに変更。
-[[20080824>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080824.tar.gz]]
--正規表現による文字列マッチングができるようになりました。
-[[20080823>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080823.tar.gz]]
--原始的な install を書きました。
--pwd/cd/alias コマンドを書きました。
--グローバル変数に ENV 変数をセットアップ。VERSION 文字列をセットアップ。
-[[20080822>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080822.tar.gz]]
--sdirコマンド--スクリプトの一覧を返す関数--を追加。
--List::append! のバグを修正。
-[[20080819>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080819.tar.gz]]
--論理演算コマンド ! (not) / and / or を追加。
--load コマンド追加。stack-trace でも load したファイルのファイル名が出るようにした。
--そのほか細々とした最適化(根本的な効果は非常に薄かった)。
-[[20080816>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080816.tar.gz]]
-- trap コマンドでシグナルを扱えるようになった。
-- stack-trace コマンドでその時点のスタックトレースを取得できる。
-- function/method でクロージャの変数を参照できるようになった。
-[[20080813>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080813.tar.gz]]
-- exception 発生時に、グローバル変数の '@stack-trace' にスタックトレースを出力するようになりました。仕様としては良くないですが、とりあえず実装してみたものです。
-[[20080808>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080808.tar.gz]]
-- print / println が、@out 変数、stdout 変数の File オブジェクトに出力するようになった。
-- argv をローカルからグローバルのスロットに移動し、ARGV に変更。
-- グローバルスロットの stdin / stdout / stderr を初期生成。
-[[20080805>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080805.tar.gz]]
-- File クラスの追加。
-- Array クラスの追加。
-- get マクロ (ex. [$objec get $key] → $obj,$key に展開。
-- 引数展開のアルゴリズムを改良。
-[[20080727>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080727.tar.gz]]
-- Hash の追加。
-- コンストラクタ(init メソッド) を呼べるように。
-[[20080726>http://www31.atwiki.jp/toy-lang?cmd=upload&act=open&pageid=12&file=toy-20080726.tar.gz]]
----