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.
Obtenga información sobre las reglas gramaticales y las extensiones de sintaxis en C y C++ para OpenMP, un marco de programación paralelo.
Notación C.1
Las reglas gramaticales constan del nombre de un no terminal, seguido de dos puntos, seguidos de alternativas de reemplazo en líneas independientes.
El término de expresión sintáctica opt indica que el término es opcional dentro del reemplazo.
El término de expresión sintáctica optseq equivale a term-seqopt con las siguientes reglas adicionales:
term-seq:
término
term-seqterm
term-seq,
término
Reglas de C.2
La notación se describe en la sección 6.1 del estándar de C. En este apéndice de gramática se muestran las extensiones de la gramática del lenguaje base para las directivas de C y C++ de OpenMP.
/* en C++ (ISO/IEC 14882:1998) */
statement-seq:
instrucción
openmp-directive
statement-seq (instrucción)
statement-seq openmp-directive
/* en C90 (ISO/IEC 9899:1990) */
lista-de-declaraciones:
instrucción
openmp-directive
instrucción statement-list
statement-list openmp-directive
/* en C99 (ISO/IEC 9899:1999) */
elemento de bloque:
declaración
instrucción
openmp-directive
/* instrucciones estándar */
instrucción:
openmp-construct
openmp-construct:
construcción paralela
for-construct
sections-construct
construcción única
parallel-for-construct
parallel-sections-construct
master-construct
critical-construct
atomic-construct
estructura ordenada
openmp-directive:
barrier-directive
flush-directive
bloque estructurado:
instrucción
construcción paralela:
bloque estructurado de directivas paralelas
parallel-directive:
# pragma omp parallel
parallel-clauseoptseqnew-line
parallel-clause:
cláusula única-paralela
data-clause
unique-parallel-clause:
if (
expresión)
num_threads (
expresión)
for-construct:
for-directive iteraation-statement
for-directive:
# pragma omp for
for-clauseoptseqnew-line
for-clause:
unique-for-clause
data-clause
nowait
unique-for-clause:
ordered
schedule (
tipo de programación)
schedule (
tipo de programación,
expresión)
tipo de programación:
static
dynamic
guided
runtime
sections-construct:
directiva de sección alcance de sección
sections-directive:
# pragma omp sections
sections-clauseoptseqnew-line
secciones-cláusula:
data-clause
nowait
ámbito de sección:
{ section-sequence }
section-sequence:
directiva de secciónopcionalbloque estructurado
secuencia de sección directiva de sección bloque estructurado
section-directive:
# pragma omp section
nueva línea
construcción única:
bloque estructurado de directiva única
directiva única:
# pragma omp single
cláusula únicaoptseqnew-line
cláusula única:
data-clause
nowait
parallel-for-construct:
directiva-parallel-for instrucción-iteración
parallel-for-directive:
# pragma omp parallel for
parallel-for-clauseoptseqnew-line
parallel-for-clause:
cláusula única-paralela
unique-for-clause
data-clause
parallel-sections-construct:
directiva-paralela-secciones ámbito-sección
parallel-sections-directive:
# pragma omp parallel sections
parallel-sections-clauseoptseqnew-line
cláusula de secciones paralelas:
cláusula única-paralela
data-clause
master-construct:
directiva-principal bloque-estructurado
master-directive:
# pragma omp master
nueva línea
critical-construct:
directiva-crítica bloque-estructurado
critical-directive:
# pragma omp critical
region-phraseoptnew-line
region-phrase:
(identificador)
barrier-directive:
# pragma omp barrier
nueva línea
atomic-construct:
expresión-declaración de directiva atómica
atomic-directive:
# pragma omp atomic
nueva línea
flush-directive:
# pragma omp flush
flush-varsoptnew-line
flush-vars:
(lista variable)
construcción ordenada:
bloque estructurado de directivas ordenadas
ordered-directive:
# pragma omp ordered
nueva línea
/* declaraciones estándar */
declaración:
threadprivate-directive
threadprivate-directive:
# pragma omp threadprivate (
variable-list)
new-line
data-clause:
private (
variable-list)
copyprivate (
variable-list)
firstprivate (
variable-list)
lastprivate (
variable-list)
shared (
variable-list)
default ( shared )
default ( none )
reduction (
operador:
de reducciónlista de variables)
copyin (
variable-list)
operador de reducción:
Uno de: + \* - & ^ | && ||
/* en C */
variable-list:
identificador
variable-list,
identificador
/* en C++ */
variable-list:
id-expression
variable-list,
id-expression