8. Модули
49
8. Модули
В тази глава ще бъде описана възможността на UniPascal за разделно-модулна
компилация. Такава възможност в стандарта на Pascal не съществува.
Модулът е множество от константи, типове, променливи, процедури и функции,
компилирани отделно. Модулите се използват за две основни цели:
*
като библиотека от изброените обекти. По този начин се намалява времето
за компилация (те вече са компилирани) и се избягва многократното
написване на едни и същи, често използвани части от програма;
*
реализиране на модулния принцип при съставяне на програми.
При изпълнение на програма след нейното зареждане в паметта на компютъра
се зареждат и инициализират модулите, които тя използва явно или неявно. Неявно
използвани са тези модули, които програмата не използва, но се използват от
използвани в нея модули (по премълчаване модулът STANDARD се използва от всяка
програма). По този начин програмата на UniPascal представлява цяла йерархия от
модули, в която на най-ниско ниво стоят модулите, които не използват други модули.
При компилация на програма (или модул), която използва модули, компилаторът
трябва да има достъп до вече компилираното описание на експортираните (изнасяните
навън) обекти. Този механизъм е качествената разлика между разделно-модулната
компилация и независимата компилация (каквато има например във FORTRAN-IV).
Модулите се състоят от две основни части: част за описание (interface part) и част
за реализация (implementation part). В UniPascal е възможно тези две части да бъдат
компилирани поотделно или заедно. Има и четири вида модули:
*
модул-описание, съдържащ само частта за описание;
*
модул-реализация, съдържащ само реализацията;
*
обикновен модул, съдържащ и двете части;
*
модул-само-описание (interface only unit), не съдържащ реализация и
ненуждаещ се от такава част.
Unit =
'unit' Ident ['(' IntConst ')'] ';'
'interface' 
   InterfacePart (
'implmentation'
   ImplmntPart | 
'end') '.'.
InterfaceUnit =
'interface' 'unit' Ident ['('IntConst')'] ';'
   InterfacePart
'end' '.'.
ImplmntUnit =
'implementation' 'unit' Ident ';'
 ImplmntPart '.'.
От синтаксиса се вижда, че след идентификатора на модул (в обикновен модул
или в описателната част на модул) може да има целочислена константа, поставена в
скоби. Тази константа указва номера на версията на модула (за подробности виж глава
"Модули и техните версии").
8.1. Раздел за описание (interface part)
InterfacePart =
[UsesClause] {
 ConstDeclaration |
<<  <  GO  >  >>

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