C.2 Règles
La notation est décrite dans la section 6,1 de la norme C. Cette annexe de grammaire affiche les extensions à la syntaxe de langue de base pour les directives et OpenMP C et C++.
/* dans C++ (ISO/CEI 14882:1998) *
instruction-seq:
instruction
openmp-directive
instruction instruction-seq
openmp-directive instruction-seq
/* dans C90 (ISO/CEI 9899:1990) *
liste d'instructions:
instruction
openmp-directive
instruction de liste d'instructions
openmp-directive de liste d'instructions
/* dans C99 (ISO/CEI 9899:1999) *
bloc-élément:
déclaration
instruction
openmp-directive
instruction:
instructions standard de/* *
openmp-élément
openmp-élément:
parallèle-élément
pour-élément
section-élément
un seul élément
parallèle-pour-élément
parallèle-section-élément
forme de base-construc
critique-élément
atomique-élément
classer-élément
openmp-directive:
cloisonnement-directive
vidage-directive
structuré-bloc:
instruction
parallèle-élément:
structuré-bloc de parallèle-directive
parallèle-directive:
parallèle-clauseoptseq de# parallèle pragma d'omp** d'espacement
parallèle-clause:
unique-parallèle-clause
donnée-clause
unique-parallèle-clause:
*expression *)desi (
*expression *)denum_threads (
pour-élément:
itération-instruction de pour-directive
pour-directive:
pour-clauseoptseq de# omp pragma pour**d'espacement
pour-clause:
unique-pour-clause
donnée-clause
nowait
unique-pour-clause:
dimensionné
*planning-type *)deplanifier (
expression )deServeur IIS local de planning-type deplanifier (
planning-type:
static
dynamic
guidée
runtime
section-élément:
section-portée de section-directive
section-directive:
section-clauseoptseq de# sections pragma d'omp**d'espacement
section-clause:
donnée-clause
nowait
section-portée:
{} section-séquence
section-séquence:
structuré-bloc desection-directiveopt
structuré-bloc de section-directive de section-séquence
section-directive:
# section pragma d'omp d'espacement
un seul élément:
structuré-bloc d'unique-directive
unique-directive:
unique-clauseoptseq de# omp pragma unique**d'espacement
unique-clause:
donnée-clause
nowait
parallèle-pour-élément:
itération-instruction de parallèle-pour-directive
parallèle-pour-directive:
parallèle-pour-clauseoptseq de# omp pragma parallèle pour**d'espacement
parallèle-pour-clause:
unique-parallèle-clause
unique-pour-clause
donnée-clause
parallèle-section-élément:
section-portée de parallèle-section-directive
parallèle-section-directive:
parallèle-section-clauseoptseq de# sections pragma parallèles d'omp**d'espacement
parallèle-section-clause:
unique-parallèle-clause
donnée-clause
forme de base-élément:
structuré-bloc de forme de base-directive
forme de base-directive:
# forme de base pragma d'omp d'espacement
critique-élément:
structuré-bloc de critique-directive
critique-directive:
zone-expressionopt de# omp pragma critique**d'espacement
zone-expression:
(identificateur)
cloisonnement-directive:
# cloisonnement pragma d'omp d'espacement
atomique-élément:
expression-instruction d'atomique-directive
atomique-directive:
# omp pragma atomique d'espacement
vidage-directive:
vidage-varsopt de# vidage pragma d'omp** d'espacement
vidage-vars:
(variable-liste)
classer-élément:
structuré-bloc de classer-directive
classer-directive:
# omp pragma dimensionné d'espacement
déclaration:
déclarations standard de/* *
threadprivate-directive
threadprivate-directive:
variable-liste **)de# threadprivate pragma d'omp (**d'espacement
donnée-clause:
*variable-liste *)deprivé (
variable-liste )decopyprivate (
variable-liste )defirstprivate (
variable-liste **)**d'elle (
variable-liste**)de(partagé**
valeur par défaut (partagé)
valeur par défaut (sans)
variable-liste )deNuméro de téléphone : de réduction-opérateur de réduction (
variable-liste )decopyin (
réduction-opérateur:
un de: + * - & ^ | && ||
/* en C *
variable-liste:
identifier
identificateur deServeur IIS local de variable-liste
/* en C++ *
variable-liste:
identificateur-expression
identificateur-expression deServeur IIS local de variable-liste