Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přečtěte si o gramatických pravidlech a rozšířeních syntaxe v jazyce C a C++ pro OpenMP, a to v architektuře paralelního programování.
Zápis C.1
Gramatická pravidla se skládají z názvu non-terminalu, následovaného dvojtečku, následované nahrazením alternativ na samostatných řádcích.
Výraz syntaktického výrazu označuje, že termín je v rámci nahrazení nepovinný.
Výraz syntaktického výrazu optseq je ekvivalentní výrazu term-seq opt s následujícími dalšími pravidly:
term-seq:
semestr
term-seqterm
term-seq,termín
Pravidla C.2
Zápis je popsaný v bodě 6.1 standardu C. Tato gramatická příloha ukazuje rozšíření gramatiky základního jazyka pro direktivy C a C++ OpenMP.
/* v C++ (ISO/IEC 14882:1998) */
statement-seq:
výrok
openmp-direktiva
statement-seq – příkaz
statement-seq openmp-direktiva
/* v C90 (ISO/IEC 9899:1990) */
seznam-výroků:
výrok
openmp-direktiva
statement-list – příkaz
statement-list openmp-direktiva
/* v C99 (ISO/IEC 9899:1999) */
block-item:
prohlášení
výrok
openmp-direktiva
/* standardní příkazy */
příkaz:
openmp-construct
openmp-construct:
parallel-construct
for-construct
sections-construct
single-construct
parallel-for-construct
konstrukce paralelních sekcí
master-construct
critical-construct
atomic-construct
ordered-construct
openmp-direktiva:
bariérová direktiva
flush-direktiva
strukturovaný blok:
výrok
parallel-construct:
parallelní směrnice strukturovaný blok
parallel-direktiva:
# pragma omp parallel
parallel-clauseoptseqnew-line
paralelní klauzule:
unikátní-paralelní-věta
klauzule data
jedinečná-paralelní-věta:
if (
výraz)
num_threads (
výraz)
for-construct:
for-direktiva iteration-statement
for-directive:
# pragma omp for
for-clauseoptseqnový řádek
for-clause:
unique-for-clause
klauzule data
nowait
jedinečný pro větu:
ordered
schedule (
schedule-kind)
schedule (
schedule-kind,výraz )
druh plánu:
static
dynamic
guided
runtime
sections-construct:
sekce-direktiva rozsah-sekce
sections-direktiva:
# pragma omp sections
sections-clauseoptseqnew-line
sekce-klauzule:
klauzule data
nowait
rozsah sekce:
{ section-sequence }
section-sequence:
oddíl-direktivaoptstructured-block
sekvence-sekce směrnice-sekce strukturovaný-blok
section-directive:
# pragma omp section
nový řádek
single-construct:
strukturovaný blok s jednou direktivou
single-direktiva:
# pragma omp single
jednoduchá klauzuleoptseqnový řádek
single-clause:
klauzule data
nowait
parallel-for-construct:
parallel-for-direktiv iteration-statement
parallel-for-directive:
# pragma omp parallel for
parallel-for-clauseoptseqnew-line
parallel-for-clause:
unikátní-paralelní-věta
unique-for-clause
klauzule data
konstrukce paralelních sekcí:
paralelně-sections-directive section-scope
parallel-sections-direktiva:
# pragma omp parallel sections
parallel-sections-clauseoptseqnew-line
ustanovení o paralelních sekcích:
unikátní-paralelní-věta
klauzule data
master-construct:
hlavní direktiva – strukturovaný blok
master-direktiva:
# pragma omp master
nový řádek
critical-construct:
strukturovaný blok se strukturovanou direktivou
critical-directive:
# pragma omp critical
region-phraseoptnew-line
frázi oblasti:
(identifikátor)
bariérová direktiva:
# pragma omp barrier
nový řádek
atomic-construct:
atomic-direktiva expression-statement
atomic-direktiva:
# pragma omp atomic
nový řádek
flush-direktiva:
# pragma omp flush
flush-varsoptnew-line
flush-vars:
(seznam proměnných)
ordered-construct:
řazené direktivy strukturované bloky
ordered-direktiva:
# pragma omp ordered
nový řádek
/* standardní deklarace */
deklarace:
threadprivate-direktiva
threadprivate-direktiva:
# pragma omp threadprivate (
seznam proměnných)new-line
klauzule data:
private (
seznam proměnných)
copyprivate (
seznam proměnných)
firstprivate (
seznam proměnných)
lastprivate (
seznam proměnných)
shared (
seznam proměnných)
default ( shared )
default ( none )
reduction (
seznam proměnných operátoru:redukce)
copyin (
seznam proměnných)
redukční operátor:
Jedna z těchto možností: + \* - & ^ | && ||
/* v C */
variable-list:
identifikátor
identifikátor seznamu,proměnných
/* v C++ */
variable-list:
id-expression
seznam proměnných,id-expression