Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe la gramática formal del preprocesador de C y C++. Abarca la sintaxis de las directivas y operadores de preprocesamiento. Para obtener más información, consulte Directivas preprocesador y Pragma y las palabras clave __pragma
y _Pragma
.
Definiciones del resumen de la gramática
Los elementos terminales son puntos de conexión en una definición de sintaxis. No hay ninguna otra posible resolución. Los elementos terminales incluyen el conjunto de palabras reservadas e identificadores definidos por el usuario.
Los elementos no terminales son marcadores en la sintaxis. La mayoría se definen en otro lugar en este resumen de la sintaxis. Las definiciones pueden ser recursivas. Los siguientes elementos no terminales se definen en la sección de Convenciones léxicas de la Referencia del lenguaje C++:
constant
, constant-expression
, identifier
, keyword
, , operator
, punctuator
Un componente opcional se indica mediante el subíndice opt. Por ejemplo, la siguiente sintaxis indica una expresión opcional delimitada por llaves:
{
optexpression
}
Convenciones de documentos
Las convenciones utilizan distintos atributos de fuente de diferentes componentes de la sintaxis. Los símbolos y fuentes son los siguientes:
Atributo | Descripción |
---|---|
nonterminal |
La cursiva indica elementos no terminales. |
#include |
Los elementos terminales en negrita son símbolos y palabras literales reservadas que deben especificarse tal como aparecen. Los caracteres en este contexto siempre distinguen entre mayúsculas y minúsculas. |
opt | Los elementos no terminales seguidos de opt son siempre opcionales. |
tipo de letra predeterminado | Los caracteres del juego descrito o mostrado en este tipo de letra se pueden usar como elementos terminales en las instrucciones. |
Un signo de dos puntos ( :
) a continuación de un no terminal presenta su definición. Las definiciones alternativas se indican en líneas distintas.
En los bloques de sintaxis de código, estos símbolos en el tipo de letra predeterminado tienen un significado especial:
Símbolo | Descripción |
---|---|
[ ] | Los corchetes rodean un elemento opcional. |
{ | } | Las llaves rodean elementos alternativos, separados por barras verticales. |
... | Indica que se puede repetir el patrón de elemento anterior. |
En bloques de sintaxis de código, comas (,
), puntos (.
), punto y coma (;
), dos puntos (:
), paréntesis (( )
), comillas dobles ("
) y comillas simples ('
) son literales.
Gramática de preprocesador
control-line
:
#define
identifier
token-string
opt
#define
identifier
(
identifier
opt ,
... ,
identifier
opt )
token-string
opt
#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
cualquier otra expresión constante
conditional
:
if-part
elif-parts
opt else-part
opt 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 de
0
1
2
3
4
5
6
7
8
9
token-string
:
Cadena de token
token
:
keyword
identifier
constant
operator
punctuator
filename
:
Nombre de archivo del sistema operativo legal
path-spec
:
Ruta de acceso válida
text
:
Cualquier secuencia de texto
Nota:
Los siguientes elementos no terminales se expanden en la sección de Convenciones léxicas de la Referencia del lenguaje C++: constant
, constant-expression
, identifier
, keyword
, operator
y punctuator
.