gcc - tree.def
GCC はすばらしい。地球が宇宙に誇れるソフトウェアだ…って前も書いたか。
ということで 3.4.0 を読み始めました。今度こそ止めない。と思ったら西田さんが解析を始められたらしい。
http://www.wnishida.com/~wmemo/?date=20040427#p04
残念ながら、私が主に興味があるのは RTL ができるまで。真逆だねえ。
さて、 tree.def が読み始めるべきところだと思う。インクルードガードも含めて一切マクロ定義が無いまま、コメントで説明がなされた後に、
DEFTREECODE (RETURN_EXPR, "return_expr", 's', 1)
なんて感じの宣言が続く。これを例えば c-lang.c では、
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, const char tree_code_type[] = { #include "tree.def" 'x', #include "c-common.def" }; #undef DEFTREECODE
などとして利用する。こういうのは大好きだ。
DEFTREECODE の四引数の意味は、 enum のキー、文字列、種類、引数の数。引数だけわかりにくいけど、例えば for は 4 つ。いつもの 3 つと、 4 つ目はブロックだろう。