Syntaxe des déclarations

La grammaire des déclarations est la suivante :

déclaration :
$\Rightarrow$ spécificateurs-de-déclaration liste-de-déclarateurs-init$_{option}$ ;

spécificateurs-de-déclaration :
$\Rightarrow$ spécificateur-de-classe-mémoire spécificateurs-de-déclaration$_{option}$
$\Rightarrow$ spécificateur-de-type spécificateurs-de-déclaration$_{option}$
$\Rightarrow$ qualificatif-de-type spécificateurs-de-déclaration$_{option}$

liste-de-déclarateurs-init :
$\Rightarrow$ déclarateur-init
$\Rightarrow$ liste-de-déclarateurs-init , déclarateur-init

déclarateur-init :
$\Rightarrow$ déclarateur
$\Rightarrow$ déclarateur = initialisateur

spécificateur-de-classe-mémoire :
$\Rightarrow$ auto
$\Rightarrow$ extern
$\Rightarrow$ static
$\Rightarrow$ register
$\Rightarrow$ typedef

spécificateur-de-type :
$\Rightarrow$ void
$\Rightarrow$ char
$\Rightarrow$ short
$\Rightarrow$ int
$\Rightarrow$ long
$\Rightarrow$ float
$\Rightarrow$ double
$\Rightarrow$ signed
$\Rightarrow$ unsigned
$\Rightarrow$ spécificateur-de-struct-ou-union
$\Rightarrow$ spécificateur-d-énumération
$\Rightarrow$ nom-de-typedef

spécificateur-de-struct-ou-union :
$\Rightarrow$ struct-ou-union identificateur$_{option}$ { liste-de-déclarations-de-struct }
$\Rightarrow$ struct-ou-union identificateur

struct-ou-union :
$\Rightarrow$ struct
$\Rightarrow$ union

liste-de-déclarations-de-struct :
$\Rightarrow$ déclaration-de-struct
$\Rightarrow$ liste-de-déclarations-de-struct déclaration-de-struct

déclaration-de-struct :
$\Rightarrow$ liste-de-spécificateurs-et-qualificatifs liste-de-déclarateurs-de-struct ;

liste-de-spécificateurs-et-qualificatifs :
$\Rightarrow$ spécificateur-de-type liste-de-spécificateurs-et-qualificatifs$_{option}$
$\Rightarrow$ qualificatif-de-type liste-de-spécificateurs-et-qualificatifs$_{option}$

liste-de-déclarateurs-de-struct :
$\Rightarrow$ déclarateur-de-struct
$\Rightarrow$ liste-de-déclarateurs-de-struct , déclarateur-de-struct

déclarateur-de-struct :
$\Rightarrow$ déclarateur
$\Rightarrow$ déclarateur$_{option}$ : expression-constante

spécificateur-d-énumération :
$\Rightarrow$ enum identificateur$_{option}$ { liste-d-énumérateurs }
$\Rightarrow$ enum identificateur

liste-d-énumérateurs :
$\Rightarrow$ énumérateur
$\Rightarrow$ liste-d-énumérateurs , énumérateur

énumérateur :
$\Rightarrow$ identificateur
$\Rightarrow$ identificateur = expression constante

qualificatif-de-type :
$\Rightarrow$ const
$\Rightarrow$ volatile

déclarateur :
$\Rightarrow$ pointeur$_{option}$ déclarateur-direct

déclarateur-direct :
$\Rightarrow$ identificateur
$\Rightarrow$ ( déclarateur )
$\Rightarrow$ déclarateur-direct [ expression-constante$_{option}$ ]
$\Rightarrow$ déclarateur-direct ( liste-de-types-de-paramètres )
$\Rightarrow$ déclarateur-direct ( liste-d-identificateurs$_{option}$ )

pointeur :
$\Rightarrow$ * liste-de-qualificatifs-de-types$_{option}$
$\Rightarrow$ * liste-de-qualificatifs-de-types$_{option}$ pointeur

liste-de-qualificatifs-de-types :
$\Rightarrow$ qualificatif-de-type
$\Rightarrow$ liste-de-qualificatifs-de-types qualificatif-de-type

liste-de-types-de-paramètres :
$\Rightarrow$ liste-de-paramètres
$\Rightarrow$ liste-de-paramètres , ...

liste-de-paramètres :
$\Rightarrow$ déclaration-de-paramètre
$\Rightarrow$ liste-de-paramètres , déclaration-de-paramètre

déclaration-de-paramètre :
$\Rightarrow$ spécificateurs-de-déclaration déclarateur
$\Rightarrow$ spécificateurs-de-déclaration déclarateur-abstrait$_{option}$

liste-d'identificateurs :
$\Rightarrow$ identificateur
$\Rightarrow$ liste-d'identificateurs , identificateur

initialisateur :
$\Rightarrow$ expression-d'affectation
$\Rightarrow$ { liste-d-initialisateurs }
$\Rightarrow$ { liste-d-initialisateurs , }

liste-d'initialisateurs :
$\Rightarrow$ initialisateur
$\Rightarrow$ liste-d'initialisateurs , initialisateur



Sous-sections
Matthieu Moy 2017-02-08