Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство по языку Паскаль 1.doc
Скачиваний:
12
Добавлен:
22.04.2019
Размер:
2.48 Mб
Скачать

Глава 2. Лексемы

─────────────────────────────────────────────────────────────────

Лексемы - это минимальные значимые единицы текста в програм-

ме, написанной на Паскале. Они представлены такими категориями

как специальные символы, идентификаторы, метки, числа и строковые

константы.

Программа, написанная на Паскале, состоит из лексем и разде-

лителей, причем разделитель представляет собой пробел или коммен-

тарий. Две соседние лексемы, если они представляют собой зарезер-

вированное слово, идентификатор, метку или число, должны быть

отделены друг от друга одним и несколькими разделителями.

Примечание: Разделители не могут быть частью лексем,

за исключением строковых констант.

Специальные символы

─────────────────────────────────────────────────────────────────

Borland Pascal использует следующие подмножества набора сим-

волов кода ASCII:

* Буквы - буквы английского алфавита от A до Z и от a до z.

* Цифры - арабские цифры от 0 до 9.

* Шестнадцатиричные цифры - арабские цифры от 0 до 9, буквы

от A до F и буквы от a до f.

* Разделители - символ пробела (ASCII 32) и все управляющие

символы кода ASCII (ASCII 0-31), включая символ конца

строки или символ возврата (ASCII 13).

буква

└─────────┬──────────────┬──────────────┬──────────────┐

│ │ │ │

v v v v

┌───┐ ┌───┐ ┌───┐ ┌───┐

│ A │ ... │ Z │ │ a │ ... │ z │

└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘

│ │ │ │

└──────────────┴──────────────┴──────────────┴────>

B.Pascal 7 & Objects/LR - 23 -

цифра

└──────┬───────────┐

│ │

v v

┌───┐ ┌───┐

│ 0 │ ... │ 9 │

└─┬─┘ └─┬─┘

│ │

└───────────┴───────>

шестнадцатиричная

цифра

│ ┌───────────┐

└────────>│ цифра │─────────────────────────┐

│ └───────────┘ │

│ │

└───┬─────────┬─────────┬─────────┐ │

│ │ │ │ │

v v v v │

┌───┐ ┌───┐ ┌───┐ ┌───┐ │

│ A │ .. │ F │ │ a │ ... │ f │ │

└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ │

│ │ │ │ │

└─────────┴─────────┴─────────┴─────────┴─────────>

Специальные символы и зарезервированные слова представляют

собой символы, имеющие одно или несколько фиксированных значений.

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

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

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

символы:

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

Кроме того, некоторые специальные символы являются знаками

операций. Левая квадратная скобка ([) эквивалентна паре символов,

состоящей из левой круглой скобки и точки ((.). Аналогично правая

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

точки и правой круглой скобки (.)).

B.Pascal 7 & Objects/LR - 24 -

Зарезервированные слова

и стандартные директивы Borland Pascal

─────────────────────────────────────────────────────────────────

Следующие слова являются зарезервированными в Borland Pascal:

Зарезервированные слова Borland Pascal Таблица 1.1

─────────────────────────────────────────────────────────────────

and exports mod shr

array file nil string

asm for not then

begin function object to

case goto of type

const if or unit

consatructor implementation packed until

destructor in procedure uses

div inherited program var

do inline record while

downto interface repeat with

else label set xor

end library shl

─────────────────────────────────────────────────────────────────

В настоящем руководстве зарезервированные слова записаны

строчными буквами. Однако, для Borland Pascal безразличен регистр

клавиатуры, поэтому вы можете использовать в своей программе бук-

вы как нижнего, так и верхнего регистра.

Далее приведены стандартные директивы Borland Pascal. В от-

личие от зарезервированных слов пользователь может их переопреде-

лить. Однако делать это не рекомендуется.

Стандартные директивы Borland Pascal Таблица 1.2

─────────────────────────────────────────────────────────────────

absolute far name resident

assembler forward near virtual

export index private

external interrupt public

─────────────────────────────────────────────────────────────────

B.Pascal 7 & Objects/LR - 25 -

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

─────────────────────────────────────────────────────────────────

Идентификаторы выступают в качестве имен констант, типов,

переменных, процедур, модулей, программ и полей в записях.

Идентификатор может иметь любую длину, однако только первые

его 63 символа являются значимыми. Идентификатор должен начинать-

ся с буквы и не может содержать пробелов. После первого символа

идентификатора можно использовать буквы, цифры и символы подчер-

кивания (значение ASCII $5F). Как и в зарезервированных словах, в

идентификаторах можно использовать как строчные, так и прописные

буквы (компилятор их не различает).

Идентификатор должен начинаться с буквы и не должен содер-

жать пробелов. После первого символа допускаются буквы, цифры и

символ подчеркивания (ASCII $5F). Как и зарезервированные слова,

идентификаторы безразличны к регистру клавиатуры.

Когда имеется несколько мест с указанием одного и того же

идентификатора, для задания нужного идентификатора необходимо

уточнить этот идентификатор с помощью идентификатора модуля. Нап-

ример, для уточнения идентификатора Ident с помощью идентификато-

ра модуля UnitName следует записать UnitNamt.Ident. Такой комби-

нированный идентификатор называется уточненным идентификатором.

Примечание: Модули описываются в Главе 7 "Руководства

пользователя" и в Главе 10 данного руководства.

┌───────────┐

Идентификатор ──┬───>│ буква │─────────────────────────┬─>

│ └───────────┘ ^ ^ │

│ ┌─────────────┐ │ │ │

└─>│ символ ├─┘ │ ┌─────────────┐ │

│подчеркивания│ ├───┤ буква │<──┤

└─────────────┘ │ └─────────────┘ │

│ ┌─────────────┐ │

├───┤ цифра │<──┤

│ └─────────────┘ │

│ ┌─────────────┐ │

└───┤ символ │<──┘

│подчеркивания│

└─────────────┘

B.Pascal 7 & Objects/LR - 26 -

┌───┐

символ подчеркивания─────>│ _ │─────>

└───┘

идентификатор программы ┌─────────────┐

идентификатор модуля ─────>│идентификатор│────>

идентификатор поля └─────────────┘

┌───────────────┐

уточненный ──┬───────────────────────────┤ идентификатор ├──>

идентификатор │ ^ └───────────────┘

│ ┌─────────────┐ ┌───┐ │

└─>│идентификатор├─>│ . ├─┘

│ модуля │ └───┘

└─────────────┘

Приведем несколько примеров идентификаторов:

Writeln

Exit

Real2String

System.MemAvail

Dos.Exec

WinCrt.Windows

B.Pascal 7 & Objects/LR - 27 -

Числа

─────────────────────────────────────────────────────────────────

Для чисел, представляющих собой константы целого и вещест-

венного типа, используется обычная десятичная запись. Целая конс-

танта в шестнадцатиричном формате имеет в качестве префикса знак

доллара ($). Техническое обозначение (E или е с показателем сте-

пени) в вещественных типах читается, как "на десять в степени".

Например, 7E-2 означает 7х10^-2, а 12.25E+6 или 12.25E6 оба

обозначают 12.25х10^+6. Синтаксические диаграммы для записи чисел

приведены ниже.

┌─────────────────┐

последовательность ────────>│шестнадцатиричная├───────┬──>

шестнадцатиричных ^ │ цифра │ │

цифр │ └─────────────────┘ │

└───────────────────────────────┘

┌─────────────────┐

последовательность ────────>│ цифра ├───────┬───>

цифр ^ └─────────────────┘ │

│ │

└───────────────────────────────┘

┌──────────────────┐

целые без знака ────┬────>│последовательность├───────────>

│ │ цифр │ ^

│ └──────────────────┘ │

│ │

│ ┌───┐ ┌──────────────┴───┐

└────>│ $ │────>│последовательность│

└───┘ │шестнадцатиричных │

│ цифр │

└──────────────────┘

┌───┐

знак ─┬───>│ + ├───────>

│ └───┘ ^

│ ┌───┐ │

└───>│ - ├───┘

└───┘

B.Pascal 7 & Objects/LR - 28 -

вещественное без знака

│ ┌──────────┐ ┌───┐ ┌──────────┐

└──>│Последова-├─┬─>│ . ├─>│последова-├──┬──────────────────>

│тельность │ │ └───┘ │тельность │ │ ^

│ цифр │ │ │ цифр │ │ │

└──────────┘ │ └──────────┘ │ │

│ v ┌──────────┐ │

└─────────────────────────>│масштабный├─┘

│ множитель│

└──────────┘

масштабный множитель

│ ┌───┐ ┌──────────────────┐

└───────┬─>│ E ├─────┬────────────>│последовательность├──>

│ └───┘ ^ │ ^ │ цифр │

│ ┌───┐ │ │ ┌────┐ │ └──────────────────┘

└─>│ е ├─┘ └─>│знак├──┘

└───┘ └────┘

число без знака

│ ┌───────────────┐

└───────────┬─>│целое без знака├────────>

│ └───────────────┘ ^

│ ┌────────────┐ │

└─>│вещественное├───────┘

│без знака │

└────────────┘

число со знаком

│ ┌───────────────┐

└────────┬────────────────>│число без знака├────>

│ ^ └───────────────┘

│ ┌────┐ │

└─>│знак├─────┘

└────┘

Числа с десятичными точками или показателями степени предс-

тавляют собой константы вещественного типа. Остальные десятичные

числа обозначают константы целого типа. Они должны принимать зна-

чения в диапазоне от -2147483648 до 2147483647.

Шестнадцатиричные числа обозначают константы целочисленного

типа. Они должны находиться в диапазоне от $00000000 до

$FFFFFFFF. Окончательный знак значения определяется шестнадцати-

ричной записью.

B.Pascal 7 & Objects/LR - 29 -

Метки

─────────────────────────────────────────────────────────────────

Меткой является последовательность цифр в диапазоне от 0 до

9999. Начальные нули не являются значащими. Метки используются с

операторами перехода goto.

┌──────────────────────┐

Метка ───────┬────────>│ последовательность ├──────────>

│ │ цифр │ ^

│ └──────────────────────┘ │

│ │

│ ┌─────────────┐ │

└───────────>│идентификатор├────────────┘

└─────────────┘

Как расширение стандартного Паскаля, Borland Pascal позволя-

ет использовать в качестве меток идентификаторы функций.

Строки символов

─────────────────────────────────────────────────────────────────

Строка символов представляет собой последовательность, со-

держащую ноль и более символов из расширенного набора символов

кода ASCII, записанную в одной строке программы и заключенную в

одиночные кавычки (апострофы). Строка символов, ничего не содер-

жащая между апострофами, называется нулевой строкой. Два последо-

вательных апострофа в строке символов обозначают один символ -

апостроф. Атрибут длины строки символов выражается действительным

количеством символов между апострофами, например:

'Borland'

'You'll see'

''''

';'

' '

'' { пустая строка }

' ' { пробел }

В качестве расширения стандартного Паскаля, Borland Pascal

разрешает вставлять в строку символов управляющие символы. Символ

# с целой константой без знака в диапазоне от 0 до 255 обозначает

соответствующий этому значению символ в коде ASCII. Между симво-

лом # и целой константой не должно быть никаких разделителей.

Аналогично, если несколько управляющих символов входит строку

символов, то между ними не должно быть разделителей.

Приведем несколько примеров строк символов:

#13#10

'Line 1'#13'Line2'

#7#7'Make up!'#7#7

B.Pascal 7 & Objects/LR - 30 -

┌──────────────────────┐

строка символов ────┬──>│ строка в кавычках ├───┬─┬>

^ │ └──────────────────────┘ │ │

│ │ ┌──────────────────────┐ │ │

│ └──>│ управляющая строка ├───┘ │

│ └──────────────────────┘ │

└──────────────────────────────────┘

┌───┐ ┌───┐

строка ──────>│ ' ├──────────────┬────>│ ' ├────>

в кавычках └───┘ ^ ┌──────┐ │ └───┘

└──┤символ│<─┘

│строки│

└──────┘

┌──────────────────────┐

символ строки ───┬──>│любой символ, кроме ' ├───────>

│ │ или CR │ ^

│ └──────────────────────┘ │

│ ┌───┐ ┌───┐ │

└───────>│ ' ├──────>│ ' ├─────┘

└───┘ └───┘

┌───┐ ┌───────────────────┐

символ строки ──────>│ # ├─>│ беззнаковое целое ├─┬──>

^ └───┘ └───────────────────┘ │

│ │

└──────────────────────────────────┘

Примечание: CR - символ возврата каретки.

Длина символьной строки - это фактическое число символов в

строке. Строка символов любой длины совместима с любым строковым

типом и, при разрешении директивой {$X+} расширенного синтаксиса,

с типом PChar.. Кроме того, строка символов с длиной, равной 1,

совместима с любым типом Char. Строка символов длиной n, где n

больше или равен 1, допустима для любого строкового типа и упако-

ванных массивов из n символов.

B.Pascal 7 & Objects/LR - 31 -

Комментарии

─────────────────────────────────────────────────────────────────

Следующие конструкции представляют собой комментарии и поэ-

тому игнорируются компилятором:

{ любой текст, не содержащий правую фигурную скобку }

(* любой текст, не содержащий звездочку/правую круглую

скобку *)

Комментарий, содержащий знак доллара ($) сразу после откры-

вающей скобки { или (*, является директивой компилятора. За сим-

волом $ следует мнемоника команды компилятора.

Примечание: Общее описание директив компилятора дано в

Главе 2 "Справочного руководства программиста".

Строки программы

─────────────────────────────────────────────────────────────────

В Borland Pascal строки программы имеют максимальную длину в

126 символов.

B.Pascal 7 & Objects/LR - 32 -

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]