struct union
список-объявлений-структуры:
объявление-структуры
список-объявлений-структуры объявление-структуры
список-объявителей-ииициализаторов:
объявитель-инициализатор
список-объявителей-инициализаторов, объявитель-инициализатор
объявитель-инициализатор:
объявитель
объявитель = инициализатор
объявление-структуры:
список-спецификаторов-квалификаторов список-объявителей-структуры
список-спецификаторов-квалификаторов:
спецификатор-типа список-спецификаторов-квалификаторовнеоб
квалификатор-типа список-спецификаторов-квалификаторовнеоб
список-структуры-объявителей:
структуры–объявитель
список-структуры-объявителей, структуры-объявитель
структуры-объявитель:
объявитель
объявительнеоб : константное-выражение
спецификатор-перечисления:
enum идентификаторнеоб { список-перечислителей }
enum идентификатор
список-перечислителей:
перечислитель
список-перечислителей перечислитель
перечислитель:
идентификатор
указательнеоб собственно-объявитель
собственно-объявитель:
идентификатор
( объявитель )
собственно-объявитель [ константное-выражениенеоб ]
собственно-объявитель ( список-типов-параметров )
собственно-объявитель ( список-идентификаторовнеоб )
указатель:
* список-квалификаторов-типанеоб
* список-квалификаторов-типанеоб указатель
список-квалификаторов-типа:
квалификатор-типа
список-квалификаторов-типа квалификатор-типа
список-типов-параметров:
список-параметров
список-параметров, ...
список-параметров:
объявление-параметра
список-параметров, объявление-параметра
объявление-параметра:
спецификаторы-объявления объявитель
спецификаторы-объявления абстрактный-объявительнеоб
список-идентификаторов:
идентификатор
список-идентификаторов, идентификатор
инициализатор:
выражение-присваивания
{ список-инициализаторов }
{ список-инициализаторов, }
список-инициализаторов:
инициализатор
список-инициализаторов, инициализатор
имя-типа:
список-спецификаторое-квалификаторов абстрактный-объявительнеоб
абстрактный-объявитель:
указатель
указательнеоб собственно-абстрактный-объявитель
собственно-абстрактный-объявитель:
( абстрактный-объявитель )
собственно-абстрактный-объявительнеоб [константное-выражениенеоб]
собственно-абстрактный-объявительнеоб (список-типов-параметровнеоб)
typedef-имя:
идентификатор
инструкция:
помеченная-инструкция
инструкция–выражение
составная-инструкция
инструкция-выбора
циклическая-инструкция
инструкция-перехода
помеченная-инструкция:
идентификатор: инструкция
case константное-выражение: инструкция
default: инструкция
инструкция-выражение:
выражениенеоб;
составная-инструкция:
( список-объявленийнеоб список-инструкцийнеоб)
список-инструкций:
инструкция
список-инструкций инструкция
инструкция-выбора:
if( выражение ) инструкция
if ( выражение ) инструкция else инструкция
switch( выражение ) инструкция
циклическая-инструкция:
while ( выражение ) инструкция
do инструкция while ( выражение )
return выражениенеоб;
выражение:
выражение-присваивания
выражение, выражение-присваивания
выражение-присваивания:
условное-выражение
унарное-выражение оператор-присваивания выражение-присваивания
оператор-присваивания: один из
= *= /= %= += -= <<= >>= &= ^= |=
условное-выражение:
логическое-ИЛИ-выражение
логическое-ИЛИ-выражение ? выражение : условное-выражение
константное-выражение:
условное-выражение
логическое-ИЛИ-выражение:
логическое-И-выражение
логическое-ИЛИ-выражение || логическое-И-выражение
логическое-И-выражение:
ИЛИ-выражение
логическое-И-выражение && ИЛИ-выражение
ИЛИ-выражение:
исключающее-ИЛИ-выражение
ИЛИ-выражение | исключающее-ИЛИ-выражение
исключающее-ИЛИ-выражение:
И-выражение
исключающее-ИЛИ-выражение ^ И-выражение
И-выражение:
выражение-равенства
И-выражение & выражение-равенства
выражение-равенства:
выражение-отношения
выражение-равенства == выражение-отношения
выражение-равенства != выражение-отношения
выражение-отношения:
сдвиговое-выражение
выражение-отношения < сдвиговое-выражение
выражение-отношения > сдвиговое-выражение
выражение-отношения <= сдвиговое-выражение
выражение-отношения >= сдвиговое-выражение
сдвиговое-выражение:
аддитивное-выражение
сдвиговое-выражение >> аддитивное-выражение
сдвиговое-выражение << аддитивное-выражение
аддитивное-выражение:
мультипликативное-выражение
аддитивное-выражение + мультипликативное-выражение
аддитивное-выражение - мультипликативное-выражение
мультипликативное-выражение:
выражение-приведенное-к-типу
мультипликативное-выражение * выражение-приведенное-к-типу
мультипликативное-выражение / выражение-приведенное-к-типу
мультипликативное-выражение % выражение-приведенное-к-типу
выражение-приведенное-к-типу:
унарное-выражение
( имя-типа ) выражение-приведенное-к-типу
унарное-выражение:
постфиксное –выражение
++ унарное-выражение
-- унарное-выражение
унарный-оператор выражение-приведенное-к-типу
sizeof унарное-выражение
sizeof( имя-типа )
унарный-оператор: один из
& * + - ~ !
постфиксное-выражение:
первичное-выражение
постфиксное-выражение[ выражение ]
постфиксное-выражение( список-аргументов-выраженийнеоб )
постфиксное-выражение, идентификатор
постфиксное-выражение-> идентификатор
постфиксное-выражение++
постфиксное-выражение–
первичное -выражение:
идентификатор
константа
строка
( выражение )
список-аргументов-выражений:
выражение-присваивания
список-аргументов-выражений , выражение-присваивания
константа:
целая-константа
символьная-константа
константа-с-плавающей-точкой
константа-перечисление
Ниже приводится грамматика языка препроцессора в виде перечня структур управляющих строк. Для механического получения программы грамматического разбора она не годится. Грамматика включает символ текст, который означает текст обычной программы, безусловные управляющие строки препроцессора и его законченные условные конструкции.
управляющая-строка:
#define идентификатор последовательность-лексем
#define идентификатор ( идентификатор, ..., идентификатор) последовательность-лексем
#undef идентификатор
#include <имя-файла>
#include "имя-файла"
#include последовательность-лексем
#line константа "идентификатор"
#line константа
#error последовательность-лексемнеоб
#pragma последовательность-лексемнеоб
#
условная-конструкция-препроцессора
условная-конструкция-препроцессора:
if-строка текст elif-части else-частьнеоб #endif
if-строка:
#if константное-выражение
#ifdef идентификатор
#ifndef идентификатор
elif-части:
elif-строка текст
elif-частинеоб
elif-строка:
#elif константное-выражение
else-часть:
else-строка текст
else-строка:
#else
Дата добавления: 2015-10-09; просмотров: 713;