- la seule règle de la grammaire qui dérive vers un terminal est
la règle :
déclarateur-direct :
identificateur
ce qui fait qu'a l'intérieur de tout déclarateur se trouve un
identificateur.
Cet identificateur est le nom de l'objet déclaré par la déclaration.
Exemple :
char c; /* déclaration de la variable c de type char */
- il y a 3 constructeurs de type :
- * est un constructeur permettant de construire des types
« pointeur vers ... ».
Exemple :
/* déclaration de p de type pointeur vers short int */
short int *p;
- ( ) est un constructeur permettant permettant de construire des
types « fonction retournant ... ».
Exemple :
/* déclaration de sin de type fonction retournant
un double */
double sin();
- [ expression-constante ] est un
constructeur permettant de construire des types « tableau de ... ».
Exemple :
/* déclaration de t de type tableau de 32 int */
int t[32];
- les constructeurs de type peuvent se composer et sont affectés de
priorités.
Les constructeurs ( ) et [ ] ont la même priorité, et celle-ci
est supérieure à la priorité du constructeur *.
char *t[10]; /* tableau de 10 pointeurs vers des char */
int *f(); /* fonction retournant un pointeur vers un int */
double t[10][10]; /* tableau de 10 tableaux de 10 double */
- tout comme avec des expressions, la règle :
déclarateur-direct :
( déclarateur )
permet de parenthéser des déclarateur de manière à en changer
la sémantique :
char *t[10]; /* tableau de 10 pointeurs vers un char */
char (*t)[10]; /* pointeur vers un tableau de 10 char */