Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive la grammatica formale del preprocessore C e C++. Descrive la sintassi delle direttive e degli operatori di pre-elaborazione. Per altre informazioni, vedere Direttive preprocessore e pragma e parole __pragma chiave e ._Pragma
Definizioni per il riepilogo della grammatica
I terminali sono endpoint in una definizione di sintassi. Non è possibile nessun'altra soluzione. I terminali includono il set di parole riservate e di identificatori definiti dall'utente.
I non terminali sono segnaposto nella sintassi. La maggior parte viene definita altrove in questo riepilogo della sintassi. Le definizioni possono essere ricorsive. I seguenti non determinili sono definiti nella sezione Convenzioni lessicali di Riferimenti al linguaggio C++:
constant, constant-expression, identifier, keyword, operatorpunctuator
Un componente facoltativo viene indicato da opt con indice. Ad esempio, la sintassi seguente indica un'espressione facoltativa racchiusa tra parentesi graffe:
{expressionoptare }
Convenzioni dei documenti
Le convenzioni utilizzano gli attributi del tipo di carattere differenti per i diversi componenti della sintassi. I simboli e i caratteri sono i seguenti:
| Attributo | Descrizione |
|---|---|
nonterminal |
Il tipo corsivo indica non terminali. |
#include |
I terminali in grassetto sono parole riservate letterali e simboli che devono essere inseriti come indicato. I caratteri in questo contesto fanno sempre distinzione tra maiuscole e minuscole. |
| opt | I non terminali seguiti da opt sono sempre facoltativi. |
| carattere tipografico predefinito | I caratteri nel set descritto o elencato in questo carattere tipografico possono essere utilizzati come terminali nelle istruzioni. |
Un punto (:) che segue un oggetto non deterministico introduce la relativa definizione. Le definizioni alternative sono elencate in righe separate.
Nei blocchi di sintassi del codice, questi simboli nel carattere tipografico predefinito hanno un significato speciale:
| Simbolo | Descrizione |
|---|---|
| [ ] | Le parentesi quadre racchiudono un elemento facoltativo. |
| { | } | Le parentesi graffe racchiudono elementi alternativi, separati da barre verticali. |
| ... | Indica che il modello di elemento precedente può essere ripetuto. |
Nei blocchi di sintassi del codice, le virgole (,), i punti (.), i punti (;), i due punti (:), le parentesi (( )), le virgolette doppie (") e le virgolette singole (') sono valori letterali.
Grammatica del preprocessore
control-line:
#defineidentifier token-stringoptare
#defineidentifier ( identifieropt , ... , identifieropt opt opt ) token-string
#include "path-spec"
#include <path-spec>
#linedigit-sequence "filename"optare
#undef identifier
#error token-string
#pragma token-string
constant-expression:
defined( identifier )
defined identifier
qualsiasi altra espressione costante
conditional:
if-partelif-partsopt opt opt else-part 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: uno tra
0 1 2 3 4 5 6 7 8 9
token-string:
Stringa di token
token:
keyword
identifier
constant
operator
punctuator
filename:
Nome file del sistema operativo legale
path-spec:
Percorso file valido
text:
Qualsiasi sequenza di testo
Nota
I non determinili seguenti vengono espansi nella sezione Convenzioni lessicali di Riferimenti al linguaggio C++: constant, identifierconstant-expression, keyword, operator, e punctuator.