C.2 Правила
Нотация описана в разделе 6,1 c. Это приложение отображает грамматики расширения в грамматике базового языка для директив OpenMP c и C++.
/* в C++ (14882:1998 ISO/IEC) *
выписка-seq.
Оператор
openmp-директивно
выписка-seq выписка
выписка-seq openmp-директивное
/* в C90 (9899:1990 ISO/IEC) *
statement-list.
Оператор
openmp-директивно
оператор выписка-списка
выписка-список openmp-директивный
/* в C99 (9899:1999 ISO/IEC) *
блок-элемент.
объявление
Оператор
openmp-директивно
выписка.
выписки/* стандартные *
openmp-конструкция
openmp-конструкция.
параллельн-конструкция
для-конструкция
раздел-конструкция
единый-конструкция
параллельн-для-конструкция
параллельн-раздел-конструкция
образец-construc
критическ-конструкция
атомарный-конструкция
приказывать-конструкция
openmp-директивно.
барьер-директивно
запись диск-директивно
составлять-блок.
Оператор
параллельн-конструкция.
параллельн-директивный составлять-блок
параллельн-директивно.
количество параллельно omp прагмы параллельн-предложениеoptseq новая линия
параллельн-предложение.
уникально-параллельн-предложение
данные-предложение
уникально-параллельн-предложение.
если ( Выражение )
(num_threads Выражение )
для-конструкция.
для-директивная итерация-выписка
для-директивно.
# omp pragma для* для-предложениеoptseq новая линия*
для-предложение.
уникально-для-предложение
данные-предложение
nowait
уникально-для-предложение.
Упорядочено
расписание ( расписание-тип )
расписание ( расписание-тип ") Выражение
расписание-тип.
static
dynamic
направляется
среда выполнения
раздел-конструкция.
раздел-директивная раздел-область
раздел-директивно.
# разделах omp прагмы* раздел-предложениеoptseq новая линия*
раздел-предложение.
данные-предложение
nowait
раздел-область.
{раздел-последовательность}
раздел-последовательность.
раздел-директивноOpt составлять-блок
составлять-блок раздел-последовательности раздел-директивный
раздел-директивно.
# раздел omp прагмы* новая линия*
единый-конструкция.
единый-директивный составлять-блок
единый-директивно.
# omp pragma отдельное* единый-предложениеoptseq новая линия*
единый-предложение.
данные-предложение
nowait
параллельн-для-конструкция.
параллельн-для-директивная итерация-выписка
параллельн-для-директивно.
# omp pragma для параллельного* параллельн-для-предложениеoptseq новая линия*
параллельн-для-предложение.
уникально-параллельн-предложение
уникально-для-предложение
данные-предложение
параллельн-раздел-конструкция.
параллельн-раздел-директивная раздел-область
параллельн-раздел-директивно.
# разделах параллельных omp прагмы* параллельн-раздел-предложениеoptseq новая линия*
параллельн-раздел-предложение.
уникально-параллельн-предложение
данные-предложение
образец-конструкция.
образец-директивный составлять-блок
образец-директивно.
# образец omp прагмы* новая линия*
критическ-конструкция.
критическ-директивный составлять-блок
критическ-директивно.
# omp pragma критическое* область-фразаOpt новая линия*
область-фраза.
(идентификатор)
барьер-директивно.
# барьера omp прагмы* новая линия*
атомарный-конструкция.
атомарный-директивная выражение-выписка
атомарный-директивно.
# атомарный omp прагмы* новая линия*
запись диск-директивно.
# записи на диск omp прагмы* запись диск-varsOpt новая линия*
запись диск-vars.
(переменная-список)
приказывать-конструкция.
приказывать-директивный составлять-блок
приказывать-директивно.
заказанное количество omp прагмы* новая линия*
объявление.
объявления/* стандартные *
threadprivate-директивно
threadprivate-директивно.
omp pragma (# threadprivateсписок переменных )* новая линия*
данные-предложение.
private ( список переменных )
(copyprivate список переменных )
(firstprivate список переменных )
(lastprivateсписок переменных )
shared (список переменных)
(коллективная) значение по умолчанию
значение по умолчанию (нет)
снижение ( уменьшени-оператор . список переменных )
(copyin список переменных )
уменьшени-оператор.
один из. + * - & " ^ " | && ||
/* в c# *
список переменных.
identifier
список переменных "* Идентификатор*
/* */" в C++
список переменных.
ИД-выражение
список переменных "* ИД-выражение*