Лексемы и алфавит

Введение

Язык программирования Си++ был разработан на основе языка Си Бьярном Страуструпом (Bjarne Stroustrup) и вышел за пределы его исследовательской группы в начале 80-х годов. На первых этапах разработки (1980 г.) язык носил условное название “Си с классами”, а в 1983 г. Рик Масситти придумал название “Си++”, что образно отразило происхождение этого языка от языка Си. Язык Си++ является расширением (надмножеством) языка Си, поэтому программы, написанные на Си, могут обрабатываться компилятором Си++. Более того, в программах на Си++ можно использовать тексты на языке Си и обращаться к библиотечным функциям языка Си. Таким образом, одно из достоинств Си++ состоит в возможности использовать уже существующие программы на Си. Однако это не единственное достоинство языка. Как пишет его автор, язык Си++ был создан с учётом следующих целей: улучшить язык Си, поддержать абстракцию данных и обеспечить объектно-ориентированное программирование.

Основная программная единица на языке Си++ - текстовый файл с названием <имя>.CPP, где CPP – принятое расширение для программ Си++, а имя выбирается достаточно произвольно. Для удобства ссылок и сопоставления программ с их внешними именами целесообразно помещать в начале текста каждой программы строку комментария с именем файла, в котором она находится. Текстовый файл с программой на Си++ вначале обрабатывает препроцессор, который распознаёт команды (директивы) препроцессора (каждая такая команда начинается с символа ‘#’) и выполняет их. В результате чего препроцессор изменяет исходный текст программы. Команда #include вставляет в программу заранее подготовленные тексты из включаемых файлов. Чаще всего используют следующую команду:

#include <iostream.h>

Это директива препроцессора, обеспечивающая включение в программу средств связи со стандартными потоками ввода и вывода данных. Указанные средства находятся в файле iostream.h (мнемоника: “i” (input) – ввод; “o” (output) - вывод; stream - поток; “h” (head) - заголовок). Стандартным потоком вывода по умолчанию считается вывод на экран дисплея (стандартный поток ввода обеспечивает чтение данных от клавиатуры). Функция main() используется как начальная точка входа для выполнения программы. Она подчиняется правилам С++ для объявления функций. Обычно функция main() неявно возвращает целое значение 0, что означает нормальное завершение программы. Другие возвращаемые значения нужно задавать явно.

 

 

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

В алфавит языка СИ++ входят:

· Прописные и строчные буквы латинского алфавита;

· Цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

· Специальные знаки: “ { } , [ ] ( ) + - * / % \ ; ‘ : ? < = > _ ! & # ~ ^

Из символов алфавита формируются лексемы языка, которые разделяются пробелами и другими неграфическими символами языка:

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

· Служебные слова;

· Константы;

· Строки;

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

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

 

Идентификатор – последовательность латинских букв, цифр и знака подчёркивания, начинающаяся с буквы или символа “_”.

В идентификаторах прописные и строчные буквы различаются. Компиляторы различают не более 32-х первых символов любого идентификатора.

Служебные слова – идентификаторы, зарезервированные в языке для специального использования.