トップ 最新 追記   RSS 1.0 FEED  

Journal InTime


2003-09-04 (Thu) [長年日記]

_ osX Bar

osX Bar なるものを発見してインストールした。

なかなかクールだけど、マウスが通過してアイコンが大きくなると他のウィンドウの陰に 隠れてしまって見にくかったりするので、タスク切り替えには結局標準のパネルの方を使っている。

スクリーンショット


2003-09-16 (Tue) [長年日記]

_ Sather.NET?

最近.NET(というかmonoだけど)をターゲットにしたSatherコンパイラを書き始めた。

とりあえず、

class MAIN is
   main is
      #OUT + "hello world\n";
   end
end

くらいはコンパイルできるようになったが、まだまだ先は長い。

仕様書を読んでいると気が遠くなりそうなので、あまり読まないことにする(それでいいのか)。 戻り値の有無によるoverloadはどうしようとか、iteratorはどうやって実装しよう (やっぱり外部イテレータを自動生成するんだろうか)とか、悩みはつきない。

その前に、実はまだif文すら実装してなかったりして、てへ。


2003-09-19 (Fri) [長年日記]

_ foreach

C#のforeachは、一つのクラスに対しては、一種類の繰り返ししかサポートしないので、 不便だ。

Rubyのforも同じだけど、Rubyの場合はイテレータを使えば、複数の繰り返し (each_lineとeach_byte)とかをサポートできる。

やっぱり、CLUみたいに、

foreach (string x in list.GetEnumerator()) {
   ...
}

とできるようにするべきだったんじゃないだろうか。 (つまり、foreachには、IEnumerableじゃなくて、IEnumeratorを渡すことになる。)

そうすれば、一つのクラスにIEnumeratorを返すメソッドを複数用意すれば、 複数の繰り返しをサポートできるのに。

あ、IEnumeratorをサポートするクラスにthisを返すGetEnumerator()を用意して、 IEnumerableにすればいいのか。 しかし、それもなあ。

ちなみに、Satherのイテレータは

loop
  item1 ::= array1.elt!;
  item2 ::= array2.elt!;
  ...
end

のように複数の繰り返しを並行して行うことができるのでもっと自由度が高い。 (けど、その分動作がわかりにくいきらいがある。)


2003-09-20 (Sat) [長年日記]

_ 両親学級

11月に第二子が産まれるので、両親学級に行った。 (第一子の時は行かなかったので。)

男はラクでいいなあ。


2003-09-25 (Thu) [長年日記]

_ STR

Satherの文字列はimmutable(Sather的な意味じゃなくて普通の意味で)じゃないことに 気付いた。 うーん、どうしよう。


2003-09-29 (Mon) [長年日記]

_ Sather

今のところ、以下の項目をだいたい実装。 (「だいたい」というところがミソだ。)

  • abstract classの定義
  • (reference) classの定義
  • 属性の定義
  • ルーチンの定義
  • ローカル変数の宣言文
  • 代入文(ローカル変数・引数・メソッド呼び出し)
  • if文
  • return文
  • case文
  • typecase文
  • loop文
  • protect文
  • raise文
  • 式文
  • 真偽値リテラル式
  • 文字リテラル式
  • 文字列リテラル式
  • 整数リテラル式
  • self式
  • ローカル変数参照式
  • ルーチン呼び出し式(routineのみ)
  • void式
  • void検査式
  • new式
  • 生成式(#FOO)
  • and式
  • or式
  • 構文糖式
  • while!式
  • until!式
  • break!式
  • exception式

まだまだ大物がたくさん残っている。

  • parameterrized type
  • code inclusion
  • iterator

あたりが一番大変かなあ。 (parameterrized typeとcode inclusionはコピーですませればけっこうラクにできるかも。)

iteratorはmonoのC#の実装が参考になりそう。


2003-09-30 (Tue) [長年日記]

_ 今日のSather

  • const
  • shared attr
  • code inclusionの原型(= 構文木のdeep copy)

を実装。

Satherには普通の継承はないけど、C#などとの相互運用を考えると普通の継承も ないと困るだろうなあ。 でも言語仕様を変更する拡張は慎重に考えなきゃ。