unittype -> "int" '數(shù)據(jù)類型
unittype -> "const" unittype '數(shù)據(jù)是常量類型
ptrtype -> unittype
ptrtype -> ptrtype "*" '指針類型
ptrtype -> ptrtype "*" "const" '指針是常量類型
為什么需要最后一項(xiàng)呢?其實(shí)根據(jù)表達(dá)式的一般設(shè)計(jì),需要優(yōu)先級(jí)什么的加一個(gè)括號(hào)就行了。也就是說int*const原本可以寫成const(int*)。的可惜TM函數(shù)指針又是那個(gè)鳥樣,所以就搞得這么復(fù)雜了。
上面的語法安排是優(yōu)先級(jí)組合的典型寫法,也就是說這里前綴比后綴優(yōu)先級(jí)更高。因此const int*就是(const int)*。
可以這么看:以*為界,const在*前的是限定*p,在*后面的是限制p。前者限定p指向的值,后者限定指針p。