Spec-Zone.ru › Ada 2012
Справочник Ada 2012

7.1 Спецификации и объявления пакетов

Пакет, как правило, состоит из двух частей: спецификации пакета и тела пакета. У каждого пакета есть спецификация пакета, но не у всех пакетов есть тело пакета.

Синтаксис

объявление_пакета ::= спецификация_пакета;
спецификация_пакета ::=
package имя_идентифицируемого_блока
[спецификация_аспекта] is
{базовый_декларативный_элемент}
[private
{базовый_декларативный_элемент}]
end [[имя_родительского_блока.]идентификатор]
Если в конце спецификации_пакета появляется идентификатор или имя_родительского_блока.идентификатор, эта последовательность лексических элементов повторяет имя_идентифицируемого_блока.

Правила легитимности

Объявление пакета (package_declaration) или объявление обобщенного пакета (generic_package_declaration) требует завершения (тела), если оно содержит любой базовый_декларативный_элемент, который требует завершения, но его завершение не находится в спецификации_пакета.

Статическая семантика

Первый список базовый_декларативный_элементов спецификации_пакета пакета, отличного от обобщенного формального пакета, называется видимой частью пакета. Необязательный список базовый_декларативный_элементов после ключевого слова private (любой спецификации_пакета) называется частной частью пакета. Если ключевое слово private отсутствует, пакет имеет неявную пустую частную часть. Каждый список базовый_декларативный_элементов спецификации_пакета образует список объявлений пакета.
Сущность, объявленная в частной части пакета, видима только в пределах области объявления самого пакета (включая любые дочерние блоки — см. 10.1.1). В отличие от этого, расширенные имена, обозначающие сущности, объявленные в видимой части, могут использоваться даже за пределами пакета; кроме того, непосредственная видимость таких сущностей может быть достигнута с помощью клаузы_использования (см. 4.1.3 и 8.4).

Динамическая семантика

Выполнение объявления пакета (package_declaration) состоит из выполнения его базовый_декларативный_элементов в заданном порядке.
ПРИМЕЧАНИЯ
1 Видимая часть пакета содержит всю информацию, которую другой блок программы может узнать о пакете.
2 Если объявление находится непосредственно внутри спецификации пакета, и объявление имеет соответствующее завершение, являющееся телом, то это тело должно находиться непосредственно внутри тела пакета.

Примеры

Пример объявления пакета:
package Rational_Numbers is
type Rational is
record
Numerator : Integer;
Denominator : Positive;
end record;
function "="(X,Y : Rational) return Boolean;
function "/" (X,Y : Integer) return Rational; -- для построения рационального числа
function "+" (X,Y : Rational) return Rational;
function "-" (X,Y : Rational) return Rational;
function "*" (X,Y : Rational) return Rational;
function "/" (X,Y : Rational) return Rational;
end Rational_Numbers;
Также существуют многочисленные примеры объявлений пакетов в предопределенной среде языка (см. Приложение A).


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API