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

Map

Rubyで、Hash*1に順序がつくという実装になるかもしれないという話を聞きました。自分も色々考えた結果、「Mapは順序付きの方が使い勝手が良い」という結論に達し、XtalのMapは順序付きであることを保証することにしました。 ここでの順序とは、登録した順で…

ポインタ -> 整数

Xtalの実装を見た人は、整数(int_t)からポインタへのキャストがあることを気にしてる人がいるかもしれません。 これは一応問題が無いということになってます。int_tの定義は次のようになっており、ポインタと同じ大きさの整数が自動的に選ばれ、int_tとしてt…

PEG あれから

迷走中。配列に結果を格納するような仕様だと、memoizeの際にコストがかかりすぎるんで、Listにしてみたけども、バックトラックがすごい勢いで起こる場合以外はListのノード生成のコストの方が高くついたのでやっぱり配列に戻してみたり、駆動の部分を仮想マ…

offsetof

offsetofを使うと、gcc3.3は警告を吐くんですが、これはどうするべきなんでしょうか。

Immutableなイテレータ

Xtalのイテレータは、ImmutableであってもOKなように設計されています。 前回の説明では簡単のために、「iter_nextの最初の戻り値は次があるかどうか」、と書いたのですが、正確に言うと「次があるなら続きを返せるイテレータを返す」ということになっていま…

一文字の文字列は必ずinternされるように

しました。 さらに、小さい文字列は変数に埋め込む形にしました。 struct BASE{ enum{ SMALL_STRING_MAX = (sizeof(int_t) / sizeof(char_t)) }; struct SmallString{ char_t buf[SMALL_STRING_MAX]; }; int_t type_; union{ int_t value_; float_t fvalue_;…

棒ネコアクション

久しぶりにFlashゲームを、向こうのブログに追加しました。 棒ネコアクション http://ishi.blog2.fc2.com/blog-entry-212.htmlこれを作っていたため、Xtalのバグ修正がここ数日遅れておりました。すいません。Flash CS 3になって、大きく変わった所為でちょ…

gby

http://www.rubyist.net/~matz/20070806.html#p01 Matz日記 Groovyの(Javaにない)演算子について。「*.」や「.@」についてはどこまでうれしいのかよく分からないけど、レシーバがnilならnilを返すメソッド呼び出し「?.」や、メソッドを取り出す「.&」は、ち…

lzy

ふたたびMatzにっきより http://www.rubyist.net/~matz/20070807.html#p01 _ [Ruby] Lazy Collectionへの第一歩になるかどうか自信は無いのだが、 1.9でイテレータ系メソッドにブロックを渡さない時に返される Enumerable::Enumeratorクラスに、外部イテレー…

Xtal PEG

ちょこちょこと実装を進めています。ローカルでは、文字列分割パーサが次のように書けるところまで出来ました。 make_split_parser: fun(patt){ elem: peg::join( (peg::anych - patt)*0 ); return elem >> (-patt >> elem)*0; } split_p: make_split_parser…

libの新機能

これらの機能も0.9.7.0から入っています。libは正式に「クラスの一種である」ということにしましたので、libを他のクラスにmix-inすることが出来るようになりました。 lib::foo: 100; filelocal.inherit(lib); //定義されていない変数はfilelocalから探され…

日本語の識別子

特に禁止する理由も無いため、0.9.7.0から許可することにしました。 Foo: class{ フー: method(){ callee.p; } } Foo().フー; //=> Foo::フー

Xtal-Group

Google Groupに議論やバグ報告の場を設けました。 http://groups.google.co.jp/group/xtal-group?hl=jaもちろんこれまでどおり、この日記にコメントでの意見もOKです。

|a, b| expr;

Xtalは、fun(a, b) expr; で関数式を記述できますが、|a, b| expr;という書式でも関数を作ることが出来ます。0.9.7.0より前では、fun(a, b) expr; と |a, b| expr; に違いは無かったのですが、0.9.7.0からは|a, b| expr; の挙動を変更しました。 a, b expr; …

正規表現

Xtalは正規表現を持つ予定はありません。 正規表現の代わりに PEGのパーサ生成器 を組み込みで持つ予定でいます。WikipediaのPEGの説明ページ http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95 >利点 > PEG は正規表現…

0.9.7.1

C++レベルで、名前付き引数を二つで関数呼び出しすると停止するバグ修正

ゆろさんへの回答

返事が遅れて申し訳ありません。 Allegroとの格闘が長引いてしまいました。 0.9.5.3と、今回の0.9.7.0は、C++側の使い方が結構変わってしまいました。これも申し訳ありません。 今現在、マルチバイト文字をベースにしていますが、defineオプションでもいいの…

サンプルゲーム

サンプルゲームも今回の変更に追随するよう書き換えました。 今回からSDLを止めて、Allegroライブラリを使用するようにしました。VC8とmingwでコンパイル、実行出来るのを確認してます。

今回行ったC++側の変更

これまで、Anyという「参照を模した型」を通じてやり取りしてきましたが、今度からAnyPtr (SmartPtr) という「ポインタを模した型」を通じてやり取りするように変更しました。

0.9.7.0 公開

やっと準備整いました。今回から、C++側の使い方を結構変えてしまいました。申し訳ありません。ダウンロードは http://code.google.com/p/xtal-language/downloads/list から。変更点 C++のインターフェイスを大幅変更 toplevelは、filelocalに名前変更。 識…

LL Spritに行ってきました

こういうイベントは出るのはもちろん、行くのも初めてで、とても緊張しました。こんなイベントに呼んでいただき、とても光栄でした。ありがとうございました。何か失礼なことをしてましたら、それは緊張の所為だったと言う事でお許しいただきたいです。イベ…