ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 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
символов.


Яндекс цитирования