Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

Часть 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пециальные символы  и  зарезервированные  слова  представляют собой символы,  имеющие одно или несколько фиксированных  значений.

Специальными символами являются следующие символы:

 

     + - * / = < > [ ] . , ( ) : ; ^ @ { } $ #

 

     Следующие пары символов также представляют  собой  специальные символы:

 

     <=   >=  :=   ..   (*  *)  (.  .)

 

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

квадратная  скобка  (])  эквивалентна  паре символов,  состоящей из точки и правой круглой скобки ( .) ).

     Следующие слова являются зарезервированными в Турбо-Паскале:

       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. В  отличие  от  зарезервированных  слов,  они  могут   быть переопределены пользователем, хотя это и нежелательно.

          Таблица. Стандартные директивы 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 символов.

 

[начало] [оглавление]    

 


Предыдущая страница     |     Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz