Текст Pascal-программы представляет собой последовательность строк состоящих из символов, образующих алфавит языка. Строки программы завершаются специальными управляющими символами, не входящими в алфавит. Максимальная длина строки составляет 126 символов.
Алфавит языка состоит из следующих символов:
Заглавные и строчные латинские буквы и символ подчеркивания:
А,В,С.. .,X,Y,Z,a,b,c, .. .,x,y,z.
Обратите внимание, что в языке Turbo Pascal символ подчеркивания считается буквой.Буквы используются для формирования идентификаторов и служебных слов.
Десять арабских цифр от 0 до 9:
0,1,2,3,4,5,6,7,8,9
Цифры используются для записи чисел и идентификаторов.
Двадцать два специальных символа:
+ -*/-><. , ; : ( )[ ]{ }#$
Специальные символы используются для конструирования знаков операций, выражений, комментариев, а также как синтаксические разделители.
Лексическая структура языка.
Символы из алфавита языка используются для построения базовых элементов Pascal-программ - лексем.
Лексема - минимальная единица языка, имеющая самостоятельный смысл.
В Turbo Pascal имеются следующие классы лексем:
1. Служебные (зарезервированные) слова.
Это ограниченная группа слов, построенных из букв. Каждое служебное слово представляет собой неделимое образование, смысл которого фиксирован в языке. Служебные слова НЕЛЬЗЯ использовать в качестве имен, вводимых программистом (т.е. в качестве идентификаторов переменных, констант и т.д.).
Все 55 служебных слов языка представлены ниже.
absolute
array
and
asm
assembler
begin
case
const
constructor
destructor
div
downto
else
end
external
file
for
forward
function
goto
if
implementation
in
inline
interface
interrupt
label
mod
nil
not
object
of
or
packed
private
procedure
program
record
repeat
set
shl
shr
string
then
to
type
unit
until
uses
var
virtual
while
with
xor
Заметим, что синтаксис языка Turbo Pascal на самом деле допускает использование некоторых служебных слов в качестве идентификаторов (к числу таких слов относятся assembler, external, forward, interrupt, private, virtual). Строго говоря, эти слова называются в языке директивами. Однако в целях большей ясности программ использование директив в качестве идентификаторов не рекомендуется.
2. Идентификаторы (имена). Идентификаторы вводятся для обозначения в программе переменных, констант, типов, меток, процедур и функций и формируются из букв и цифр, но может начинаться только с буквы.
Длина идентификатора может быть произвольной, однако компилятор воспринимает только ПЕРВЫЕ 63 его символа.
Важно помнить, что в языке Turbo Pascal соответствующие заглавные и строчные буквы в идентификаторах и служебных словах НЕ РАЗЛИЧАЮТСЯ. Таким образом, следующие три идентификатора обозначают одну и ту же переменную:
index INDEX Index
3. Изображения. Эта группа лексем обозначает числа, символьные строки и некоторые другие значения.
4. Знаки операцийформируются из одного или нескольких специальных символов и предназначены для задания действий по преобразованию данных и вычислению значений.
5. Разделителитакже формируются из специальных символов и в основном используются для повышения наглядности текстов программ. Примерами разделителей могут служить следующие конструкции:
; : = ( .
Необходимо выделить еще одну группу лексических конструкций языка, обычно называемых директивами компилятора или прагматами. Эти конструкции так же, как комментарии, заключаются в фигурные скобки, но они не носят характер пояснений к программе, а являются инструкциями Pascal-компилятору, предписывающими тот или иной режим обработки Pascal-программы.
Директивы компилятора должны содержать сразу же после открывающей фигурной скобки (без пробелов и символов табуляции) символ '$' (доллар), а за ним - одиночную букву, определяющую конкретный режим компиляции. После буквы может присутствовать знак '+' (плюс) или '-' (минус), задающий, соответственно, установку или отмену заданного режима, например:
{$N-}, {SN+}
Важную роль в тексте Pascal-программы играет символ, не имеющий специального графического изображения, - пробел. Символы пробелов используются для отделения лексем друг от друга в тех случаях, когда слитное написание двух или более лексем может исказить смысл программы. В частности, если идентификаторы и служебные слова записываются друг за другом, то они обязательно должны быть отделены одним или несколькими пробелами (или расположены в различных строках), так как их слитное написание будет воспринято как один идентификатор.
В остальных случаях использование пробелов необязательно и служит целям наглядности, способствуя лучшему внешнему виду программ. Можно сказать, что пробелы, так же, как и комментарии, могут (в любом количестве) находиться между любыми двумя лексемами программы.
Контрольные вопросы.
Назовите алфавит языка прогаммирования.
Раскройте лексическую структуру языка программирования.