Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Сводка синтаксических правил

Поиск
Эта сводка синтаксиса языка "C" предназначена скорее дляоблегчения понимания и не является точной формулировкой язы-ка.

Выражения

Основными выражениями являются следующие: выражение: первичное-выражение * выражение & выражение - выражение! Выражение \^ выражение ++ L-значение -- L-значение L-значение ++ L-значение -- SIZEOF выражение (имя типа) выражение выражение бинарная-операция выражение выражение? Выражение: выражение L-значение операция-присваивания выражение выражение, выражение первичное выражение: идентификатор константа строка (выражение) первичное-выражение (список выражений необ) первичное-выражение [выражение] L-значение. Идентификатор первичное выражение -> идентификатор L-значение: идентификатор первичное-выражение [выражение] L-значение. Идентификатор первичное-выражение -> идентификатор * выражение (L-значение) Операции первичных выражений () []. -> имеют самый высокий приоритет и группируются слеванаправо. Унарные операции * & -! \^ ++ -- SIZEOF(Имя типа) имеют более низкий приоритет, чем операции первичных выраже-ний, но более высокий, чем приоритет любой бинарной опера-ции. Эти операции группируются справа налево. Все бинарныеоперации и условная операция (прим. Перевод.: условная опе-рация группируется справа налево; это изменение внесено вязык в 1978 г.) группируются слева направо и их приоритетубывает в следующем порядке: Бинарные операции: * / % + - >> << < > <= >= ==!= & \^ \! && \!\!?: Все операции присваивания имеют одинаковый приоритет и груп-пируются справа налево.Операции присваивания: = += -= *=?= %= >>= <<= &= \^= \!= Операция запятая имеет самый низкий приоритет и группируетсяслева направо.

Описания

Описание:спецификаторы-описания список-инициализируемых-описателей необ; спецификаторы-описания: спецификатор-типа спецификаторы-описания необ спецификатор-класса-памяти спецификаторы-описания необспецификатор-класса-памяти: AUTO STATIC EXTERN REGISTER TYPEDEFспецификатор-типа: CHAR SHORT INT LONG UNSIGNED FLOAT DOUBLE спецификатор-структуры-или-объединения определяющее-тип-имясписок-инициализируемых-описателей: инициализируемый-описатель инициализируемый-описатель, список-инициализируемых-описателейинициализируемый-описатель описатель-инициализатор необописатель: идентификатор (описатель) * описатель описатель () описатель [константное выражение необ] спецификатор-структуры-или-объединения: STRUCT список-описателей-структуры STRUCT идентификатор \(список-описаний-структуры\) STRUCT идентификатор UNION \(список-описаний-структуры\) UNION идентификатор \(список-описаний-структуры\) UNION идентификаторсписок-описаний-структцры: описание-структуры описание-структуры список-описаний-структурыописание структуры: спецификатор-типа список-описателей-структуры:список-описателей-структуры описатель-структуры описатель-структуры,список-описателей-структурыописатель-структуры: описатель описатель: константное выражение:константное-выражениеинициализатор: = выражение = \(список-инициализатора\) = \(список-инициализатора\)список инициализатора: выражение список-инициализатора,список-инициализатора \(список-инициализатора\)имя-типа: спецификатор-типа абстрактный-описательабстрактный-описатель: пусто \(абстрактный-описатель\) * абстрактный-описатель абстрактный-описатель () абстрактный-описатель [константное-выражение необ]определяющее-тип-имя: идентификатор

Операторы

составной-оператор: \(список-описаний список-операторов необ необ\)список-описаний: описание описание список-описанийсписок-операторов: оператор оператор список-операторовоператор: составной оператор выражение; IF (выражение) оператор IF (выражение) оператор ELSE оператор WHILE (выражение) оператор DO оператор WHILE (выражение); FOR(выражение-1;выражение-2;выражение-3) необ необ необ оператор SWITCH (выражение) оператор CASE константное-выражение: оператор DEFAULT: оператор BREAK; CONTINUE; RETURN; RETURN выражение; GOTO идентификатор; идентификатор: оператор;

26.4. Внешние определения

Программа: внешнее-определение внешнее-определение программавнешнее-определение: определение-функции определение-данныхопределение-функции: спецификатор-типа описатель-функции тело-функции необописатель-функции: описатель (список-параметров) необсписок-параметров: идетификатор идентификатор, список-параметровтело-функции: список-описаний-типа оператор-функцииоператор-функции: \(список описаний список-операторов\) необопределение данных: EXTERN спецификатор типа список необ необ инициализируемых описателей; необ STATIC спецификатор типа список необ необ инициализируемых описателей необ;

Препроцессор

#DEFINE идентификатор строка-лексем#DEFINE#DEFINE идентификатор(идентификатор,...,идентификатор)стр#UNDEF идентификатор#INCLUDE "имя-файла"#INCLUDE <имя-файла>#IF константное-выражение#IFDEF идентификатор#IFNDEF идентификатор#ELSE#ENDIF#LINE константа идентификатор Последние изменения языка "C" (15 ноября 1978 г.) 27. Присваивание структуры Структуры могут быть присвоены, переданы функциям в ка-честве аргументов и возвращены функциям. Типы участвующихоперандов должны оставаться теми же самыми. Другие правдопо-добные операторы, такие как сравнение на равенство, не былиреализованы. В реализации возвращения структур функциями на PDP-11имеется коварный дефект: если во время возврата происходитпрерывание и та же самая функция пеентерабельно вызываетсяво время этого прерывания, то значение возвращаемое из пер-вого вызова, может быть испорчено. Эта трудность может воз-никнуть только при наличии истинного прерывания, как из опе-рационной системы, так и из программы пользователя, прерыва-ния, которое существенно для использования сигналов; обычныерекурсивные вызовы совершенно безопасны. 28. Тип перечисления Введен новый тип данных,аналогичный скалярным типам язы-ка паскаль. К спецификатору-типа в его синтаксическом описа-нии в разделе 8.2. Приложения а следует добавить спецификатор-перечисления ------------------------- с синтаксисом пецификатор-перечисления: ENUM список-перечисления -------------------ENUM идентификатор список-перечисления ------------- -------------------ENUM идентификатор -------------cписок-перечисления: перечисляемое список-перечисления, перечисляемое------------------- -------------перечисляемое: идентификатор ------------- идентификатор = константное выражение ------------- --------------------- Роль идентификатора в спецификаторе-перечисления пол-ностью аналогична роли ярлыка структуры в спецификато-ре-структуры; идентификатор обозначает определенное перечис-ление. Например, описание ENUM COLOR \(RED, WHITE, BLACK, BLUE \);... ENUM COLOR *CP, COL; Объявляет идентификатор COLOR ярлыком перечисления типа,описывающего различные цвета и затем объявляет CP указателемна объект этого типа, а COL - объектом этого типа. Идентификаторы в списке-перечисления описываются какконстанты и могут появиться там, где требуются (по контекс-ту) константы. Если не используется вторая форма перечисляе-мого (с равеством =), то величины констант начинаются с 0 ивозрастают на 1 в соответствии с прочтением их описания сле-ва на право. Перечисляемое с присвоением = придает соответс-твующему идентификатору указанную величину; последующиеидентификаторы продолжают прогрессию от приписанной величи-ны. Все ярлыки перечисления и константы могут быть различны-ми и непохожими на ярлыки и члены структур даже при условиииспользования одного и того же множества идентификаторов. Объекты данного типа перечисления рассматриваются какобъекты, имеющие тип, отличный от любых типов и контролирую-щая программа LINT сообщает об ошибках несоответствия типов.В реализации на PDP-11 со всеми перечисляемыми переменнымиоперируют так, как если бы они имели тип INT. 29. Таблица изображений непечатных символов языка "C". В данной таблице приведены изображения некоторых симво-лов (фигурные скобки и т.д.) языка "C", которых может неоказаться в знаковом наборе дисплея или печатающего устройс-тва.! Значение! Изображение **!!! В тексте!! Фигурная открывающаяся!!! Скобка! \(!!!!! Фигурная закрывающаяся!!! Скобка! \)!!!!! Вертикальная!!! Черта! \!!!!!!!!! Апостороф! \'!!!!! Волнистая!!! Черта! \^!!!! ** П_р_и_м_е_ч_а_н_и_е: Изображения приведены для операционой системы UNIX. Приработе компилятора "C" под управлением любой другой операци-онной системы, необходимо воспользоваться соответствующимруководством для данной системы. Last-modified: Wed, 16-Apr-97 10:02:38 GMT </b


Поделиться:


Последнее изменение этой страницы: 2016-08-26; просмотров: 193; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.242.22 (0.006 с.)