КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

Turbo C++ Version 1.0 Programmer’s Guide

Комментировать

LIB.com.ua [электронная библиотека]: : TURBO C++ Version 1.0 Programmer’s Guide

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

Грамматические правила лексикиязыка Turbo C++ описаны
на стр. 5 — 58 оригинала; грамматические правила структуры
фраз Turbo C++ описаны на стр. 58 — 98 оригинала.

Грамматические правила лексики языка рассматриваются с
точки зрения существованияразличных категорий слово-ориенти-
рованных языковых единиц,называемых лексемами, распознавае-
мых компилятором. Грамматические правила структуры фраз под-
робно определяют допустимые способы группирования этих
лексем в выражения, операторы и прочие смысловые единицы
языка.

Лексемы Turbo C++ образуются из последовательности опе-
раций, выполняемых с вашейпрограммой компилятором и препро-
цессором языка.

Программа на Turbo C++ начинает свое существованиекак
последовательность ACSII-символов,представляющих собой ее
исходный код, создаваемый нажатиями клавиш при работе в под-
ходящем текстовом редакторе (например, в собственном редак-
торе Turbo C++). Базовая программная единица в Turbo C++
представляет собой файл. Обычно такойфайл соответствует фай-
лу DOS, находящемуся в оперативной памяти или на диске и
имеющему созданное по правилам DOS имя и расширение .C или .
CPP.

Сначала выполняется просмотр текста программы препро-
цессором, который ищет в нем специальные директивы препро-
цессора (см. стр. 133 оригинала). Например, директива
#include добавляет (или включает) впрог-
рамму перед фазой компиляции содержимое файла . Препроцессор также выполняет расширение любых
встреченных в программах или файлах включения макросов.

Пробельные символы

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

int i; float f;

и

— 9 —
int i ;
float f;

лексически идентичны, а их лексический анализ в обоих
случаях дает шесть лексем:

int i ; float f ;

ASCII-символы, обычно рассматриваемые как пробельные,
могут входить в строки литералов, и в данном случаебудут за-
щищены от нормального процессаразбиения на лексемыи пробелы;
другими словами, они станут представлять собой часть строки:

char name[] = «Borland International»;

разбивается на семь лексем, включая и лексему строки
литералов «Borland International».

«Склеивание» строк символом \

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

«Borland \
International»

будет рассматриваться как «Borland International» (до-
полнительную информацию см. на стр. 17 оригинала, «Строковые
литералы»

Комментарии

Комментарии представляют собой текстовые части, пред-
назначенные для аннотирования программы.Комментарии исполь-
зуются исключительно самим программистом; передлексическим
анализом они исключаются из исходного текста программы.

Существует два способа указания на комментарии: тради-
ционный метод C и метод C++. Они оба поддерживаются Turbo C+
+, и кроме того, имеется дополнительное, опциональное расши-
рение, позволяющее организовывать вложенные комментарии.
Разрешается смешанное и комбинированное использование ком-
ментариев любого типа в программах C и C++.
Комментарии C

Традиционный комментарий C представляет собой любую
последовательность символов, помещаемую послепары симво-
лов/*. Признаком конца комментарияслужитперваяпара символов*
/, встретившаяся после исходной пары /*. После выполнения
макрорасширения вся эта последовательность целиком, включая
четыре разделительных символа комментария,заменяется на один
пробел. Отметим, чтонекоторые реализации C удаляют коммента-
рии, не заменяя их на пробелы.

Turbo C++ не поддерживает не-мобильной стратегии встав-
ки лексем с помощью /**/. Вставка лексем в Turbo C++ выпол-
няетсяпри помощи заданной ANSI пары символов ##, следующим
образом:

#define VAR(i,j) (i/**/j) /* не будет работать */
#define VAR(i,j) (i##j) /* в Turbo C++ будет работать */
#define VAR(i,j) (i ## j) /* также будет работать */

В Turbo C++

— 10 —

int /* объявление */ i /* как счетчика */;

после лексического анализа даст

int i ;

то есть три лексемы: Int I ;

Вложенные комментарии

ANSI C не разрешаетвложенность комментариев. Попытка
комментировать приведенную выше строку в виде

/*int /* объявление */ i /как счетчика */; */

окончится неудачей, поскольку область действия первой
пары /* будет ограничена первой парой */. Это даст в резуль-
тате лексического анализа

i ; */

что приведет к генерированию состояния синтаксической
ошибки.

По умолчанию Turbo C++ не позволяет вложенность коммен-
тариев, однако это умолчание может быть переопределено опци-
ей компилятора. Разрешить вложенность комментариев можно ли-
бо при помощи опции -C (компилятора командной строки), либо
через меню интегрированной среды программирования
O\!C\!Source Options.

Комментарии C++

Для создания вкоде C комментариеввы можете также ис-
пользовать символы //. Это средство специфично для Turbo
C++.

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

class X (* // это комментарий
… *);

Разделители комментариев и пробелы

В редких случаях пробелы перед /* и // или после */,
хотя и не являются синтаксически обязательными, нопозволяют
избежать проблем, связанных с мобильностью. Например, код C++

int i = j//* деление на k*/k;
+m;

при лексическом анализе дастint i = j +m; а не

int i = j/k;
+m;

как это можно было бы ожидать по традиционным соглаше-
ниям C. Более удобочитаемая форма

int i = j/ /* деление на k*/ k;
+m;

— 11 —
позволяет избежать этой проблемы.

Лексемы

Turbo C++ распознает лексемы шести классов: ключевые

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *