- •Лекция 2
- •Упрощенная модель компиляции
- •Лексический анализ программы
- •Категории лексем
- •Идентификаторы
- •Ключевые слова
- •Зарезервированные идентификаторы
- •Стандартные идетификаторы
- •Идентификатор пользователя
- •Константы
- •Литералы
- •Целые константы
- •Вещественные константы
- •Булевские (логические) константы
- •Символьные константы
- •Строковые константы
- •Именованные константы
- •Перечисляемые константы
- •Препроцессорные константы
- •Знаки операций
- •Знаки пунктуации
- •Разделители
- •Пробельные разделители
Идентификаторы
Идентификатор – последовательность символов, закрепляемая за информационным объектом программы (имя программного объекта).
Ключевые слова
Ключевые слова – служебные слова языка, которые употребляются в определенном контексте при построении выражений языка и запрещены к употреблению в качестве имен объектов программы, присваиваемых им пользователем (идентификаторов пользователя); пишутся в программе на С++ строчными буквами (Таблица 1.1).
Таблица 1.1.Ключевые слова С++
-
asm
auto
bool
break case catch char class const const_cast continue default delete do double dynamic_cast
else
enum
explicit
export extern false float for friend goto if inline int long
mutable namespace
new operator
private protected public register reinterpret_cast return short signed sizeof stаtic stаtic_cast struct switch template
this
throw
true try typedef typeid typename union unsigned using uuid virtual void volatile wchar_t
while
Зарезервированные идентификаторы
Стандарт языка определил ряд идентификаторов, которые могут использоваться для альтернативного представления некоторых операций (проверить в среде разработки) и для которых запрещено другое использование (Таблица 1.2).
Таблица 1.2.Зарезервированные идентификаторы С++
-
and &&
or ||
not !
xor ^
and_eq &=
or_eq |=
not_eq !=
xor_eq ^=
bitand &
bitor |
compl ~
Стандартные идетификаторы
Стандартные идентификаторы – используемые в программе предопределенные имена стандартных информационных объектов (например, обозначения стандартных функций и директив препроцессора), могут использоваться и в качестве идентификаторов пользователя (sin, cos, printf, …).
Идентификаторы, начинающиеся с одного (_) или двух символов подчеркивания (__), резервируются для системных целей и не рекомендуются к использованию в качестве имен, выбираемых пользователем.
Идентификатор пользователя
– используемая программистом для обозначения информационных объектов программы последовательность:
-
прописных или строчных букв латинского алфавита (в последних версиях компиляторов допускаются и символы кириллицы); хороший стиль предполагает запись идентификаторов переменных строчными буквами;
-
цифр и символов подчеркивания;
-
начинающаяся с буквы или символа подчеркивания (хотя не рекомендуется начинать идентификаторы с символа подчеркивания, так как они используются в системных программах и библиотеках);
-
зависящая от регистра клавиатуры (различаются прописные и строчные буквы, поэтому имена Summa и summa обозначают разные переменные);
-
имеющая произвольную длину;
-
представляющая собой мнемоническое (смысловое) имя (идентификаторы, не имеющие смысловой нагрузки, затрудняют чтение и понимание программы).
Для обозначения информационных объектов программы (или как первые символы их идентификаторов) желательно использовать:
-
буквы i, j, k, l, m, n для обозначения целых значений;
-
буквы f, d - для обозначения вещественных значений;
-
букву s – для строк;
-
букву р – для указателей.
В многословных идентификаторах для наглядности отдельные слова отделяют друг от друга символом подчеркивания (например, my_var).
В качестве идентификаторов пользователя нельзя использовать ключевые слова и зарезервированные идентификаторы и можно (но не надо) использовать стандартные идентификаторы.
Длина идентификатора зависит от компилятора. Большинство компиляторов различает идентификаторы по первым 32 символам. Для большинства препроцессоров уникальны обозначения, различающиеся в первых 6 символах. Использование длинных обозначений и имен идентификаторов может вызвать проблемы переносимости для некоторых компиляторов. Для того чтобы избежать этих проблем, программа должна хранить такими короткими, какими только можно, имена для препроцессора, локальные и внешние имена.