Зарезервированные идентификаторы

Лекция 2

Лексические основы языка C++

Упрощенная модель компиляции.. 1

Лексический анализ программы... 2

Категории лексем.. 3

Идентификаторы.. 3

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

Зарезервированные идентификаторы.. 3

Стандартные идетификаторы.. 4

Идентификатор пользователя. 4

Константы.. 4

Литералы.. 5

Целые константы.. 5

Вещественные константы.. 6

Булевские (логические) константы.. 7

Символьные константы.. 7

Строковые константы.. 9

Перечисляемые константы.. 10

Именованные константы.. 10

Препроцессорные константы.. 10

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

Знаки пунктуации.. 12

Разделители.. 14

Пробельные разделители.. 14

ASCII-Коды (символы с кодами 0-127) 16

Кодовая таблица 866 – MS-DOS.. 17

(символы с кодами  127-255) 17

Кодовая таблица 1251 – MS Windows. 18

(символы с кодами 127-255) 18

 

 

Упрощенная модель компиляции

Упрощенная модель компиляции представлена на рисунке 2.1.

 

 

Рис.1.2. Упрощенная модель компиляции

 

Компилятор, прежде всего, выполняет лексический анализ текста программы: выделяет в нем минимальные неделимые структурные единицы (лексические элементы, лексемы, token), а затем проводит синтаксический анализ: на основе грамматики языка распознает смысловые конструкции языка (выражения, определения, описания, операторы и т.д.), построенные из этих лексем, т.е. проверяет их соответствие синтаксису языка программирования (правилам, определяющим последовательности символов, которые можно использовать в программе).

Семантический анализ программы – моделирование процесса понимания ее текста человеком. Семантика языка программирования ( правила интерпретации операторов ) определяет последовательности действий, которые выполнит компьютер при реализации конструкций языка.

Лексический анализ программы

Программа на С++ формируется из некоторого набора символов а лфавита языка,  каждому из которых сопоставляется определенная группа двоичных знаков [1]. Программа записывается в свободном формате, лишние пробелы игнорируются.

Алфавит С++ составляют 96 символов:

· строчные и прописные латинские буквы (a..z, A..Z)

· цифры 0..9

· 29 специальных символов: “ { }, | [ ] () + - / % \; ‘:? < = >  _!  &  # ~ ^. *

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

 

Лексический анализ проводится в порядке расположения символов в программе. За очередную лексему принимается наибольший ряд символов, который может быть распознан как лексема. Например, запись a++-b трактуется как a++ -b, т.е. увеличить значение a  на 1 и затем найти разность.

Метод выделения лексем: выбор лексемы максимальной длины (например, external, а не extern al). Строковая константа, даже содержащая пробельный символ, защищена от разбиения на лексемы и пробелы.

 

Примеры выделения лексем:

предложение языка результат лексического анализа
for (int i=1; i <=10; i++); for  (  int   i   =   1   ;   i   <=   10  ;   i   ++   );
char name[] = ”кафедра информатики”; char  name  [   ]   =  ”кафедра информатики”    ;
int i; float f; int  i  ;  float  f  ;
int /*описание*/ i /* счетчика*/; int   i   ;

 

 

Категории лексем

· идентификаторы (identifier);

o ключевые слова   (keyword);

o зарезервированные идентификаторы;

o стандартные идентификаторы;

o идентификаторы пользователя;

· константы (literal);

· знаки операций (operator);

· знаки пунктуации (punctuator);

 

 

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

Идентификатор – последовательность символов, закрепляемая за информационным объектом программы ( имя программного объекта ).

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

Ключевые слова – служебные слова языка, которые употребляются в определенном контексте при построении выражений языка и запрещены к употреблению в качестве имен объектов программы, присваиваемых им пользователем (идентификаторов пользователя); пишутся в программе на С++ строчными буквами (Таблица 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     ~  

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: