2010-08-25

declaratorの説明しにくさ

declaratorが説明しづらい。specifierは簡単だ。基本的にキーワードか識別子だからだ。しかし、declaratorというのは、非常に面倒だ。しかも、declaratorの意味は、specifierに依存する。

int name ;

とあれば、nameはint型の変数の宣言と定義である。しかし、もし、

extern int name ;

こうなっていた場合、int型の変数の宣言である。さらに、

typedef int name ;

こうなっていた場合、nameはtypedef-nameということになってしまう。

さらに、ポインターやリファレンス、配列、関数までもが、全く別の見た目だが、同じくdeclaratorの中に入っている。

これをなんとかうまく説明しなければならない。さもなくば、specifierとdeclaratorを明確に分けて解説することはできない。

変数や関数を分けて解説するより、規格通りにspecifierとdeclaratorとして解説したほうが、C++の根本的な理解は深まるのだが、さてどうやって分かるように説明したものか。

No comments: