こういう書き方はどうか?(長文失礼)

・char , int は型である。
・Tが型ならば、T[N]は型である。(Tの配列と解釈する)
・Tが型ならば、$Tは型である。(Tへのポインタと解釈する)
・T,U1,U2,…,Umが型ならば、T(U1,U2,…,Um)という記号列は型である。(関数と解釈する)
・宣言方法は「T a;」とする。


具体例(カッコは適宜省略)  C言語での表記法
 ↓                 ↓
int a;          ( int a;という意味)
int[N] a;        ( int a[N];という意味)
(int[w])[h] a;      ( int a[h][w];という意味。wとhは逆になる)
$int a;         ( int* a; )
int(char) func;     ( int func(char); )

$($int) a;        ( int** a; )
($int)[N] a;      ( int* a[N]; )
$(int[N]) a;      ( int (*a)[N]; )

$(int(char)) f;     ( int (*f )(char); )
($int)(char) f;     ( int* f (char); )
int($char) f;      ( int f (char*); )
($(int(char)))[N] f;   ( int (*f [N])(char); )

($$(int(char)))[N] f;  ( int (**f [N])(char); )
$(($(int(char)))[N]) f; ( int (*(*f )[N])(char); )