8. Модули
53
8. Модули
В UniPascal-е предусмотрена возможность, которой нет в стандартном Pascal-е -
возможность раздельно-модульной компиляции (будем писать и только раздельной).
Некоторые части разных программ иногда совпадают. Если каждая программа
должна быть единым целом при трансляции, то некоторые части с одинаковым
предназначением должны фигурировать столько раз, сколько раз использованы в
программе.
Для устранения указанного недостатка в UniPascal-е предусмотрена еще одна
конструкция языка - модули (units).
Идея состоит в том, что модули могут храниться в "библиотеке" программ и к
ним должно производиться автоматическое обращение при загрузке и выполнении
программ. Таким образом, становится возможным заранее заготовить набор часто
используемых программных фрагментов и тем самым избежать многократного
программирования. Этот метод называется методом раздельной компиляции.
Модули сохраняются в библиотеке программ не в виде исходных текстов, а в
компилированном виде. При загрузке главная программа, которая использует
возможности одного или нескольких модулей, связывается с ранее компилированными
модулями, из которых она импортирует объекты.
Во время трансляции импортирующей программы компилятор должен иметь
доступ к описаниям объектов ранее откомпилированных модулей, из которых
происходит импорт. Этот механизм отличает раздельную компиляцию от независимой
компиляции. июбой вспомагательнный модуль может, в свою очередь, импортировать
объекты из других модулей. Следовательно, программа может представлять собою
целую йерархию модулей. Главная программа имеет высший уровень, а модули,
которые не импортируют объектов - низший.
Чтобы компилятор знал об используемых модулях, список их идентификаторов
вводится как UsesClause в текст главной программы.
Unit =
'unit' Ident ['('IntConst')']';' 'interface' 
   InterfacePart (
'implmentation'
   ImplmntPart | 
'end') '.'.
InterfaceUnit =
'interface' 'unit' Ident ['('IntConst')'] ';'
   InterfacePart
'end' '.'.
ImplmntUnit =
'implementation' 'unit' Ident ';'
   ImplmntPart '.'.
От синатксических описаний видно, что за идентификатором модуля (в обычном
модуле или в описательной части модуля) может стоять целая константа, заключенная
в скобках. Этой константой указывается версия модуля (см. п. 12.6).
В UniPascal-е текст модулей состоит из двух разделов - раздел описаний
(InterfacePart) и раздел реализации (ImplementationPart).
Чтобы не компилировать всегда обе части одновременно, предусмотрена
возможность их раздельной компиляции. Эти два раздела обособляются как два модуля
- модуль описаний (InterfaceUnit) и модуль реализации (ImplementationUnit). Поэтому
существуют модули четырех видов:
*
модуль-описание, содержащий описательную часть;
<<  <  GO  >  >>

Вернуться к началу сайта