Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve a gramática formal do pré-processador C e C++. Cobre a sintaxe das diretivas e operadores de pré-processamento. Para mais informações, confira as Pré-processador e as Diretivas pragma e as palavras-chave __pragma
e _Pragma
.
Definições para o resumo de gramática
Os terminais são pontos de extremidade em uma definição de sintaxe. Nenhuma outra resolução é possível. Os terminais incluem o conjunto de palavras reservadas e identificadores definidos pelo usuário.
Os não terminais são espaços reservados na sintaxe. A maioria é definida em outra parte deste resumo da sintaxe. As definições podem ser recursivas. Os seguintes não terminais são definidos na seção Convenções lexicais da Referência de Linguagem C++:
constant
, constant-expression
, identifier
, keyword
, operator
, , punctuator
Um componente opcional é indicado pelo opt subscrito. Por exemplo, a seguinte sintaxe indica uma expressão opcional incluída em chaves:
{
expression
opt }
Convenções de documento
As convenções usam atributos diferentes de fonte para componentes diferentes de sintaxe. Os símbolos e as fontes são os seguintes:
Atributo | Descrição |
---|---|
nonterminal |
O tipo em itálico indica não terminais. |
#include |
Os terminais de tipo em negrito são palavras reservadas a literais e símbolos que devem ser inseridos como mostrado. Os caracteres nesse contexto sempre diferenciam maiúsculas de minúsculas. |
opt | Não terminais seguidos por opt são sempre opcionais. |
default typeface | Os caracteres no conjunto descrito ou listados nesta face de tipos podem ser usados como terminais em instruções. |
Um sinal de dois-pontos (:
) depois de um não terminal introduz sua definição. As definições alternativas são listadas em linhas separadas.
Em blocos de sintaxe de código, esses símbolos no tipo padrão têm um significado especial:
Símbolo | Descrição |
---|---|
[ ] | Colchetes envolvem um elemento opcional. |
{ | } | Chaves envolvem elementos alternativos, separados por barras verticais. |
... | Indica que o padrão de elemento anterior pode ser repetido. |
Em blocos de sintaxe de código, vírgula (,
), ponto (.
), ponto e vírgula (), dois-pontos (;
:
), parênteses (( )
), aspas duplas ("
) e aspas simples ('
) são literais.
Gramática do pré-processador
control-line
:
#define
identifier
token-string
opt
#define
identifier
(
identifier
optar... ,
identifier
,
optar, token-string
)
optar
#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
qualquer outra expressão 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
: um de
0
1
2
3
4
5
6
7
8
9
token-string
:
Cadeia de caracteres de token
token
:
keyword
identifier
constant
operator
punctuator
filename
:
Nome do arquivo do sistema operacional legal
path-spec
:
Caminho de arquivo válido
text
:
Qualquer sequência de texto
Observação
Os não terminais a seguir são expandidos na seção convenções lexicais da Referência de Linguagem C++: constant
, constant-expression
, identifier
, keyword
, operator
e punctuator
.