2. Договоренности о Лексике
Есть шесть классов лексем: идентификаторы, ключевые сло-
ва, константы, строки, операторы и прочие разделители. Симво-
лы пробела, табуляции и новой строки, а также комментарии
(собирательно - "белые места"), как описано ниже, игнорируют-
ся, за исключением тех случаев, когда они служат разделителя-
ми лексем. Некое пустое место необходимо для разделения иден-
тификаторов, ключевых слов и констант, которые в противном
случае окажутся соприкасающимися.
Если входной поток разобран на лексемы до данного симво-
ла, принимается, что следующая лексема содержит наиболее
длинную строку символов из тех, что могут составить лексему.
2.1 Комментарии
Символы /* задают начало комментария, заканчивающегося
символами */. Комментарии не могут быть вложенными. Символы /
/ начинают комментарий, который заканчивается в конце строки,
на которой они появились.
2.2 Идентификаторы (Имена)
Идентификатор - последовательность букв и цифр произ-
вольной длины. Первый символ обязан быть буквой. Подчерк '_'
считается за букву. Буквы в верхнем и нижнем регистрах явля-
ются различными.
2.3 Ключевые Слова
Следующие идентификаторы зарезервированы для использова-
ния в качестве ключевых слов и не могут использоваться иным
образом:
asm auto break case char
class const continue default delete
do double else enum extern
float for friend goto if
inline int long new operator
overload public register return short
sizeof static struct switch this
typedef union unsigned virtual void
while
Идентификаторы signed и volatile зарезервированы для
применения в будущем.
2.4 Константы
Как описано ниже, есть несколько видов констант. В #2.6
приводится краткая сводка аппаратных характеристик, которые
влияют на их размеры.
2.4.1 Целые Константы
Целая константа, состоящая из последовательности цифр,
считается восьмиричной, если она начинается с 0 (цифры ноль),
и десятичной в противном случае. Цифры 8 и 9 не являются
восьмиричными цифрами. Последовательность цифр, которой пред-
шествует 0х или 0Х, воспринимается как шестнадцатиричное це-
лое. В шестнадцатеричные цифры входят буквы от а или А до f
или F, имеющие значения от 10 до 15. Десятичная константа,
значение которой превышает наибольшее машинное целое со зна-
ком, считается длинной (long); восьмеричная и шестнадцатерич-
ная константа, значение которой превышает наибольшее машинное
целое со знаком, считается long; в остальных случаях целые
константы считаются int.
2.4.2 Явно Заданные Длинные Константы
Десятичная, восьмиричная или шестнадцатиричная констан-
та, за которой непосредственно стоит l (латинская буква
"эль") или L, считается длинной константой.
2.4.3 Символьные Константы
Символьная константа состоит из символа, заключенного в
одиночные кавычки (апострофы), как, например, 'х'. Значением
символьной константы является численное значение символа в
машинном наборе символов (алфавите). Символьные константы
считаются данными типа int.
Некоторые неграфические символы, одиночная кавычка ' и
обратная косая \, могут быть представлены в соответствие со
следующей таблицей escape-последовательностей:
символ новой строки NL(LF) \n
горизонтальная табуляция NT \t
вертикальная табуляция VT \v
возврат на шаг BS \b
возврат каретки CR \r
перевод формата FF \f
обратная косая \ \\
одиночная кавычка (апостроф) ' \'
набор битов 0ddd \ddd
набор битов 0xddd \xddd
\0 (не следует ни одной цифры), задающая
пустой символ NULL. Escape-последовательность \xddd состоит
из обратной косой, за которой следуют 1, 2 или 3 шестнадцати-
ричных цифры, задающие значение требуемого символа. Если сле-
дующий за обратной косой символ не является одним из перечис-
ленных, то обратная косая игнорируется.
2.4.4 Константы с Плавающей Точкой
Константа с плавающей точкой состоит из целой части,
десятичной точки, мантиссы, е или Е и целого показателя сте-
пени (возможно, но не обязательно, со знаком). Целая часть и
мантисса обе состоят из последовательности цифр. Целая часть
или мантисса (но не обе сразу) может быть опущена; или деся-
тичная точка, или е(Е) вместе с целым показателем степени (но
не обе части одновременно) может быть опущена. Константа с
плавающей точкой имеет тип double.
2.4.5 Перечислимые Константы
Имена, описанные как перечислители, (см. #8.5) являются
константами типа int.
2.4.6 Описанные Константы
для объектов, не являющихся указателями,
используется описатель const (#8.2).
2.5 Строки
Все строки, даже если они записаны одина-
ково, различны. Компилятор располагает в конце каждой строки
нулевой (пустой) байт \0 с тем, чтобы сканируюшая строку
программа могла найти ее конец. В строке перед символом двой-
ной кавычки " обяэательно должен стоять \; кроме того, могут
использоваться те же escape-последовательности, что были опи-
саны для символьных констант. И, наконец, символ новой строки
может появляться только сразу после \, тогда оба,- \ и символ
новой строки,- игнорируются.
2.6 Харктеристики Аппаратного Обеспечения
В нижеследующей таблице собраны некоторые харктеристики
аппаратного обеспечения, различающиеся от машины к машине.
&t 3b
! ascii ! ascii ! ebcdic ! ascii
============================================================
char ! 8 бит ! 8 бит ! 8 бит ! 8 бит
int ! 32 бит ! 16 бит ! 32 бит ! 16 бит
short ! 16 бит ! 16 бит ! 16 бит ! 16 бит
long ! 32 бит ! 32 бит ! 32 бит ! 32 бит
float ! 32 бит ! 32 бит ! 32 бит ! 32 бит
double ! 64 бит ! 64 бит ! 64 бит ! 64 бит
указатель! 32 бит ! 32 бит ! 24 бит ! 32 бит
диапазон ! ! ! !
float ! ы10eы38 ! ы10eы38 ! ы10eы76 ! ы10eы38
диапазон ! ! ! !
double ! ы10eы38 ! ы10eы38 ! ы10eы76 ! ы10eы308
тип char ! знаковый ! без знака ! без знака ! без знака
тип поля ! знаковый ! без знака ! без знака ! без знака
порядок ! справа ! слева ! слева ! слева
полей ! налево ! направо ! направо ! направо
============================================================
[Назад] [Содержание] [Вперед]
| Главная |