Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Переходюк ВН / Переходюк ВН / lekcii / 1 лекция Состав языка.doc
Скачиваний:
24
Добавлен:
16.03.2016
Размер:
174.59 Кб
Скачать

Описание синтаксических конструкций

Для описания языка здесь используется неформальный способ, при котором необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, а выбор одного из нескольких элементов обозначается вертикальной чертой. Например:

[ { void | int } ] имя();

Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.

Рассмотрим лексемы языка С++.

Имена (идентификаторы)

Идентификатор - это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются. Первым символом идентификатора может быть буква или знак подчеркивания.

Длина идентификатора по стандарту не ограничена. Идентификатор создается на этапе объявления переменной, функции, типа и т.п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:

  • идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;

  • не рекомендуется начинать идентификаторы с символа подчеркивания;

  • на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика.

Ключевые слова

Ключевые слова - это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Далее приведен список ключевых слов С++.

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic _ cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

Знаки операций

Знак операции - это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Символы, составляющие знак операции, могут быть как специальными, например, &&, | и <, так и буквенными, такими как reinterpret_cast или new.

Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Большинство стандартных операций может быть переопределено (перегружено).

Константы

Константами называют неизменяемые величины. Есть логические, целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду. Программист может задать тип константы и явным образом.

Форматы констант, соответствующие каждому типу, приведены в таблице 1.1.

Таблица 1.1. Константы языка С++

Константа

Формат

Примеры

Логическая

Обозначается ключевым словом true или false

true, false

Целая

Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль

8, 0, 199226

Восьмеричный: нуль, за которым следуют восьмеричные цифры (0, 1, 2, 3, 4, 5, 6, 7)

01, 020, 07155

Шестнадцатеричный: 0х или 0Х, за которым следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)

0xA, 0x1B8, 0X00FF, 0X00ff

Вещественная

Десятичный: [цифры].[цифры]

5.7, .001, 35

Экспоненциальный: [цифры][.][цифры]{E|e}[+|-][цифры]

0.2E6, .11e-3, 5E10, 1.22E-10

Символьная

Один или более символов, заключенных в апострофы

'A', 'ю', '*', 'db', 'A', '\n', '\012', '\x07\x07'

Строковая

Последовательность символов, заключенная в кавычки

"Здесь был Vasia", "\tСумма =\xF5\n"

Допустимые диапазоны значений целых и вещественных констант приведены в таблице 1.2.

Таблица 1.2. Диапазоны значений основных типов данных для IBM PC

Тип

Диапазон значений

Размер (байт)

bool

true и false

1

signed char

-128 … 127

1

unsigned char

0 … 255

1

signed short int

-32 768 … 32 767

2

unsigned short int

0 … 65 535

2

signed int

-2 147 483 648 … 2 147 483 647

4

unsigned int

0 … 4 294 967 295

4

signed long int

-2 147 483 648 … 2 147 483 647

4

unsigned long int

0 … 4 294 967 295

4

float

3.4e-38 … 3.4e+38

4

double

1.7e-308 … 1.7e+308

8

long double

3.4e-4932 … 3.4e+4932

10

Если требуется сформировать отрицательную целую или вещественную константу, то перед ней ставится знак унарной операции изменения знака (-), например, -218.

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10 (например, 1.3e12 это 1,3 * 1012). При записи вещественного числа могут быть опущены либо целая часть, либо дробная, но, конечно, не обе сразу. Пробелы внутри числа не допускаются.

Символьный литерал - это один или более символов, заключенных в одиночные кавычки (апострофы). Внутри апострофов можно задать любой символ из набора символов реализации. Пустая символьная константа недопустима.

Если перед символьным литералом указан символ L, то литерал называется широким.Если L отсутствует, литерал называется обычным, или узким. Обычный символьный литерал имеет тип char, широкий - тип wchar_t (о типах - далее в этой лекции).

Некоторые символы набора реализации являются непечатаемыми.Они предназначены для управления процессом отображения печатаемых символов на экране или принтере. Для представления в программе непечатаемых символов используется управляющая последовательность ( escape sequence ) -последовательность символов, начинающаяся с обратной косой черты \ ( backslash ). Кроме того, символы ' (апостроф), " (кавычки), ? (вопрос) и сама обратная косая черта являются специальными символами и также представляются в виде управляющих последовательностей.

В общем виде управляющая последовательность может быть задана в двух формах:

\000

\xhhh

Здесь 000 представляет собой последовательность от одной до трех восьмеричных цифр, а hhh - последовательность от одной до трех шестнадцатеричных цифр, которая задает код символа. При выводе кода символа на принтер или экран вместо кода изображается печатаемый символ или выполняется определяемое кодом действие (например, перевод курсора на следующую строку).

Допустимые значения кодов ooo ( hhh ) определяются реализацией. Коды обычных символов и широких символов различаются. Нулевой символ '\0' (L'\0' для широких) является обязательным в составе набора символов реализации, поскольку играет особую роль в представлении строковых литералов.

В строковых литералах также допускается задавать любые символы из набора символов реализации, в том числе и управляющие последовательности. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку: "Издательский дом \"Питер\""

Тем не менее, апостроф разрешается задавать без обратной косой черты, например "Издательский дом 'Питер'"

Строковые константы, отделенные в программе только пробельными символами, при компиляции объединяются в одну.

Длинную строковую константу можно разместить на нескольких строках программы, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, при этом следующая строка программы воспринимается как продолжение предыдущей. Например, строка

"Никто не доволен своей \

внешностью, но каждый доволен \

своим умом"

эквивалентна строке

"Никто не доволен своей внешностью, но каждый доволен своим умом"

Кавычки пишутся только в начале и в конце многострочного литерала.

Строковые литералы так же, как и символьные, подразделяются на обычные (узкие) и широкие.