ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 3 Ч А С Т Ь 1. СТАНДАРТ TURBO PASCAL. ГЛАВА 1. ЛЕКСЕМЫ И КОНСТАНТЫ. Л е к с е м а м и называются минимальные значимые единицы текста в программе, написанной на Паскале. Они представлены такими категориями как специальные символы, идентификаторы, метки, числа и строковые константы. Программа, написанная на Паскале, состоит из лексем и разделителей, где разделитель представляет собой пробел или комментарий. Две соседних лексемы, если они представляют собой зарезервированное слово, идентификатор, метку или число, должны быть отделены друг от друга одним или несколькими разделителями. Примечание: Разделители не могут быть частью лексем, за исключением строковых констант. Специальные символы и зарезервированные слова Turbo Pascal использует следующие подмножества набора символов кода ASCII: - Буквы английского алфавита от A до Z и от a до z; - Цифры - арабские от 0 до 9; - Шестнадцатиричные цифры - арабские цифры от 0 до 9, буквы от A до F и от a до f. - Пробелы - символ пробела (ASCII32) и все управляющие символы кода ASCII (ASCII от 0 до 31), включая символ конца строки или символ возврата каретки (ASCII13). Далее следует д и а г р а м м а с и н т а к с и с а для букв, цифр и шестнадцатиричных цифр. Для прочтения этой диаграммы нужно следовать за стрелками. Часто встречаются альтернативные пути; все пути, начинающиеся слева и заканчивающиеся стрелкой справа, допустимы. Путь проходит через рамки, содержащие названия элементов, используемых для создания части синтаксиса. Имена в прямоугольниках должны быть заменены действительными конструкциями. В квадратах заключены названия действительных термов, используемых в программе - зарезервированных слов, операторов и знаков пунктуации. буква ДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї і і і і щ щ щ щ ЪДДДї ЪДДДї ЪДДДї ЪДДДї і A і ... і Z і і a і ... і z і АДВДЩ АДВДЩ АДВДЩ АДВДЩ і і і і АДДДДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДц цифра ДДДДДДДВДДДДДДДДДДДї і і щ щ ЪДДДї ЪДДДї і 0 і ... і 9 і АДВДЩ АДВДЩ і і АДДДДДДДДДДДБДДДДДДДц шестнадцатиричная цифра ЪДДДДДДДДДДДї ДДДДДДДДДці цифра іДДДДДДДДДДДДДДДДДДДДДДДДДї і АДДДДДДДДДДДЩ і і і АДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї і і і і і і щ щ щ щ і ЪДДДї ЪДДДї ЪДДДї ЪДДДї і і A і .. і F і і a і ... і f і і АДВДЩ АДВДЩ АДВДЩ АДВДЩ і і і і і і АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДц Cпециальные символы и зарезервированные слова представляют собой символы, имеющие одно или несколько фиксированных значений. Специальными символами являются следующие символы: + - * / = < > [ ] . , ( ) : ; ^ @ { } $ # Следующие пары символов также представляют собой специальные символы: <= >= := .. (* *) (. .) Некоторые специальные символы являются также операторами. Левая квадратная скобка ([) эквивалентна паре символов, состоящей из левой круглой скобки и точки ( (. ). Аналогично правая квадратная скобка (]) эквивалентна паре символов, состоящей из точки и правой круглой скобки ( .) ). Следующие слова являются зарезервированными в Турбо-Паскале: Таблица 1.1. Зарезервированные слова Turbo Pascal. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД and else inline procedure type asm end interface program unit array external interrupt record until begin file label repeat uses case for mod set var const forward nil shl while constructor function not shr with destructor goto object string xor div if of then do implementation or to downto in packed ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Для Turbo Pascal безразличен регистр клавиатуры, поэтому Вы можете использовать в своей программе как строчные, так и прописные буквы. В следующей таблице приведены стандартные директивы Turbo Pascal. В отличие от зарезервированных слов, они могут быть переопределены пользователем, хотя это и нежелательно. Таблица 1.2. Стандартные директивы Turbo Pascal. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД absolute external forward near assembler far interrupt private virtual ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Заметим, что private зарезервировано только внутри объектов. Идентификаторы Идентификаторы выступают в качестве имен констант, типов, переменных, процедур, функций, модулей, программ и полей в записях. Идентификатор может иметь любую длину, однако значимыми являются только первые 63 символа. Идентификатор должен начинаться с буквы или символа подчеркивания и не должен содержать пробелов. После первого символа допускаются буквы, цифры и знак подчеркивания (ASCII $5F). Как и зарезервированные слова, идентификаторы безразличны к регистру клавиатуры. Когда имеется несколько экземпляров одного и того же идентификатора, для указания нужного вам экземпляра необходимо уточнить этот идентификатор с помощью идентификатора модуля, чтобы выбрать указанный экземпляр (модули описываются в главе 3 Руководства пользователя и главе 9 настоящего руководства). Например, для уточнения идентификатора Ident с помощью идентификатора UnitName следует написать UnitName.Ident. Такой комбинированный идентификатор называется уточненным идентификатором. ЪДДДДДДДДДДДї Идентификатор ДДВДДДці буква іДДДДДДДДДДДДДДДДДДДДДДДДДВДц і АДДДДДДДДДДДЩ ш ш і і ЪДДДДДДДДДДДДДї і і і АДці символ ГДЩ і ЪДДДДДДДДДДДДДї і іподчеркиванияі ГДДДґ буква ічДДґ АДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДї і ГДДДґ цифра ічДДґ і АДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДї і АДДДґ символ ічДДЩ іподчеркиванияі АДДДДДДДДДДДДДЩ ЪДДДї символ подчеркиванияДДДДДці _ іДДДДДц АДДДЩ идентификатор программы ЪДДДДДДДДДДДДДї идентификатор модуля ДДДДДціидентификаторіДДДДц идентификатор поля АДДДДДДДДДДДДДЩ ЪДДДДДДДДДДДДДДДї уточненный ДВДДДДДДДДДДДДДДДДДДДДДДДДДДґ идентификатор ГДДДц идентификатор і ш АДДДДДДДДДДДДДДДЩ і ЪДДДДДДДДДДДї ЪДДДї і Аціидентифика-ГДДці . ГДЩ і тор і АДДДЩ і модуля і АДДДДДДДДДДДЩ Приведем несколько примеров идентификаторов: Writeln Exit RealString System.MemAvail Dos.Exec Crt.Window Метки Меткой является последовательность цифр в диапазоне от 0 до 9999. Начальные нули не являются значащими. Метки используются с операторами перехода (GoTo). ЪДДДДДДДДДДДДДДДДДДДДДДї Метка ДДДДДДДВДДДДДДДДці последовательность ГДДДДДДДДДДц і і цифр і ш і АДДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДї і АДДДДДДДДДДДціидентификаторГДДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ Как расширение стандартного Паскаля, Turbo Pascal позволяет использовать идентификаторы функции в качестве меток. Числа Для чисел, представляющих собой константы целого и вещественного типа, используется обычная десятичная запись. Целая константа в шестнадцатиричном формате имеет в качестве префикса знак доллара ($). Техническое обозначение (Е или е с экспонентой) в вещественных типах читается как "десять в степени". Например: 7е-2 "7 умноженное на 10 в степени -2"; 12.25е+6 12.25е+6 "12.25 умноженное на 10 в степени +6; Ниже приведены синтаксические диаграммы для записи чисел. ЪДДДДДДДДДДДДДДДДДї последовательность ДДДДДДДДцішестнадцатиричнаяГДДДДДДДВДДц шестнадцатиричных ш і цифра і і цифр і АДДДДДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ЪДДДДДДДДДДДДДДДДДї последовательность ДДДДДДДДці ГДДДДДДДВДДДц цифр ш і цифра і і і АДДДДДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ЪДДДДДДДДДДДДДДДДДДї целые без знака ДДДДВДДДДціпоследовательностьГДДДДДДДДДДДц і і цифр і ш і АДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДї ЪДДДДДДДДДДДДДДБДДДї АДДДДці $ іДДДДціпоследовательностьі АДДДЩ ішестнадцатиричных і і цифр і АДДДДДДДДДДДДДДДДДДЩ ЪДДДї знак ДВДДДці + ГДДДДДДДц і АДДДЩ ш і ЪДДДї і АДДДці - ГДДДЩ АДДДЩ вещественное без знака і ЪДДДДДДДДДДї ЪДДДї ЪДДДДДДДДДДї АДДціПоследова-ГДВДці . ГДціпоследова-ГДДВДДДДДДДДДДДДДДДДДДц ітельность і і АДДДЩ ітельность і і ш і цифр і і і цифр і і і АДДДДДДДДДДЩ і АДДДДДДДДДДЩ і і і щ ЪДДДДДДДДДДї і АДДДДДДДДДДДДДДДДДДДДДДДДДцімасштабныйГДЩ і множительі АДДДДДДДДДДЩ масштабный множитель і ЪДДДї ЪДДДДДДДДДДДДДДї АДДДДДДДВДці Е ГДДДДДВДДДДДДДДДДДДДДДціпоследователь-ГДДц і АДДДЩ ш і ш іность цифр і і ЪДДДї і і ЪДДДДї і АДДДДДДДДДДДДДДЩ АДці е ГДЩ АДцізнакГДДЩ АДДДЩ АДДДДЩ число без знака і ЪДДДДДДДДДДДДДДДї АДДДДДДДДДДДВДціцелое без знакаГДДДДДДДДц і АДДДДДДДДДДДДДДДЩ ш і ЪДДДДДДДДДДДДї і АДцівещественноеГДДДДДДДЩ ібез знака і АДДДДДДДДДДДДЩ число со знаком і ЪДДДДДДДДДДДДДДДї АДДДДДДДДВДДДДДДДДДДДДДДДДцічисло без знакаГДДДДц і ш АДДДДДДДДДДДДДДДЩ і ЪДДДДї і АДцізнакГДДДДДЩ АДДДДЩ Числа с десятичными точками или экспонентами представляют собой константы вещественного типа, остальные константы представляют собой константы целочисленного типа; они должны находиться в диапазоне от -2147483648 до 2147483647. Шестнадцатиричные числа обозначают константы целочисленного типа; они должны находиться в диапазоне от $00000000 до $FFFFFFFF. Результирующий знак значения определяется шестнадцатиричной записью. Строки символов Строка символов представляет собой последовательность, содержащую нуль и более символов из расширенного набора символов кода ASCII (приложение В), записанную в одной строке программы и заключенную в одиночные кавычки (апострофы).Строка символов, ничего не содержащая между апострофами, называется пустой строкой. Два последовательных апострофа в строке символов обозначают один символ - апостроф. Атрибут длины строки символов содержит действительное количество символов между апострафами. В качестве расширения стандартного Паскаля Turbo Pascal разрешает вставлять в строку символов управляющие символы. Символ # с целой константой без знака в диапазоне от 0 до 255 обозначает соответствующий этому значению символ в коде ASCII. Между символом # и целой константой не должно быть никаких разделителей. Аналогично, если несколько управляющих символов входят в строку символов, то между ними не должно быть разделителей. ЪДДДї ЪДДДї строка ДДДДДДці ' ГДДДДДДДДДДДДДДВДДДДці ' ГДДДДц символов АДДДЩ ш ЪДДДДДДї і АДДДЩ АДДґсимволічДЩ істрокиі АДДДДДДЩ ЪДДДДДДДДДДДДДДДДДДДДДДї і і символ строки ДДДВДДцілюбой символ, кроме ' ГДДДДДДц і і или CR і ш і АДДДДДДДДДДДДДДДДДДДДДДЩ і і ЪДДДї ЪДДДї і АДДДДДДДці ' ГДДДДДДці ' ГДДДДДЩ АДДДЩ АДДДЩ Примечание: CR - символ возврата каретки. Строка символов нулевой длины (пустая строка) совметима только для строковым типом. Строка символов с длиной, равной 1, совместима с любым символьным и строковым типом. Строка символов с длиной N, где N больше или равно 2, совместима с любым строковым типом и с упакованным массивом из N символов. Приведем несколько примеров строк символов: 'TURBO' 'You''ll see' '''' ';' ' ' #13#10 'Line 1'#13'Line 2' #7#7'Wake up!'#7#7 Объявление констант Объявление констант содержит идентификатор, который является обозначением константы внутри блока, содержащего объявление. Идентификатор константы не может быть включен в свое собственное объявление. объявление константы і ЪДДДДДДДДДДДДДї ЪДДДї ЪДДДДДДДДДї ЪДДДї АДДДДДціидентификаторГДДДці = ГДДціконстантаГДДДці ; ГДВДц ш АДДДДДДДДДДДДДЩ АДДДЩ АДДДДДДДДДЩ АДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ЪДДДДДДДДДї константа ДДДДцівыражениеГДДДц АДДДДДДДДДЩ В качестве расширения стандартного Паскаля Turbo Pascal разрешает использовать константные выражения. Константное выражение - это выражение, которое может быть вычислено компилятором фактически без выполнения программы. Приведем примеры константных выражений: 100 'А' 256 -1 (2.5 + 1)/(2.5 - 1) 'Turbo' + ' ' + 'Pascal' Chr(32) Ord('Z') - Ord('A') + 1 Простейшим случаем константного выражения является простая константа, такая как 100 или 'А'; в то время как стандартный Паскаль допускает только простую константу, Turbo Pascal допускает константные выражения. Так как компилятор вычисляет константное выражение за время компиляции, то в константных выражениях не разрешены следующие конструкции: - ссылки на переменные и типированные константы (за исключением константных адресных выражений, как описано в главе 5). - вызовы функций (кроме перечисленных ниже) - адресный оператор (@) (за исключением константных адресных выоражений, как тписано в главе 5) За исключением этих ограничений, константные выражения подчиняются точно таким же синтаксическим правилам, что и обычные выражения (описанные в главе 6 "Выражения"). В константных выражениях разрешаются стандартные функции: Abs Chr Нi Length Lo Odd Ord Pred Ptr Round SizeOf Succ Swap Trunc Приведем несколько примеров использования константных выражений в объявлении констант: const Min = 0; Max = 100; Center = (Max - Min) div 2; Beta = Chr(225); NumChars = Ord('Z') - Ord('A') + 1; Message = 'Out of memory'; ErrStr = 'Error:' + message + '.'; ErrPos = 80 - Lenth(ErrorStr) div 2; ErrAttr = Blink + Red * 16 + White; Ln10 = 2.302585092994045684; Ln10R = 1/Ln10; Numeric = ['0' .. '9']; Alpha = ['A' .. 'Z', 'a' .. 'z'] AlphaNum = Alpha + Numeric; Комментарии Следующие конструкции представляют собой комментарии и игнорируются компилятором: {Any text not containing right brace} (* Any text not containing star/right parenthesis*) Коментарий, содержащий знак доллара ($) сразу после открывающейся скобки { или (* - является директивой компилятора. За символом $ следует мнемоника команды компилятора. Общее описание директив компилятора дано в главе 21. Строки программы В Turbo Pascal строки программы имеют максимальную длину в 126 символов. |