В общем виде любой блок
В общем виде любой блок имеет следующий формат:
----------- ----------- блок ---->¦ раздел +---->¦ раздел +----> ¦ описания ¦ ¦операторов¦ L----------- L-----------
раздел ----------T------------------------------------T---> объявления ^ ¦ ^ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ +--->¦ раздел описания +------+ ¦ ¦ ¦ ¦ меток ¦ ¦ ¦ ¦ ¦ L------------------- ¦ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ +--->¦ раздел описания +------+ ¦ ¦ ¦ ¦ констант ¦ ¦ ¦ ¦ ¦ L------------------- ¦ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ +--->¦ раздел описания +------+ ¦ ¦ ¦ ¦ типов ¦ ¦ ¦ ¦ ¦ L------------------- ¦ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ +--->¦ раздел описания +------+ ¦ ¦ ¦ ¦ переменных ¦ ¦ ¦ ¦ ¦ L------------------- ¦ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ +--->¦ оператор exports +------+ ¦ ¦ ¦ L------------------- ¦ ¦ ¦ ¦ ------------------- ¦ ¦ ¦ L--->¦ раздел описания +------- ¦ ¦ ¦процедур и функций¦ ¦ ¦ L------------------- ¦ L-------------------------------------------
Раздел описания меток - это та часть блока, где описываются метки, присваиваемые операторам в соответствующем разделе опера- торов. Каждая метка должна помечать только один оператор.
раздел -------- -------- ---- описания ------->¦ label +------>¦ метка +--T-->¦ ; +---> меток L-------- ^ L-------- ¦ L---- ¦ ---- ¦ L---+ , +------- L----
Меткой может быть идентификатор или последовательность цифр. Используемая в качестве метки последовательность цифр должна на- ходиться в диапазоне от 0 до 9999.
Раздел описания констант содержит описания констант, локаль- ных для этого блока.
раздел -------- ------------- описания ----->¦ const +----T->¦ описание +-----------T---> констант L-------- ^ ¦ ¦ константы ¦ ^ ¦ ¦ ¦ L------------- ¦ ¦ ¦ ¦ -------------------- ¦ ¦ ¦ ¦ ¦ описание ¦ ¦ ¦ ¦ L->¦ типизированной +-- ¦ ¦ ¦ константы ¦ ¦ ¦ L-------------------- ¦ L-------------------------------
Раздел описания типов включает описания всех типов в блоке.
раздел -------- ------------- описания ----->¦ type +------>¦ описание +----T---> типов L-------- ^ ¦ типа ¦ ¦ ¦ L------------- ¦ L-----------------------
Раздел описания переменных состоит из описания переменных, локальных для этого блока.
раздел ------ ------------- описания ----->¦ var +------>¦ описание +----T---> переменных L------ ^ ¦ переменной ¦ ¦ ¦ L------------- ¦ L-----------------------
Раздел описания процедур и функций состоит из описания про- цедур и функций, локальных для этого блока.
раздел ------------- описания -----------T->¦ описание +-----T----> процедур и ^ ¦ ¦ процедуры ¦ ^ ¦ функций ¦ ¦ L------------- ¦ ¦ ¦ ¦ ------------- ¦ ¦ ¦ L->¦ описание +--- ¦ ¦ ¦ функции ¦ ¦ ¦ L------------- ¦ ¦ ------------- ¦ +---->¦ описание +-----+ ¦ ¦конструктора¦ ¦ ¦ L------------- ¦ ¦ ------------- ¦ +---->¦ описание +-----+ ¦ ¦деструктора ¦ ¦ ¦ L------------- ¦ L-------------------------
В операторе exports перечисляются все процедуры и функции, которые экспортируются данной программой или динамически компону- емой библиотекой. Оператор exports допускается только во внешнем разделе описаний программы или динамически компонуемой библиотеки - в разделе описаний процедуры, функции или модуля его использо- вать нельзя.
Раздел операторов определяет операторы или алгоритмические действия, которые выполняются в блоке.
раздел ------------ операторов ----->¦ составной +-----> ¦ оператор ¦ L------------