history

青木日記 RSS

<前の日 | この月 | 次の日>

2007-05-12

ふつうのコンパイラをつくろう

「ふつぱいら」→『ふつうのコンパイラをつくろう』です。 「ふつりな」「ふつける」に続く「ふつう」シリーズ第三弾。 そういえばこの日記ではちゃんと書いたことがないので、 概要を書いておきたい。

最初は『ふつうのBinary 2.0』がやりたかったわけですよ。 ちょうどそのころ Binary 2.0 が流行ってたから。 でも「そんなの売れませんー」と言われたので しょうがなく『ふつうのリンカ』に変えたわけです。 そしたら「それはよけい売れませんー」と言われたので、 しょうがなくパーサとコードジェネレータを加えて『ふつうのコンパイラ』にしたわけだ。

内容は、一冊かけてひたすらにコンパイラを書く。 ソース言語は Cflat と言って、C のサブセット +ちょっとだけ Java、みたいな言語。 ポインタあり GC なし、OOP と例外は未定。浮動小数点数演算も考え中。 C そのままだと文法とかが無駄に複雑なので、 一般的でない部分をカットして単純化する予定。 ABI は原則として C に準ずる (既存の C ライブラリがそのままリンクできる、というくらいの意味)。

パースの話はもう書き飽きたので適当にやる。 むしろ calling convention とかリンクとか、 バリバリにプラットフォーム依存の話を書きたい。

コンパイラの記述言語は Java。 パーサは JavaCC を使う。jjtree は使わない。

対象プラットフォームは i686/Linux。 最初は Windows もやりたいなーと思ったけどやめた。 自分の経験が少ないし、複数いっぺんに書くとわかりにくい。 それに『ふつりな』があるのでシリーズ的には Linux かなと。

肝心の出版時期はおもいきり未定。 今回は原稿以前にコンパイラを書くだけでもけっこう大変なので、 いつ出るのかよくわかりません。

(21:22)

Dock のウネウネ動作の研究

OS X の Dock のようなものを JavaScript と CSSで実装。 うーん、確かに Dock ぽく動いてる。 HTML でもここまでできるんだなあ。

と誉めつつも、これはビミョーに本物と動きが違うと文句を付けておきたい。 本物の Dock は左側からポインタを当てた瞬間には左端が動かないのである。 で、ポインタを右側に動かしていくと、 左から 2 つめのアイコンにかかったあたりでやっと左端がのびはじめ、 3 つめのアイコンでバーが一番長い状態になる。 そのままずーっと右のほうに動かしていくと、 右から 3 つめのアイコンで右端が縮みはじめて、 一番右のアイコンをポイントしたときには右端は最短位置に戻っている。

これに対し上記の CSS による Dock だと、 ポインタが当たった瞬間に両側が同じようにのびている。 この動作だとアイコンが拡大縮小してるというより バーがのびちぢみしてる感じになって、 いまいち快感が得られない。

(03:05)

本日のツッコミ(全2件) [ツッコミを入れる]
ryo (2007-05-15 10:20)

「ふつぱいら」楽しみに待たせていただきます.
でもどっちかというとCflatが気になります.
同じ名前の言語が既に存在してるみたいですけど今回のは青木さんオリジナルと考えてよいのでしょうか?

青木 (2007-05-24 08:59)

あ、cflat ってもうあったんですか。たぶんぜんぜん別の言語です。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS