Выбрать главу

 список-описаний-парам , …

список-описаний-парам:

 описание-параметра

 список-описаний-парам , описание-параметра

описание-параметра:

 спецификации-описания описатель

 спецификации-описания описатель = выражение

 спецификации-описания абстрактный-описатель opt

 спецификации-описания абстрактный-описатель opt = выражение

определение-функции:

 спецификации-описания opt описатель инициализатор-ctor тело-функции

тело-функции:

 составной-оператор

инициализатор:

 = выражение-присваивания

 = { список-инициализаторов , opt }

 ( список-выражений )

список-инициализаторов:

 выражение-присваивания

 список-инициализаторов , выражение-присваивания

 { список-инициализаторов , opt }

R.17.5 Описания класса

спецификация-класса:

 заголовок-класса { список-членов opt }

заголовок-класса:

 служебное-слово-класса идентификатор opt спец-базовых opt

 служебное-слово-класса имя-класса спец-базовых opt

служебное-слово-класса:

 class

 struct

 union

список-членов:

 описание-члена список-членов opt

 спецификация-доступа : список-членов opt

описание-члена:

 спецификации-описания opt список-описателей-членов opt ;

 определение-функции ; opt

 уточненное-имя ;

список-описателей-членов:

 описатель-члена

 список-описателей-членов , описатель-члена

описатель-члена:

 описатель спецификация-чистой opt

 идентификатор opt : выражение-константа

спецификация-чистой:

 = 0

список-базовых:

 спецификация-базовых

 список-базовых , спецификация-базовых

спецификация-базовых:

 полное-имя-класса

 virtual спецификация-доступа opt полное-имя-класса

 спецификация-доступа virtual opt полное-имя-класса

спецификация-доступа:

 private

 protected

 public

имя-функции-преобразования:

 operator имя-типа-преобразования

имя-типа-преобразования:

 список-спецификаций-типа операция-ptr opt

инициализатор-ctor:

 : список-инициализаторов-членов

список-инициализаторов-членов:

 инициализатор-члена

 инициализатор-члена , список-инициализаторов-члена

инициализатор-члена:

 полное-имя-класса ( список-выражений opt )

 идентификатор

имя-функции-оператор:

 operator операция

операция : один из

 new delete

 + - * / % ^& | ~

 ! = ‹ › += -= *= /= %=

 ^= &= |= ‹‹ ›› ››= ‹‹= == !=

 ‹= ›= && || ++ -- , -›* -›

 () []

R.17.6 Операторы

оператор:

 помеченный-оператор

 оператор-выражение

 составной-оператор

 выбирающий-оператор

 оператор-цикла

 оператор-перехода

 оператор-описания

помеченный-оператор:

 идентификатор : оператор

 case выражение-константа : оператор

 default : оператор

оператор-выражение:

 выражение opt;

составной-оператор:

 { список-операторов opt }

список-операторов:

 оператор

 список-операторов оператор

выбирающий-оператор:

 if ( выражение ) оператор

 if ( выражение ) оператор else оператор

 switch ( выражение ) оператор

оператор-цикла:

 while ( выражение ) оператор

 do оператор while ( выражение )

 for ( оператор-иниц выражение opt ; выражение opt ) оператор

оператор-иниц:

 оператор-выражение

 оператор-описание

оператор-перехода:

 break ;

 continue ;

 return выражение opt ;

 goto идентификатор ;

оператор-описания:

 описание

R.17.7 Препроцессор

#define идентификатор строка-лексем

#define идентификатор ( идентификатор , … , идентификатор )  строка-лексем

#include "имяфайла"

#include ‹имяфайла›

#line константа "имяфайла" opt

#undef идентификатор

условное:

 часть-if части-elif opt часть-else opt строка-endif

часть-if:

 строка-if текст

строка-if:

 # if выражение-константа

 # ifdef идентификатор

 # ifndef идентификатор

части-elif:

 строка-elif текст

 части-elif строка-elif текст

строка-elif:

 # elif выражение-константа

часть-else:

 строка-else текст

строка-else:

 # else

строка-endif:

 # endif

R.17.8 Шаблоны типа

описание-шаблона-типа:

 template ‹ список-параметров-шаблона-типа › описание

список-параметров-шаблона-типа:

 параметр-шаблона-типа

 список-параметров-шаблона-типа , параметр-шаблона-типа