共用方式為


C. OpenMP C 和 C++ 文法

C.1 標記法
C.2 規則

C.1 標記法

文法規則包含非終端機的名稱,後面接著冒號,後面接著個別行的取代替代項目。

語法運算式字詞 opt 表示字詞在取代中是選擇性的。

語法運算式字詞optseq 相當於 term-seqopt,具有下列額外規則:

term-seq
term
term-seq term
term-seq , term

C.2 規則

C 標準的第 6.1 節會說明標記法。 此文法附錄顯示 OpenMP C 和 C++ 指示詞基底語言文法的延伸模組。

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

statement-seq
陳述式
openmp-directive
statement-seq 陳述式
statement-seq openmp-directive

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

statement-list:
陳述式
openmp-directive
statement-list statement
statement-list openmp-directive

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

block-item
宣告
陳述式
openmp-directive

/* 標準陳述式 */

statement:
openmp-construct

openmp-construct
parallel-construct
for-construct
sections-construct
single-construct
parallel-for-construct
parallel-sections-construct
master-construct
critical-construct
atomic-construct
ordered-construct

openmp-directive
barrier-directive
flush-directive

structured-block
陳述式

parallel-construct
parallel-directive structured-block

parallel-directive
# pragma omp parallel parallel-clauseoptseq new-line

parallel-clause
unique-parallel-clause
data-clause

unique-parallel-clause
if ( expression )
num_threads ( expression )

for-construct
for-directive iteration-statement

for-directive
# pragma omp for for-clauseoptseq new-line

for-clause
unique-for-clause
data-clause
nowait

unique-for-clause
ordered
schedule ( schedule-kind )
schedule ( schedule-kind , expression )

schedule-kind
static
dynamic
guided
runtime

sections-construct
sections-directive section-scope

sections-directive
# pragma omp sections sections-clauseoptseq new-line

sections-clause
data-clause
nowait

section-scope
{ section-sequence }

section-sequence
section-directiveopt structured-block
section-sequence section-directive structured-block

section-directive
# pragma omp section new-line

single-construct
single-directive structured-block

single-directive
# pragma omp single single-clauseoptseq new-line

single-clause
data-clause
nowait

parallel-for-construct
parallel-for-directive iteration-statement

parallel-for-directive
# pragma omp parallel for parallel-for-clauseoptseq new-line

parallel-for-clause
unique-parallel-clause
unique-for-clause
data-clause

parallel-sections-construct
parallel-sections-directive section-scope

parallel-sections-directive
# pragma omp parallel sections parallel-sections-clauseoptseq new-line

parallel-sections-clause
unique-parallel-clause
data-clause

master-construct
master-directive structured-block

master-directive
# pragma omp master new-line

critical-construct
critical-directive structured-block

critical-directive
# pragma omp critical region-phraseopt new-line

region-phrase
(identifier)

barrier-directive
# pragma omp barrier new-line

atomic-construct
atomic-directive expression-statement

atomic-directive
# pragma omp atomic new-line

flush-directive
# pragma omp flush flush-varsopt new-line

flush-vars
(variable-list)

ordered-construct
ordered-directive structured-block

ordered-directive
# pragma omp ordered new-line

/* 標準宣告 */

declaration
threadprivate-directive

threadprivate-directive
# pragma omp threadprivate ( variable-list ) new-line

data-clause
private ( variable-list )
copyprivate ( variable-list )
firstprivate ( variable-list )
lastprivate ( variable-list )
shared ( variable-list )
default ( shared )
default ( none )
reduction ( reduction-operator : variable-list )
copyin ( variable-list )

reduction-operator
 其中一個:+ \* - & ^ | && ||

/* 在 C */

variable-list
識別碼
variable-list , identifier

/* 在 C++ */

variable-list
id-expression
variable-list , id-expression