Reglas C.2
La notación se describe en la sección 6,1 del estándar de C.Este apéndice de la gramática muestra las extensiones a la gramática base de idioma para las directivas de OpenMP c y C++.
/* en C++ (14882:1998 de ISO/IEC) *
instrucción-seq:
(Instrucción)
openmp-directiva
instrucción instrucción-seq
openmp-directiva instrucción-seq
/* en C90 (9899:1990 de ISO/IEC) *
instrucción-lista:
(Instrucción)
openmp-directiva
instrucción de la instrucción-lista
openmp-directiva de la instrucción-lista
/* en C99 (9899:1999 de ISO/IEC) *
bloque-elemento:
declaración
(Instrucción)
openmp-directiva
instrucción:
instrucciones estándar de/* */
openmp-construcción
openmp-construcción:
paralelo-construcción
para-construcción
sección-construcción
solo-construcción
paralelo-para-construcción
paralelo-sección-construcción
maestro-construc
crítico-construcción
atómico-construcción
ordenar-construcción
openmp-directiva:
barrera-directiva
rubor-directiva
estructurar-bloque:
(Instrucción)
paralelo-construcción:
estructurar-bloque de la paralelo-directiva
paralelo-directiva:
paralelo-cláusula de**# paralelo de omp de pragma** optseq de nueva línea
paralelo-cláusula:
UNIQUE-paralelo-cláusula
dato-cláusula
UNIQUE-paralelo-cláusula:
*expresión *)desi (
*expresión *)denum_threads (
para-construcción:
iteración-instrucción de la para-directiva
para-directiva:
para-cláusula de**# omp de pragma para**optseq de nueva línea
para-cláusula:
UNIQUE-para-cláusula
dato-cláusula
nowait
UNIQUE-para-cláusula:
consultar
programación ( **)**programación-bueno
*expresión programación-buena *)deprogramación (,
programación-bueno:
static
dynamic
dirigido
motor en tiempo de ejecución
sección-construcción:
sección-ámbito de la sección-directiva
sección-directiva:
sección-cláusula de**# secciones de omp de pragma**optseq de nueva línea
sección-cláusula:
dato-cláusula
nowait
sección-ámbito:
{sección-secuencia}
sección-secuencia:
estructurar-bloque de lasección-directiveopt
estructurar-bloque de la sección-directiva de la sección-secuencia
sección-directiva:
# sección de omp de pragma de nueva línea
solo-construcción:
estructurar-bloque de la solo-directiva
solo-directiva:
solo-cláusula de**# omp de pragma único**optseq de nueva línea
solo-cláusula:
dato-cláusula
nowait
paralelo-para-construcción:
iteración-instrucción de la paralelo-para-directiva
paralelo-para-directiva:
paralelo-para-cláusula de**# omp de pragma paralelo para**optseq de nueva línea
paralelo-para-cláusula:
UNIQUE-paralelo-cláusula
UNIQUE-para-cláusula
dato-cláusula
paralelo-sección-construcción:
sección-ámbito de la paralelo-sección-directiva
paralelo-sección-directiva:
paralelo-sección-cláusula de**# secciones del código omp de pragma**optseq de nueva línea
paralelo-sección-cláusula:
UNIQUE-paralelo-cláusula
dato-cláusula
maestro-construcción:
estructurar-bloque de la maestro-directiva
maestro-directiva:
# principal de omp de pragma de nueva línea
crítico-construcción:
estructurar-bloque de la crítico-directiva
crítico-directiva:
región-frase de**# omp de pragma crítico**opt de nueva línea
región-frase:
(identificador)
barrera-directiva:
# barrera de omp de pragma de nueva línea
atómico-construcción:
expresión-instrucción de la atómico-directiva
atómico-directiva:
# omp de pragma atómico de nueva línea
rubor-directiva:
rubor-vars de**# vaciado de omp de pragma**opt de nueva línea
rubor-vars:
(variable-lista)
ordenar-construcción:
estructurar-bloque de la ordenar-directiva
ordenar-directiva:
# omp de pragma orden de nueva línea
declaración:
declaraciones estándar de/* */
threadprivate-directiva
threadprivate-directiva:
variable-lista )de# threadprivate de omp de pragma ( de nueva línea
dato-cláusula:
*variable-lista *)deprivate (
variable-lista )decopyprivate (
variable-lista )defirstprivate (
variable-lista )delastprivate (
variable-lista**)decompartido (**
valor predeterminado (compartido)
valor predeterminado (ninguna)
variable-lista )de: de reducción-operador dedetallado (
variable-lista )decopyin (
reducción-operador:
uno de: + * y ^ | && ||
/* en C *
variable-lista:
identifier
identificador de**,** de la variable-lista
/* en C++ *
variable-lista:
identificador-expresión
identificador-expresión de**,** de la variable-lista