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.
Saiba mais sobre as regras gramaticais e as extensões de sintaxe em C e C++ para OpenMP, uma estrutura de programação paralela.
Notação C.1
As regras gramaticais consistem no nome de um não terminal, seguido por dois-pontos, seguido por alternativas de substituição em linhas separadas.
A expressão sintática termopt indica que o termo é opcional dentro da substituição.
A expressão sintática termoptseq é equivalente a term-seqopt com as seguintes regras adicionais:
term-seq:
termo
termo-seqtermo
term-seq,termo
Regras de C.2
A notação é descrita na seção 6.1 do padrão C. Este apêndice gramatical mostra as extensões para a gramática de linguagem base para as diretivas C e C++ do OpenMP.
/* em C++ (ISO/IEC 14882:1998) */
statement-seq:
instrução
openmp-directive
sequência de instruções
statement-seq openmp-directive
/* em C90 (ISO/IEC 9899:1990) */
statement-list:
instrução
openmp-directive
declaração de lista de instruções
statement-list openmp-directive
/* em C99 (ISO/IEC 9899:1999) */
block-item:
declaração
instrução
openmp-directive
/* instruções padrão */
declaração:
openmp-construct
openmp-construct:
parallel-construct
for-construct
sections-construct
construção única
parallel-for-construct
parallel-sections-construct
master-construct
critical-construct
atomic-construct
ordered-construct
openmp-directive:
diretiva de barreira
flush-directive
bloco estruturado:
instrução
parallel-construct:
bloco estruturado de diretiva paralela
parallel-directive:
# pragma omp parallel
parallel-clauseoptseqnew-line
cláusula paralela:
cláusula única-paralela
cláusula de dados
cláusula unique-parallel:
if (
expressão)
num_threads (
expressão)
for-construct:
instrução de iteração for-diretiva
for-directive:
# pragma omp for
for-clauseoptseqnew-line
for-clause:
cláusula única
cláusula de dados
nowait
unique-for-clause:
ordered
schedule (
tipo de agenda)
schedule (
schedule-kind,expressão)
tipo de agendamento:
static
dynamic
guided
runtime
sections-construct:
diretiva-de-seções escopo-da-seção
sections-directive:
# pragma omp sections
sections-clauseoptseqnew-line
cláusula de seções
cláusula de dados
nowait
escopo da seção:
{ section-sequence }
sequência de seção:
section-directiveoptstructured-block
sequência-de-seção diretiva-de-seção bloco-estruturado
section-directive:
# pragma omp section
new-line
construção única:
bloco estruturado de diretiva única
diretiva única:
# pragma omp single
cláusula únicaoptseqnew-line
cláusula única:
cláusula de dados
nowait
parallel-for-construct:
parallel-for-directive declaração de iteração
parallel-for-directive:
# pragma omp parallel for
parallel-for-clauseoptseqnew-line
parallel-for-clause:
cláusula única-paralela
cláusula única
cláusula de dados
parallel-sections-construct:
diretiva-de-seções-paralelas escopo-da-seção
parallel-sections-directive:
# pragma omp parallel sections
parallel-sections-clauseoptseqnew-line
parallel-sections-clause:
cláusula única-paralela
cláusula de dados
master-construct:
diretiva-mestra bloco-estruturado
master-directive:
# pragma omp master
new-line
critical-construct:
bloco estruturado de diretiva crítica
diretiva crítica:
# pragma omp critical
region-phraseoptnew-line
region-phrase:
(identificador)
diretiva de barreira:
# pragma omp barrier
new-line
atomic-construct:
atomic-directive expression-statement
atomic-directive:
# pragma omp atomic
new-line
flush-directive:
# pragma omp flush
flush-varsoptnew-line
flush-vars:
(lista de variáveis)
ordered-construct:
diretiva-ordenada bloco-estruturado
ordered-directive:
# pragma omp ordered
new-line
/* declarações padrão */
declaração:
threadprivate-directive
threadprivate-directive:
# pragma omp threadprivate (
variable-list)new-line
cláusula de dados:
private (
variable-list)
copyprivate (
variable-list)
firstprivate (
variable-list)
lastprivate (
variable-list)
shared (
variable-list)
default ( shared )
default ( none )
reduction (
operador de redução:lista de variáveis)
copyin (
variable-list)
operador de redução:
Uma destas opções: + \* - & ^ | && ||
/* em C */
variable-list:
identificador
variable-list,identificador
/* no C++ */
variable-list:
id-expression
variable-list,id-expression