Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное
внешнее-объявление:
определение-функции
объявление
определение функции:
спецификаторы-объявлениянеоб объявитель
список-объявленийнеоб составная-инструкция
объявление:
спецификаторы-объявления список-инициализаторов-объявителейнеоб
список-объявлений:
объявление
список-объявлений объявление
спецификаторы-объявления:
спецификатор-класса-памяти спецификаторы-объявлениянеоб
спецификатор-типа спецификаторы-объявлениянеоб
квалификатор-типа спецификаторы-объявлениянеоб
спецификатор-класса-памяти: один из
auto register static extern typedef
спецификатор-типа: один из
void char short int long float double signed unsigned
спецификатор-структуры-или-объединения
спецификатор-перечисления
typedef-имя
квалификатор-типа: один из
const volatile
спецификатор-структуры-или-объединения:
структуры-или-объединения-идентификаторнеоб { список-объявлений-структуры }
структуры-или-объединения идентификатор
структура-или-объединение: одно из
struct union
список-объявлений-структуры:
объявление-структуры
список-объявлений-структуры объявление-структуры
список-объявителей-ииициализаторов:
объявитель-инициализатор
список-объявителей-инициализаторов , объявитель-инициализатор
объявитель-инициализатор:
объявитель
объявитель = инициализатор
объявление-структуры:
список-спецификаторов-квалификаторов список-объявителей-структуры
список-спецификаторов-квалификаторов:
спецификатор-типа список-спецификаторов-квалификаторовнеоб
квалификатор-типа список-спецификаторов-квалификаторовнеоб
список-структуры-объявителей:
структуры–объявитель
список-структуры-объявителей , структуры-объявитель
структуры-объявитель:
объявитель
объявительнеоб : константное-выражение
спецификатор-перечисления:
enum идентификаторнеоб { список-перечислителей }
enum идентификатор
список-перечислителей:
перечислитель
список-перечислителей перечислитель
перечислитель:
идентификатор
указательнеоб собственно-объявитель
собственно-объявитель:
идентификатор
( объявитель )
собственно-объявитель [ константное-выражениенеоб ]
собственно-объявитель ( список-типов-параметров )
собственно-объявитель ( список-идентификаторовнеоб )
указатель:
* список~квалификаторов-типанеоб
* список-квалификаторов-типанеоб указатель
список-квалификаторов-типа:
квалификатор-типа
список-квалификаторов-типа квалификатор-типа
список-типов-параметров:
список-параметров
список-параметров , ...
список-параметров:
объявление-параметра
список-параметров , объявление-параметра
объявление-параметра:
спецификаторы-объявления объявитель
спецификаторы-объявления абстрактный-объявительнеоб
список-идентификаторов:
идентификатор
список-идентификаторов , идентификатор
инициализатор:
выражение-присваивания
{ список-инициализаторов }
{ список-инициализаторов, }
список-инициализаторов:
инициализатор
список-инициализаторов , инициализатор
имя-типа:
список-спецификаторое-квалификаторов абстрактный-объявительнеоб
абстрактный-объявитель:
указатель
указательнеоб собственно-абстрактный-объявитель
собственно-абстрактный-объявитель:
( абстрактный-объявитель )
собственно-абстрактный-объявительнеоб [константное-выражениенеоб]
собственно-абстрактный-объявительнеоб (список-типов-параметровнеоб)
typedef-имя:
идентификатор
инструкция:
помеченная-инструкция
инструкция–выражение
составная-инструкция
инструкция-выбора
циклическая-инструкция
инструкция-перехода
помеченная-инструкция:
идентификатор : инструкция
case константное-выражение : инструкция
default : инструкция
инструкция-выражение:
выражениенеоб;
составная-инструкция:
( список-объявленийнеоб список-инструкцийнеоб)
список-инструкций:
инструкция
список-инструкций инструкция
инструкция-выбора:
if ( выражение ) инструкция
if ( выражение ) инструкция else инструкция
switch ( выражение ) инструкция
циклическая-инструкция:
while ( выражение ) инструкция
do инструкция while ( выражение )
return выражениенеоб;
выражение:
выражение-присваивания
выражение , выражение-присваивания
выражение-присваивания:
условное-выражение
унарное-выражение оператор-присваивания выражение-присваивания
оператор-присваивания: один из
= *= /= %= += -= <<= >>= &= ^= |=
условное-выражение:
логическое-ИЛИ-выражение
логическое-ИЛИ-выражение ? выражение : условное-выражение
константное-выражение:
условное-выражение
логическое-ИЛИ-выражение:
логическое-И-выражение
логическое-ИЛИ-выражение || логическое-И-выражение
логическое-И-выражение:
ИЛИ-выражение
логическое-И-выражение && ИЛИ-выражение