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

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

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

Синтаксис

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

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

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

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

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

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

Выполнение объявления_пакета состоит из выполнения его основных_декларативных_элементов в заданном порядке.
ПРИМЕЧАНИЕ 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;
Существует также множество примеров объявлений пакетов в предопределённой среде языка (см. Приложение А).


Spec-Zone.ru

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