Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit la grammaire formelle du préprocesseur C et C++. Il couvre la syntaxe des directives et opérateurs de prétraitement. Pour plus d’informations, consultez les directives Preprocessor et Pragma et les __pragma mots clés._Pragma
Résumé des définitions pour la grammaire
Les terminaux sont des points de terminaison dans une définition de syntaxe. Aucune autre résolution n'est possible. Les terminaux incluent l'ensemble des mots réservés et des identificateurs définis par l'utilisateur.
Les éléments non terminaux sont des espaces réservés dans la syntaxe. La plupart de ces éléments sont définis ailleurs dans ce résumé de syntaxe. Les définitions peuvent être récursives. Les valeurs non déterminales suivantes sont définies dans la section conventions lexicales de la référence du langage C++ :
constant, , constant-expression, keywordidentifier, , operatorpunctuator
Un composant facultatif est indiqué par l'élément opt indicé. Par exemple, la syntaxe suivante indique une expression facultative entre accolades :
{ expressionopt }
Conventions de document
Les conventions utilisent différents attributs de police pour différents composants de la syntaxe. Les symboles et les polices sont comme suit :
| Attribut | Description |
|---|---|
nonterminal |
Le type italique indique des symboles non terminaux. |
#include |
Les symboles terminaux en gras sont des mots réservés littéraux et des symboles littéraux qui doivent être écrits comme indiqué. Les caractères situés dans ce contexte respectent toujours la casse. |
| option | Les symboles non terminaux suivis d’opt sont toujours facultatifs. |
| police par défaut | Les caractères du jeu décrit ou répertorié dans cette police peuvent être utilisés comme symboles terminaux dans les instructions C. |
Un signe deux-points (:) qui suit un symbole non terminal introduit sa définition. D'autres définitions apparaissent sur des lignes distinctes.
Dans les blocs de syntaxe de code, ces symboles dans la police par défaut ont une signification spéciale :
| Symbole | Description |
|---|---|
| [ ] | Crochets entourent un élément facultatif. |
| { | } | Les accolades entourent d’autres éléments, séparés par des barres verticales. |
| ... | Indique que le modèle d’élément précédent peut être répété. |
Dans les blocs de syntaxe de code, les virgules (,), les points (.), les points-virgules (), les points-virgules (:;), les parenthèses (( )), les guillemets doubles (") et les guillemets simples (') sont des littéraux.
Grammaire du préprocesseur
control-line:
#define identifier token-stringopt
#defineidentifier ( identifieropt , ... , identifieropt ) token-string
#include "path-spec"
#include <path-spec>
#line digit-sequence "filename"opt
#undef identifier
#error token-string
#pragma token-string
constant-expression:
defined( identifier )
defined identifier
toute autre expression constante
conditional:
if-part elif-partsopt else-partopt endif-line
if-part:
if-line text
if-line:
#if constant-expression
#ifdef identifier
#ifndef identifier
elif-parts:
elif-line text
elif-parts elif-line text
elif-line:
#elif constant-expression
else-part:
else-line text
else-line:
#else
endif-line:
#endif
digit-sequence:
digit
digit-sequence digit
digit : l'un des éléments suivants :
0 1 2 3 4 5 6 7 8 9
token-string:
Chaîne de token
token:
keyword
identifier
constant
operator
punctuator
filename:
Nom de fichier du système d’exploitation légal
path-spec:
Chemin d’accès de fichier conforme
text:
N’importe quelle séquence de texte
Remarque
Les éléments non déterminaux suivants sont développés dans la section conventions lexicales de la référence du langage C++ : constant, , constant-expression, identifier, , keywordoperator, et punctuator.