Regole C.2

La notazione è descritta nella sezione 6,1 standard c.Questa appendice la sintassi mostra le estensioni alla grammatica di base del linguaggio per le direttive e di OpenMP c e C++.

/* in C++ (14882:1998 ISO/IEC */)

rendiconto-seguente:

Istruzione

openmp-direttiva

istruzione rendiconto-seguente

openmp-direttiva rendiconto-seguente

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

rendiconto-elenco:

Istruzione

openmp-direttiva

istruzione dell'rendiconto-elenco

openmp-direttiva dell'rendiconto-elenco

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

blocco-elemento:

dichiarazione

Istruzione

openmp-direttiva

istruzione:

istruzioni standard/* */

openmp-costrutto

openmp-costrutto:

parallelo-costrutto

per-costrutto

sezione-costrutto

singolo-costrutto

parallelo-per-costrutto

parallelo-sezione-costrutto

master-construc

critico-costrutto

atomico-costrutto

ordinare-costrutto

openmp-direttiva:

barriera-direttiva

vampata-direttiva

strutturare-blocco:

Istruzione

parallelo-costrutto:

strutturare-blocco di parallelo-direttiva

parallelo-direttiva:

# parallelo di omp di pragma parallelo-clausolaoptseq nuova riga

parallelo-clausola:

univoco-parallelo-clausola

dati-clausola

univoco-parallelo-clausola:

se ( espressione )

num_threads ( espressione )

per-costrutto:

iterazione-rendiconto di per-direttiva

per-direttiva:

# omp di pragma per* per-clausolaoptseq nuova riga*

per-clausola:

univoco-per-clausola

dati-clausola

nowait

univoco-per-clausola:

ordinato

pianificazione ( pianificazione-tipo )

pianificazione ( pianificazione-tipo , espressione )

pianificazione-tipo:

static

dynamic

guida

runtime

sezione-costrutto:

sezione-ambito di sezione-direttiva

sezione-direttiva:

# sezioni di omp di pragma* sezione-clausolaoptseq nuova riga*

sezione-clausola:

dati-clausola

nowait

sezione-ambito:

{} sezione-sequenza

sezione-sequenza:

sezione-direttivascegliere strutturare-blocco

strutturare-blocco di sezione-direttiva di sezione-sequenza

sezione-direttiva:

# sezione di omp di pragma* nuova riga*

singolo-costrutto:

strutturare-blocco di singolo-direttiva

singolo-direttiva:

# omp di pragma singolo* singolo-clausolaoptseq nuova riga*

singolo-clausola:

dati-clausola

nowait

parallelo-per-costrutto:

iterazione-rendiconto di parallelo-per-direttiva

parallelo-per-direttiva:

# omp di pragma parallelo per* parallelo-per-clausolaoptseq nuova riga*

parallelo-per-clausola:

univoco-parallelo-clausola

univoco-per-clausola

dati-clausola

parallelo-sezione-costrutto:

sezione-ambito di parallelo-sezione-direttiva

parallelo-sezione-direttiva:

# sezioni in parallelo di omp di pragma* parallelo-sezione-clausolaoptseq nuova riga*

parallelo-sezione-clausola:

univoco-parallelo-clausola

dati-clausola

master-costrutto:

strutturare-blocco di master-direttiva

master-direttiva:

# master del omp di pragma* nuova riga*

critico-costrutto:

strutturare-blocco di critico-direttiva

critico-direttiva:

# omp di pragma critico* area-frasescegliere nuova riga*

area-frase:

(identificatore)

barriera-direttiva:

# barriera di omp di pragma* nuova riga*

atomico-costrutto:

espressione-rendiconto di atomico-direttiva

atomico-direttiva:

# omp di pragma atomico* nuova riga*

vampata-direttiva:

# svuotamento del omp di pragma* vampata-varsscegliere nuova riga*

vampata-vars:

(variabile-elenco)

ordinare-costrutto:

strutturare-blocco di ordinare-direttiva

ordinare-direttiva:

# omp di pragma ordinato* nuova riga*

dichiarazione:

dichiarazioni standard/* */

threadprivate-direttiva

threadprivate-direttiva:

**# threadprivate di omp di pragma (variabile-elenco ) nuova riga

dati-clausola:

privato ( variabile-elenco )

copyprivate ( variabile-elenco )

firstprivate ( variabile-elenco )

**lastprivate (**variabile-elenco )

(condivisovariabile-elenco**)**

il valore predefinito (condiviso)

il valore predefinito (nessuno)

riduzione ( riduzione-operatore : variabile-elenco )

copyin ( variabile-elenco )

riduzione-operatore:

uno di: + * - & ^ | && ||

/* */in C#

variabile-elenco:

identificatore

variabile-elenco ,* identificatore*

/* */in C++

variabile-elenco:

ID-espressione

variabile-elenco ,* ID-espressione*