Compartir a través de


C. Gramática de OpenMP C y C++

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