Regeln C.2

Die Notation wird in Abschnitt 6.1 der C-Standards beschrieben.Dieser Grammatik anhang werden die Erweiterungen der Basis für die Direktive OpenMPs grammatik Sprachen C und C++.

/* in C++ (ISO-/IEC14882:1998) *

Anweisung-folgend:

-Anweisung

OpenMPDirektive

Anweisung-folgende Anweisung

Anweisung-folgende OpenMPDirektive

C90 in/* */(ISO-/IEC 9899:1990)

Anweisungsliste:

-Anweisung

OpenMPDirektive

Anweisungslisten Statement

Anweisungsliste OpenMPDirektive

C99 in/* */(ISO-/IEC 9899:1999)

BlockElement:

Deklaration

-Anweisung

OpenMPDirektive

Anweisung:

/*standard - Anweisungen *

OpenMPKonstrukt

OpenMPKonstrukt:

Konstrukt paralleles

Ein Konstrukt

Konstrukt Abschnitt

Konstrukt bestimmten

Parallel-fürKonstrukt

Parallel-AbschnittKonstrukt

MASTER-construc

WichtigKonstrukt

UnteilbarKonstrukt

ORDEREDKonstrukt

OpenMP Direktiven:

BarriereDirektive

LeerenDirektive

strukturierter Block:

-Anweisung

paralleles Konstrukt:

Paralleles Direktive strukturierter - Block

Paralleles Direktiven:

# Pragma omp Ähnlichkeit parallelneuKlauseloptseq von Zeilen

Paralleles Klausel:

UNIQUE-parallel FROM-Klausel

DATA FROM-Klausel

UNIQUE-parallelKlausel:

(falls*Ausdruck *)

(num_threads*Ausdruck *)

Ein Konstrukt:

Für Direktiven Iteration Anweisung

Für Direktiven:

*Zeilen neuKlausel füroptseq *# - Pragma für omp

Eine Klausel:

UNIQUE-für FROM-Klausel

DATA FROM-Klausel

nowait

UNIQUE-fürKlausel:

geordnet

(Zeitplan Zeitplan-*nettes *)

*Zeitplan-netter *und *Ausdruck *)(Zeitplan

Zeitplan-nett:

static

dynamic

Einführungs

Runtime

AbschnittKonstrukt:

SCOPE Abschnitt Direktive Abschnitt

Abschnitt Direktiven:

# Pragma omp Abschnitte Zeilen neu-Klauseloptseq Abschnitt

AbschnittKlausel:

DATA FROM-Klausel

nowait

SCOPE Abschnitte:

{AbschnittSequenz}

AbschnittSequenz:

Abschnitt-directiveopt strukturierter - Block

Block strukturierter Direktive Abschnitt Sequenz Abschnitt

Abschnitt Direktiven:

# Pragma omp Abschnitt Zeilen neu

bestimmten Konstrukt:

einzelnen Direktiven strukturierter - Block

einzelnen Direktiven:

# Pragma omp einzeln Zeilen neu-Klauseloptseq einzel

bestimmten Klausel:

DATA FROM-Klausel

nowait

Parallel-fürKonstrukt:

Parallel-fürDirektive IterationAnweisung

Parallel-für Direktiven:

Für parallel omp Pragma # Zeilen neu-Klauseloptseq parallel-für

Parallel-fürKlausel:

UNIQUE-parallel FROM-Klausel

UNIQUE-für FROM-Klausel

DATA FROM-Klausel

Parallel-AbschnittKonstrukt:

SCOPE Parallel-Abschnitt Direktive Abschnitt

Parallel-Abschnitt Direktiven:

# Pragma omp Ähnlichkeitsabschnitte Zeilen neu-Klauseloptseq parallel-Abschnitt

Parallel-AbschnittKlausel:

UNIQUE-parallel FROM-Klausel

DATA FROM-Klausel

MASTERKonstrukt:

MASTER Direktive strukturierter - Block

MASTER Direktiven:

# Pragma omp Master Zeilen neu

Wichtig:Konstrukt

Wichtig Direktive strukturierter - Block

Wichtig Direktiven:

# Pragma omp wichtig Bereich Ausdruckopt neu von Zeilen

BereichAusdruck:

(identifier)

Barriere Direktiven:

# Pragma omp Barriere Zeilen neu

UnteilbarKonstrukt:

Direktiven für atomare der Anweisung Ausdruck

atomare Direktiven:

# Pragma omp atomar Zeilen neu

Leeren Direktiven:

# Pragma omp Leeren Zeilen neuLeeren-varsopt

Leeren-vars:

Variablen (Liste)

ORDEREDKonstrukt:

ORDERED Direktive strukturierter - Block

ORDERED Direktiven:

# Pragma omp geordnet Zeilen neu

Deklaration:

/*standard - Deklarationen *

ThreadprivateDirektive

Threadprivate Direktiven:

# Pragma omp (threadprivateVariable Liste von Zeilen neu**)**

DATAKlausel:

(privatVariable*Liste *)

(copyprivate VariableListe )

(firstprivate VariableListe )

(lastprivateVariableListe )

(SharedVariableListe**)**

Standard (freigegeben)

(Keine)

)Liste Variable(Verringerung Verringerung : OPERATOR

(copyin VariableListe )

OPERATOR Verringerung:

Ein aus: + * - & ^ | && ||

/* */in C

Variable:list

identifier

VariableListe undBezeichner

/* */in C++

Variable:list

IDAusdruck

VariableListe undIDAusdruck