- •1.2.5. Лексика, синтаксис и семантика языков программирования
- •2.1. Алфавит языка
- •2.2. Структура программы
- •2.3. Концепция типа для данных
- •2.4. Стандартные типы данных
- •2.5. Перечисляемые и ограниченные типы
- •2.6. Константы
- •2.7. Переменные
- •2.8. Инициализация переменных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода и вывода
- •3.3. Выражения
- •3.4. Составной оператор
- •3.5. Условный оператор
- •3.6. Оператор варианта
- •3.7. Цикл с предусловием
- •3.8. Цикл с постусловием
- •3.9. Цикл с параметром
- •3.10. Операторы завершения цикла
- •3.11. Метки и операторы перехода
2.1. Алфавит языка
Алфавит – совокупность допустимых в языке символов (или групп символов, рассматриваемых как единое целое). Элементы алфавита можно условно разбить на четыре группы:
-
символы, используемые в идентификаторах;
-
разделители;
-
специальные символы;
-
неиспользуемые символы.
Идентификатор – имя любого объекта программы (константы, метки, типа, переменной, процедуры, функции, модуля, объекта). Он может включать буквы, цифры и символ подчеркивания. В качестве букв можно использовать 26 латинских букв (прописных и строчных). Помимо идентификаторов буквы могут использоваться в шестнадцатеричных числах (латинские a – f, A-F), строковых константах, служебных словах и комментариях. Прописные и строчные буквы в идентификаторах, служебных словах и числах не различаются. Однако в строках символов и комментариях строчные и прописные буквы различаются и при компиляции не преобразуются друг в друга. В качестве цифр можно использовать арабские цифры. В идентификаторах они могут присутствовать в любой позиции, кроме первой. Символ подчеркивания может находиться в любой позиции. Длина идентификатора может быть любой, но значимыми являются первые 63 символа, и по этим символам идентификаторы должны быть уникальны. Не разрешается использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы.
Примеры имен:
A b12 r1m SIGMA gamma I80_86
Разделители используются для отделения друг от друга идентификаторов, чисел, зарезервированных слов. В качестве разделителей можно использовать:
-
пробел;
-
любой управляющий символ (коды от 0 до 31, например ^, #, $ );
-
комментарий.
В любом месте программы, где можно поместить один разделитель, их можно поместить любое количество и в любом сочетании.
Специальные символы можно разделить на три категории:
-
знаки операций;
-
знаки пунктуации;
-
зарезервированные слова.
Знаки операций предназначены для обозначения тех или иных арифметических, логических или других действий. Они бывают двух типов: состоящие из небуквенных символов (+ – * / = <> < > <= >= := @) и буквенные операции, представляющие собой зарезервированные слова.
Знаки пунктуации
{}, (* *) Скобки комментария
[] Выделение индексов массивов, элементов множеств, размера строки.
() Выделение выражений, списков параметров.
‘ апостроф для выделения символов или строковой константы.
:= Знак присваивания значения переменной, типизированной константе или функции.
; Разделение предложений программы (операторов и объявлений).
: Отделение переменной или типизированной константы от типа, метки от оператора.
= Отделение идентификатора типа от описания типа или константы от ее значения.
, Запятая для разделения элементов списка.
.. Разделение границ диапазона.
. Обозначение конца программы, отделение целой части от дробной в вещественном числе, отделение полей в записи, отделение идентификатора от имени модуля или объекта, в котором он находится.
^ Обозначение типа-указателя, значения величины по ее указателю или управляющего символа.
@ Обозначение адреса переменной, типизированной константы, подпрограммы, метода.
# Обозначение символа по его коду.
$ Обозначение директивы компилятора или знак 16-го числа.
Зарезервированные слова включают служебные слова и имена директив. Служебные слова можно использовать только по своему прямому назначению и их нельзя переопределить. Директивы также имеют свое определенное назначение, но их можно переопределить, однако делать это крайне нежелательно.
absolute exports library set
assembler external mod shl
and far name shr
array file nil string
asm for near then
assembler forward not to
begin function object type
case goto of unit
const if or until
constructor implementation packed uses
destructor in private var
div index procedure virtual
do inherited program while
downto inline public with
else interface record xor
end interrupt repeat
export label resident
Кроме перечисленных в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.