あ伊藤です.

> たわむれに,簡単なのを書いてみました.

あまり反響がなかったようなので (^_^; ちょっと方向を変えて...

--------------------------
typedef long clock_t;

typedef struct tms {
	clock_t	tms_utime;
	clock_t	tms_stime;
	clock_t	tms_cutime;
	clock_t	tms_cstime;
} times_t;

extern int errno;

int times(times_t*);
--------------------------

こんな感じの記述から,拡張モジュールのソースを生成するものを
書いてみました.C の宣言文のほぼ完全なパーザを含んでいます.
http://raven.bu.edu/~aito/genext.tar.gz です.

上の例には struct が入っていますが,この例を genext にかけると,
C_struct_tms というクラス(Struct のインスタンス)を自動生成
します.また,times()という関数と $errno という大域変数を定義
します.

問題点は沢山あるのですが,

・C の配列が扱えない.(痛い)
・配列を含むstructが扱えない.(痛い)
・union, enum が扱えない.(enum は何とかなりそうですね.union は厳しい)
・関数の引数には,単純な型の他に
    struct へのポインタ
    char*
    FILE*
  だけが使えて,その他は使えない.
・struct であるような大域変数が使えない.(structへのポインタはOK)
・グローバルな関数だけが宣言できる.モジュール関数も宣言できるよう
  にしたい.(実現は簡単ですが,ソースの書式で悩んでます)

どういう仕様にしたら良いか迷っているので,興味がある方は試してみてください.

# 「cc -E -I/usr/X11R6/include Xlib.h | genext xlib
#   で,Xlib 拡張モジュールが自動生成できる」
# という野望を抱いていますが... (^_^;
--
aito