Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте о правилах грамматики и расширениях синтаксиса в C и C++ для OpenMP, параллельной платформе программирования.
Нотация C.1
Правила грамматики состоят из имени для неконечного терминала, за которым следует двоеточие, а затем заменять альтернативные варианты на отдельных строках.
Термин синтаксического выраженияуказывает , что термин является необязательным в рамках замены.
Термин syntactic expression optseq эквивалентен варианту term-seq с помощью следующих дополнительных правил:
term-seq:
срок
термин term-seq
термин term-seq,
Правила C.2
Нотация описана в разделе 6.1 стандарта C. В этом приложении грамматики показаны расширения базовой грамматики языка для директив OpenMP C и C++.
/* в C++ (ISO/IEC 14882:1998) */
statement-seq:
инструкция
директива openmp-
Оператор statement-seq
инструкция-seq openmp-директива
/* в C90 (ISO/IEC 9899:1990) */
список операторов:
инструкция
директива openmp-
Оператор statement-list
инструкция-list openmp-директива
/* в C99 (ISO/IEC 9899:1999) */
Block-item:
декларация
инструкция
директива openmp-
/* стандартные операторы */
заявление:
openmp-construct
openmp-construct:
параллельная конструкция
for-construct
sections-construct
одноконструкционная конструкция
parallel-for-construct
параллельные разделы-конструктор
master-construct
критическая конструкция
атомарная конструкция
упорядоченная конструкция
директива openmp-:
Директива barrier-
Директива flush-
структурированный блок:
инструкция
параллельная конструкция:
Структурированный блок параллельной директивы
параллельная директива:
# pragma omp parallel
предложение parallel-optseqnew-line
предложение parallel-:
предложение unique-parallel-
предложение data-
предложение unique-parallel-:
if (
выражение)
num_threads (
выражение)
for-construct:
Оператор for-directive iteration-statement
for-директива:
# pragma omp for
предложение for-clauseoptseqnew-line
предложение for::
уникальное предложение for-clause
предложение data-
nowait
unique-for-clause:
ordered
schedule (
Тип расписания)
schedule (
Тип,
расписания выражение )
тип расписания:
static
dynamic
guided
runtime
sections-construct:
sections-directive section-scope
sections-directive:
# pragma omp sections
предложение sections-clauseoptseqnew-line
sections-clause:
предложение data-
nowait
область раздела:
{ последовательность разделов }
последовательность разделов:
директива section-optstructured-block
последовательность-разделов директивы-раздела структурированный-блок
директива section-:
# pragma omp section
новая строка
одноконструкционная конструкция:
структурированный блок с одной директивой
одноэлементная директива:
# pragma omp single
одно предложениеoptseqnew-line
одно предложение:
предложение data-
nowait
parallel-for-construct:
оператор parallel-for-directive iteration-statement
Parallel-for-directive:
# pragma omp parallel for
Предложение parallel-for-for-optseqnew-line
parallel-for-clause:
предложение unique-parallel-
уникальное предложение for-clause
предложение data-
конструкция параллельных секций:
область раздела parallel-sections-directive
Директива parallel-sections-:
# pragma omp parallel sections
предложение parallel-sections-optseqnew-line
предложение parallel-sections-:
предложение unique-parallel-
предложение data-
master-construct:
главного директивного структурированного блока
master-директива:
# pragma omp master
новая строка
критически важный конструктор:
структурированный блок критической директивы
критическая директива:
# pragma omp critical
фраза регионавыборновой строки
фраза региона:
(идентификатор)
директива barrier-:
# pragma omp barrier
новая строка
атомарная конструкция:
оператор atomic-directive expression-statement
атомная директива:
# pragma omp atomic
новая строка
Директива flush:
# pragma omp flush
flush-varsвыборновой строки
flush-vars:
(переменный список)
упорядоченная конструкция:
упорядоченная директива структурированная блокировка
упорядоченная директива:
# pragma omp ordered
новая строка
/* Стандартные объявления */
объявление:
threadprivate-директива
threadprivate-директива:
# pragma omp threadprivate (
переменная списка)
новая строка
предложение data-clause:
private (
переменная списка)
copyprivate (
переменная списка)
firstprivate (
переменная списка)
lastprivate (
переменная списка)
shared (
переменная списка)
default ( shared )
default ( none )
reduction (
список переменных операторов:
сокращения)
copyin (
переменная списка)
оператор сокращения:
Одно из следующих: + \* - & ^ | && ||
/* в C */
переменная списка:
идентификатор
Идентификатор списка,
переменных
/* в C++ */
переменная списка:
выражение id-expression
выражение идентификатора переменной списка,