Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig mer om grammatikregler och syntaxtillägg i C och C++ för OpenMP, ett parallellt programmeringsramverk.
C.1-notation
Grammatikreglerna består av namnet på en icke-terminal, följt av ett kolon, följt av ersättningsalternativ på separata rader.
Det syntaktiska uttrycket termopt anger att termen är valfri i ersättningen.
Det syntaktiska uttrycket termoptseq motsvarar term-seqopt med följande regler:
term-seq:
termer
term-seqterm
term-seq,term
C.2-regler
Notationen beskrivs i avsnitt 6.1 i C-standarden. Den här grammatikbilagan visar tilläggen till grundläggande språk grammatik för OpenMP C- och C++-direktiven.
/* i C++ (ISO/IEC 14882:1998) */
statement-seq:
uttalande
openmp-directive
statement-seq-instruktion
statement-seq openmp-directive
/* i C90 (ISO/IEC 9899:1990) */
uttalandelista:
uttalande
openmp-directive
statement-list-instruktion
statement-list openmp-directive
/* i C99 (ISO/IEC 9899:1999) */
block-item:
deklaration
uttalande
openmp-directive
/* standarduttalanden */
uttalande:
openmp-construct
openmp-construct:
parallellkonstruktion
for-construct
sections-construct
singelkonstruktion
parallel-for-construct
parallel-sections-construct
master-construct
kritisk konstruktion
atomär konstruktion
ordnad struktur
openmp-directive:
förordning om barriärer
flush-directive
strukturerad-block:
uttalande
parallellkonstruktion:
parallell-direktiv strukturerad block
parallella direktiv:
# pragma omp parallel
parallel-clauseoptseqnew-line
parallel-clause:
unique-parallel-clause
data-klausul
unique-parallel-clause:
if (
uttryck)
num_threads (
uttryck)
for-construct:
for-directive iteration-statement
for-directive:
# pragma omp for
for-clauseoptseqnew-line
for-clause:
unique-for-clause
data-klausul
nowait
unique-for-clause:
ordered
schedule (
schematyp)
schedule (
schematyp,uttryck)
schematyp:
static
dynamic
guided
runtime
sections-construct:
sektioner-direktiv sections-scope
avsnittsdirektiv:
# pragma omp sections
sections-clauseoptseqnew-line
avsnittsklausul:
data-klausul
nowait
avsnitts-omfattning:
{ section-sequence }
section-sequence:
section-directiveoptstructured-block
sektion-sekvens sektions-direktiv strukturerad-block
avsnittsdirektiv:
# pragma omp section
ny rad
enkel konstruktion:
strukturerad blockering med ett enda direktiv
enda direktiv:
# pragma omp single
single-clauseoptseqnew-line
single-clause:
data-klausul
nowait
parallel-for-construct:
parallell-för-direktiv iterationsuttryck
parallel-for-directive:
# pragma omp parallel for
parallel-for-clauseoptseqnew-line
parallel-for-clause:
unique-parallel-clause
unique-for-clause
data-klausul
parallell-sektionskonstruktion:
parallellsektion-direktiv sektionsomfång
direktiv för parallella sektioner:
# pragma omp parallel sections
parallel-sections-clauseoptseqnew-line
parallellsektionerklausul:
unique-parallel-clause
data-klausul
master-construct:
mästerstyrande strukturerat block
huvuddirektiv:
# pragma omp master
ny rad
viktig konstruktion:
kritisk-direktiv strukturerad-block
kritiskt direktiv:
# pragma omp critical
region-frasoptnew-line
regionfras:
(identifierare)
barriärdirektiv:
# pragma omp barrier
ny rad
atomic-construct:
atomisk-direktiv uttrycks-sats
atomdirektiv:
# pragma omp atomic
ny rad
flush-directive:
# pragma omp flush
flush-varsoptnew-line
flush-vars:
(variabellista)
ordnad konstruktion:
strukturerat block för beställningsdirektiv
order-directive:
# pragma omp ordered
ny rad
/* standarddeklarationer */
deklaration:
threadprivate-directive
threadprivate-directive:
# pragma omp threadprivate (
variabellista)ny rad
data-klausul:
private (
variable-list)
copyprivate (
variable-list)
firstprivate (
variable-list)
lastprivate (
variable-list)
shared (
variable-list)
default ( shared )
default ( none )
reduction (
reduce-operator:variable-list)
copyin (
variable-list)
reduktionsoperator:
En av: + \* - & ^ | && ||
/* i C */
variable-list:
identifierare
variable-list,identifierare
/* i C++ */
variable-list:
id-uttryck
variabellista,id-uttryck