v0.31 Release Note
Last updated:
|
|
Created:
| 2009-06-18
|
by Fumisky Wells
- ユーザ定義メンバ関数、コンストラクタ、デストラクタ、が書けるようになりました!
- これに伴い、予約語 init, term, this を追加しました。
- これに伴い、VM に this レジスタを追加しました。
- これに伴い、アドレッシングモードに THIS を追加しました。
メンバデータを VM が直接扱うようにします。
アドレッシングモードを表現するのに 2bit いっぱい使っていたため、
THISの追加に伴い GLOBAL を廃止、ABSOLUTE に統合しました。
ただし、コード生成までは必要なので、残しています。実行時にのみ GLOBAL
が無くなった、ということです。
仕様変更
map が使えません。map[str] とします。
その他
- パッケージ名印字 Type_pkg::name() の修正。
- Obj::find() の戻り値を NULL から &g_null_obj に変更。
- jjAggregate::concat() を追加(でも使ってない ^^;)。
- クラス定義時の自動的な前方参照を可能にするため、すべてのシンボルの記号表への登録を Gather_symbol で行うことにしました。
- クラス定義の意味解析時、スコープとしてはカレントでありつつも、同時にメンバのクラス型への登録である、という状況に適切に対応するようにしました(-> point_p)。
- 引数の型は仕様としては readonly + 参照、ですが、意味解析中の
データ型としての実装は単なる型としました。
引数の型整合性チェックが、ユーザクラス定義のメンバと隠れメンバ関数との比較
において簡単になるためです。
- map[T].keys(), list[T].revserse(), list[T].sort(), list[str]:str.split(), list[str].substr.split() にて、戻り値の型が総称性の場合のパラメータの渡し方が間違っていたのを直しました。
- &g_type_this 型名を this -> this.type に変更。
- abort() の代わりに assert(false) としました。Googleコーディングスタイルガイドが参考になりました。