Глава 2.Лексемы
Лексемы - это минимальные значимые единицы текста в програм-
ме, написанной на Паскале. Они представлены такими категориями
как специальные символы, идентификаторы, метки, числа и строковые
константы.
Программа, написанная на Паскале, состоит из лексем и разде-
лителей, причем разделитель представляет собой пробел или коммен-
тарий. Две соседние лексемы, если они представляют собой зарезер-
вированное слово, идентификатор, метку или число, должны быть
отделены друг от друга одним и несколькими разделителями.
Примечание: Разделители не могут быть частью лексем,
за исключением строковых констант.
Специальные символы
Borland Pascal использует следующие подмножества набора сим-
волов кода ASCII:
* Буквы - буквы английского алфавита от A до Z и от a до z.
* Цифры - арабские цифры от 0 до 9.
* Шестнадцатиричные цифры - арабские цифры от 0 до 9, буквы
от A до F и буквы от a до f.
* Разделители - символ пробела (ASCII 32) и все управляющие
символы кода ASCII (ASCII 0-31), включая символ конца
строки или символ возврата (ASCII 13).
буква
¦
L---------T--------------T--------------T--------------
¦ ¦ ¦ ¦
v v v v
---- ---- ---- ----
¦ A ¦ ... ¦ Z ¦ ¦ a ¦ ... ¦ z ¦
L-T-- L-T-- L-T-- L-T--
¦ ¦ ¦ ¦
L--------------+--------------+--------------+---->
цифра
¦
L------T-----------
¦ ¦
v v
---- ----
¦ 0 ¦ ... ¦ 9 ¦
L-T-- L-T--
¦ ¦
L-----------+------->
шестнадцатиричная
цифра
¦ ------------
L-------->¦ цифра ¦-------------------------
¦ L------------ ¦
¦ ¦
L---T---------T---------T--------- ¦
¦ ¦ ¦ ¦ ¦
v v v v ¦
---- ---- ---- ---- ¦
¦ A ¦ .. ¦ F ¦ ¦ a ¦ ... ¦ f ¦ ¦
L-T-- L-T-- L-T-- L-T-- ¦
¦ ¦ ¦ ¦ ¦
L---------+---------+---------+---------+--------->
Специальные символы и зарезервированные слова представляют
собой символы, имеющие одно или несколько фиксированных значений.
Специальными символами являются следующие одиночные символы:
+ - * / = < > [ ] . , ( ) : ; ^ @ { } $ #
Следующие пары символов также представляют собой специальные
символы:
<= >= := .. (* *) (. .)
Кроме того, некоторые специальные символы являются знаками
операций. Левая квадратная скобка ([) эквивалентна паре символов,
состоящей из левой круглой скобки и точки ((.). Аналогично правая
квадратная скобка (]) эквивалентна паре символов, состоящей из
точки и правой круглой скобки (.)).
Зарезервированные слова и стандартные директивы 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
-----------------------------------------------------------------
Идентификаторы
Идентификаторы выступают в качестве имен констант, типов,
переменных, процедур, модулей, программ и полей в записях.
Идентификатор может иметь любую длину, однако только первые
его 63 символа являются значимыми. Идентификатор должен начинать-
ся с буквы и не может содержать пробелов. После первого символа
идентификатора можно использовать буквы, цифры и символы подчер-
кивания (значение ASCII $5F). Как и в зарезервированных словах, в
идентификаторах можно использовать как строчные, так и прописные
буквы (компилятор их не различает).
Идентификатор должен начинаться с буквы и не должен содер-
жать пробелов. После первого символа допускаются буквы, цифры и
символ подчеркивания (ASCII $5F). Как и зарезервированные слова,
идентификаторы безразличны к регистру клавиатуры.
Когда имеется несколько мест с указанием одного и того же
идентификатора, для задания нужного идентификатора необходимо
уточнить этот идентификатор с помощью идентификатора модуля. Нап-
ример, для уточнения идентификатора Ident с помощью идентификато-
ра модуля UnitName следует записать UnitNamt.Ident. Такой комби-
нированный идентификатор называется уточненным идентификатором.
Примечание: Модули описываются в Главе 7 "Руководства
пользователя" и в Главе 10 данного руководства.
------------
Идентификатор --T--->¦ буква ¦-------------------------T->
¦ L------------ ^ ^ ¦
¦ -------------- ¦ ¦ ¦
L->¦ символ +-- ¦ -------------- ¦
¦подчеркивания¦ +---+ буква ¦<--+
L-------------- ¦ L-------------- ¦
¦ -------------- ¦
+---+ цифра ¦<--+
¦ L-------------- ¦
¦ -------------- ¦
L---+ символ ¦<---
¦подчеркивания¦
L--------------
----
символ подчеркивания----->¦ _ ¦----->
L----
идентификатор программы --------------
идентификатор модуля ----->¦идентификатор¦---->
идентификатор поля L--------------
----------------
уточненный --T---------------------------+ идентификатор +-->
идентификатор ¦ ^ L----------------
¦ -------------- ---- ¦
L->¦идентификатор+->¦ . +--
¦ модуля ¦ L----
L--------------
Приведем несколько примеров идентификаторов:
Writeln
Exit
Real2String
System.MemAvail
Dos.Exec
WinCrt.Windows
Числа
Для чисел, представляющих собой константы целого и вещест-
венного типа, используется обычная десятичная запись. Целая конс-
танта в шестнадцатиричном формате имеет в качестве префикса знак
доллара ($). Техническое обозначение (E или е с показателем сте-
пени) в вещественных типах читается, как "на десять в степени".
Например, 7E-2 означает 7х10^-2, а 12.25E+6 или 12.25E6 оба
обозначают 12.25х10^+6. Синтаксические диаграммы для записи чисел
приведены ниже.
------------------
последовательность -------->¦шестнадцатиричная+-------T-->
шестнадцатиричных ^ ¦ цифра ¦ ¦
цифр ¦ L------------------ ¦
L--------------------------------
------------------
последовательность -------->¦ цифра +-------T--->
цифр ^ L------------------ ¦
¦ ¦
L--------------------------------
-------------------
целые без знака ----T---->¦последовательность+----------->
¦ ¦ цифр ¦ ^
¦ L------------------- ¦
¦ ¦
¦ ---- ---------------+---
L---->¦ $ ¦---->¦последовательность¦
L---- ¦шестнадцатиричных ¦
¦ цифр ¦
L-------------------
----
знак -T--->¦ + +------->
¦ L---- ^
¦ ---- ¦
L--->¦ - +----
L----
вещественное без знака
¦ ----------- ---- -----------
L-->¦Последова-+-T->¦ . +->¦последова-+--T------------------>
¦тельность ¦ ¦ L---- ¦тельность ¦ ¦ ^
¦ цифр ¦ ¦ ¦ цифр ¦ ¦ ¦
L----------- ¦ L----------- ¦ ¦
¦ v ----------- ¦
L------------------------->¦масштабный+--
¦ множитель¦
L-----------
масштабный множитель
¦ ---- -------------------
L-------T->¦ E +-----T------------>¦последовательность+-->
¦ L---- ^ ¦ ^ ¦ цифр ¦
¦ ---- ¦ ¦ ----- ¦ L-------------------
L->¦ е +-- L->¦знак+---
L---- L-----
число без знака
¦ ----------------
L-----------T->¦целое без знака+-------->
¦ L---------------- ^
¦ ------------- ¦
L->¦вещественное+--------
¦без знака ¦
L-------------
число со знаком
¦ ----------------
L--------T---------------->¦число без знака+---->
¦ ^ L----------------
¦ ----- ¦
L->¦знак+------
L-----
Числа с десятичными точками или показателями степени предс-
тавляют собой константы вещественного типа. Остальные десятичные
числа обозначают константы целого типа. Они должны принимать зна-
чения в диапазоне от -2147483648 до 2147483647.
Шестнадцатиричные числа обозначают константы целочисленного
типа. Они должны находиться в диапазоне от $00000000 до
$FFFFFFFF. Окончательный знак значения определяется шестнадцати-
ричной записью.
Метки
Меткой является последовательность цифр в диапазоне от 0 до
9999. Начальные нули не являются значащими. Метки используются с
операторами перехода goto.
-----------------------
Метка -------T-------->¦ последовательность +---------->
¦ ¦ цифр ¦ ^
¦ L----------------------- ¦
¦ ¦
¦ -------------- ¦
L----------->¦идентификатор+-------------
L--------------
Как расширение стандартного Паскаля, Borland Pascal позволя-
ет использовать в качестве меток идентификаторы функций.
Строки символов
Строка символов представляет собой последовательность, со-
держащую ноль и более символов из расширенного набора символов
кода ASCII, записанную в одной строке программы и заключенную в
одиночные кавычки (апострофы). Строка символов, ничего не содер-
жащая между апострофами, называется нулевой строкой. Два последо-
вательных апострофа в строке символов обозначают один символ -
апостроф. Атрибут длины строки символов выражается действительным
количеством символов между апострофами, например:
'Borland'
'You'll see'
''''
';'
' '
'' { пустая строка }
' ' { пробел }
В качестве расширения стандартного Паскаля, Borland Pascal
разрешает вставлять в строку символов управляющие символы. Символ
# с целой константой без знака в диапазоне от 0 до 255 обозначает
соответствующий этому значению символ в коде ASCII. Между симво-
лом # и целой константой не должно быть никаких разделителей.
Аналогично, если несколько управляющих символов входит строку
символов, то между ними не должно быть разделителей.
Приведем несколько примеров строк символов:
#13#10
'Line 1'#13'Line2'
#7#7'Make up!'#7#7
-----------------------
строка символов ----T-->¦ строка в кавычках +---T-T>
^ ¦ L----------------------- ¦ ¦
¦ ¦ ----------------------- ¦ ¦
¦ L-->¦ управляющая строка +---- ¦
¦ L----------------------- ¦
L-----------------------------------
---- ----
строка ------>¦ ' +--------------T---->¦ ' +---->
в кавычках L---- ^ ------- ¦ L----
L--+символ¦<--
¦строки¦
L-------
-----------------------
символ строки ---T-->¦любой символ, кроме ' +------->
¦ ¦ или CR ¦ ^
¦ L----------------------- ¦
¦ ---- ---- ¦
L------->¦ ' +------>¦ ' +------
L---- L----
---- --------------------
символ строки ------>¦ # +->¦ беззнаковое целое +-T-->
^ L---- L-------------------- ¦
¦ ¦
L-----------------------------------
Примечание: CR - символ возврата каретки.
Длина символьной строки - это фактическое число символов в
строке. Строка символов любой длины совместима с любым строковым
типом и, при разрешении директивой {$X+} расширенного синтаксиса,
с типом PChar.. Кроме того, строка символов с длиной, равной 1,
совместима с любым типом Char. Строка символов длиной n, где n
больше или равен 1, допустима для любого строкового типа и упако-
ванных массивов из n символов.
Комментарии
Следующие конструкции представляют собой комментарии и поэ-
тому игнорируются компилятором:
{ любой текст, не содержащий правую фигурную скобку }
(* любой текст, не содержащий звездочку/правую круглую
скобку *)
Комментарий, содержащий знак доллара ($) сразу после откры-
вающей скобки { или (*, является директивой компилятора. За сим-
волом $ следует мнемоника команды компилятора.
Примечание: Общее описание директив компилятора дано в
Главе 2 "Справочного руководства программиста".
Строки программы
В Borland Pascal строки программы имеют максимальную длину в
126 символов.
Назад | Содержание | Вперед