| |
Сводка синтаксических правил.
Основными выражениями являются следующие:
-
Выражение
:
-
первичное-выражение
- *
выражение
- &
выражение
- -
выражение
- !
выражение
- ~
выражение
- ++
l-значение
- --
l-значение
-
l-значение
++
-
l-значение
--
-
sizeof
выражение
- (имя типа)
выражение
-
выражение
бинарная-операция
выражение
-
выражение
?
выражение
:
выражение
-
l-значение
операция-присваивания
выражение
-
выражение
,
выражение
-
Первичное выражение
:
- идентификатор
- константа
- строка
- (выражение)
-
первичное-выражение
(список выражений
необ
)
-
первичное-выражение
[выражение]
-
l-значение
. идентификатор
-
первичное-выражение
-> идентификатор
-
l-значение
:
- идентификатор
-
первичное-выражение
[
выражение
]
-
l-значение
. идентификатор
-
первичноe-выражение
-> идентификатор
- *
выражение
- (
l-значение
)
Операции первичных выражений
() [] . ->
* & - ! ~ ++ -- sizeof(имя типа)
Перевод.: условная операция группируется справа налево; этоизменение внесено в язык в 1978 г.) группируются слева направо и ихприоритет убывает в следующем порядке:
-
бинарная операция
:
- * / %
- + -
- >> <<
- < > <= >=
- == !=
- &
- ~
- |
- &&
- ||
- ?:
-
Операции присваивания
:
- = += -= *= ?= %= >>= <<= &= ~= |=
-
Описание
:
-
спецификаторы-описания
список-инициализируемых-описателей
необ
;
-
Спецификаторы-описания
:
-
спецификатор-типа
спецификаторы-описания
необ
-
спецификатор-класса-памяти
спецификаторы-описания
необ
-
Спецификатор-класса-памяти
:
-
auto
-
static
-
extern
-
register
-
typedef
-
Спецификатор-типа
:
-
char
-
short
-
int
-
long
-
unsigned
-
float
-
double
-
спецификатор-структуры-или-об'единения
-
определяющее-тип-имя
-
Список-инициализируемых-описателей
:
-
инициализируемый-описатель
-
инициализируемый-описатель
,
-
список-инициализируемых-описателей
-
инициализируемый-описатель
-
описатель-инициализатор
необ
-
Описатель
:
- идентификатор
- (
описатель
)
- *
описатель
-
описатель
()
-
описатель
[константное выражение
необ
]
-
Спецификатор-структуры-или-об'единения
:
-
struct
список-описателей-структуры
-
struct
идентификатор {
список-описаний-структуры
}
-
struct
идентификатор
-
union
{
список-описаний-структуры
}
-
union
идентификатор {
список-описаний-структуры
}
-
union
идентификатор
-
Список-описаний-структуры
:
-
описаниe-структуры
-
описаниe-структуры
список-описаний-структуры
-
Описание структуры
:
-
спецификатор-типа
список-описателей-структуры
:
-
Список-описателей-структуры
:
-
описатель-структуры
-
описатель-структуры
,
список-описателей-структуры
-
Описатель-структуры
:
-
описатель
-
описатель
: константное выражение
- :константноe-выражение
-
Инициализатор
:
- =
выражение
- = {
список-инициализатора
}
- = {
список-инициализатора
,}
-
Список инициализатора
:
-
выражение
-
список-инициализатора
,
список-инициализатора
- {
список-инициализатора
}
-
Имя-типа
:
-
спецификатор-типа
абстрактный-описатель
-
Абстрактный-описатель
:
- пусто
- {
абстрактный-описатель
}
- *
абстрактный-описатель
-
абстрактный-описатель
()
-
абстрактный-описатель
[константноe-выражение
необ
]
-
Определяющее-тип-имя
:
- идентификатор
-
Составной-оператор
:
- {
список-описаний
необ
список-операторов
необ
}
-
Список-описаний
:
-
описание
-
описание
список-описаний
-
Список-операторов
:
-
оператор
-
оператор
список-операторов
-
Оператор
:
-
составной оператор
-
выражение
;
-
if
(
выражение
)
оператор
-
if
(
выражение
)
оператор
else
оператор
-
while
(
выражение
)
оператор
-
do
оператор
while
(
выражение
);
-
for
(
выражениe-1
необ
;
выражениe-2
необ
;
выражениe-3
необ
)
оператор
-
switch
(
выражение
)
оператор
-
case
константноe-выражение :
оператор
-
default
:
оператор
-
break
;
-
continue
;
-
return
;
-
return
выражение
;
-
goto
идентификатор;
- идентификатор :
оператор
- ;
-
Программа
:
-
внешнее-определение
-
внешнее-определение
программа
-
Внешнеe-определение
:
-
определениe-функции
-
определениe-данных
-
Определениe-функции
:
-
спецификатор-типа
необ
описатель-функции
тело-функции
-
Описатель-функции
:
-
описатель
(
список-параметров
необ
)
-
Список-параметров
:
-
идетификатор
-
идентификатор
,
список-параметров
-
Тело-функции
:
-
список-описаний-типа
оператор-функции
-
Оператор-функции
:
- {
список описаний
необ
список-операторов
}
- Определение данных
:
-
extern
необ
спецификатор-типа
необ
список-инициализируемых-описателей
необ
;
-
static
необ
спецификатор-типа
необ
список-инициализируемых-описателей
необ
;
-
#define
идентификатор строка-лексем
-
#define
идентификатор(идентификатор,...,идентификатор)строка-лексем
-
#undef
идентификатор
-
#include
"имя-файла"
-
#include
<имя-файла>
-
#if
константноe-выражение
-
#ifdef
идентификатор
-
#ifndef
идентификатор
-
#else
-
#endif
-
#line
константа идентификатор
[Назад]
[Содержание]
|