2007-04-01から1ヶ月間の記事一覧

class

xtalはクラスベースのオブジェクト指向言語です。試行錯誤中はプロトタイプベースだったりした時期もあったのですが、クラスベース全盛の昨今では受け入れられないだろうと思いなおしクラスベースとなりました。*1xtalでclassはclass式で生成します。インス…

finalizer

上述のyield問題を解決するためにした修正で、ついでにfinalizerの実装もできました。 *1 オブジェクトがgcによって削除される際、finalizeメソッドが呼ばれるようになります。 Foo: class{ finalize: method(){ "Foo::finalize!".p; } } foo: Foo(); // Foo…

xtalと「継続」

xtalは「継続」を未サポートです。 xtalは「継続」の実装が可能*1と思うのですが、「継続」って役立つもんですかね?Rubyを調べたところ、「あるけど無くしたい」っぽいんですね。 *1:C++の関数を経由するとムリかな…

yield

Pythonのyield文のドキュメント見てて気付きました。 http://www.python.jp/doc/2.4/ref/yield.html yield 文は、try ... finally 構造の try 節中で使うことはできません。ジェネレータが常に実行再開されるとは限らないので、finally ブロックが常に実行さ…

書式化した文字列を作成する

xtalは0.9.3現在、文字列の機能が非常に弱いです。 主にゲーム用のスクリプトだからということで後回しにしていますが、これからなんとかしていきたいところの一つです。そんなxtalで、既に実装されている便利な文字列の機能として、書式化した文字列を作成…

dofun

dofunは、定義して即座に実行される関数です。 ret: dofun(i: 33){ if(i<2) return 1; return callee(i-2) + callee(i-1); } ret.p; dofunは必然的に無名関数となりますが、calleeを使うことで再帰も出来ます 最初の引数はデフォルト引数が使われます。あな…

設定ファイル代わりにxtalを使ってみようの回

luaは最初設定ファイル記述用の言語として書かれたそうです。xtalも若干そんな契機で生まれています。config.xtal // 連想配列をexportする export [ "width": 100, "height": 200, "values": [10, 20, 30, 40, 50], "assc_values": ["test":50, 20:60, "foo…

Any::p

xtalの全てのオブジェクトの基底クラスは「Any」という名前です。他の言語では大抵「Object」ですが、xtalはタイプ数の関係でAnyに決めました。Anyには「p」というメソッドが定義されています。Rubyのpと同じように、主にデバッグ用途にオブジェクトを文字列…

Threadを実装したい

xtalは既に軽量Threadであるfiber*1を実装しています。この軽量Threadは、役には立つものの、マルチCPUの恩恵を授かる事はできません。 PS3等を見て分かるとおり、マルチCPUはこれから普通にあるものとなるのは確実なので、最低限の対応*2として、native thr…

メモリ

ゲーム開発では、ユーザはメモリ確保をコントロールしたいと望む声があるかと思います。 xtalはその声に応えます。xtal::initialize()を呼ぶ前に、xtal::set_user_malloc(void* (*malloc)(size_t), void (*free)(void*));を呼ぶことで、xtalが使う全てのメモ…

以前公開した、pong風ゲームサンプルプログラムの再公開

前と言語仕様が変わったので、手直ししました。 http://www.h5.dion.ne.jp/~putora/pong.zip

Google Codeにプロジェクトを作成

http://code.google.com/p/xtal-language/ ちょっとプロジェクトっぽくなりました。

復帰

暇が無さすぎて、まったく更新できませんでした。 もし、興味をもたれていた方いましたら申し訳ありません。DOFI-BLOGの方もほとんど放置状態になってしまいました。 これからまた以前のように両方頑張って更新していこうと思います。