ГОСТ Р ИСО/МЭК 8824-4-2003
9.4 Для используемой альтернативы “Defined<X>” ограничения, определенные в ГОСТ Р ИСО/МЭК 8824-1 и ГОСТ Р ИСО/МЭК 8824-2 для обычных имен ссылок, должны использоваться и для соответствующих параметризованных имен ссылок.
Примечание — По существу, ограничения следующие: каждый “Defrned<X>” имеет две альтернативы — “<x>reference” и “Extemal<x>Reference”. Первая используется в модуле определения или когда определение было импортировано и нет противоречия имени; вторая используется тогда, когда нет перечисленного импорта (не рекомендуется) или если есть конфликт между импортированным именем и локальным определением (также не рекомендуется), или есть конфликт между импортированными именами.
9.5 Список фактических параметров “ActualParameterList” есть:
ActualParameterList : : =
“{” ActualParameter “,” + “}”
ActualParameter : : =
Type |
Value |
ValueSet |
DefinedObjectClass |
Object |
ObjectSet
9.6 Должен быть ровно один параметр “ActualParameter” для каждого “Parameter” в соответствующем “ParameterizedAssignment”, и они должны появляться в том же самом порядке. Конкретный выбор “ActualParameter” и управляющего (если он есть) должен определяться синтаксической формой “Parameter” и контекстов, в котором он встречается в “ParameterizedAssignment”. “Actual-Parameter” должен иметь форму, необходимую для замены “DummyReference” в области ее действия (см. 8.4).
Пример
Параметризованный класс объектов предыдущего примера (см. 8.5) может быть указан следующим образом:
MY-OBJECT-CLASS : : = PARAMETERIZED-OBJECT-CLASS {BIT STRING, 123, {4|5|6}}
9.7 Фактический параметр занимает место имени пустой ссылки в определении фактического типа, значения, множества значений, класса объектов, объекта или множества объектов, которые указываются данным экземпляром использования параметризованного имени ссылки.
9.8 Смысл любых ссылок, которые появляются в “ActualParameter”, и умалчиваемый тег, применяемый к любым появляющимся тегам, определяются в соответствии со средой тегирования “ActualParameter”, а не “DummyReference”.
Примечание — Таким образом, параметризация, подобно ссылкам, селективным типам и “COMPONENTS OF”, не является точной текстуальной заменой.
Пример
Рассмотрим следующие модули:
Ml DEFINITIONS AUTOMATIC TAGS : : = BEGIN EXPORTS Tl;
T1:: = SET { fl INTEGER, f2 BOOLEAN
}
END
M2 DEFINITIONS AUTOMATIC TAGS : : = BEGIN IMPORTS Tl FROM Ml;
T3 : : = T2{Tl}
T2{X} : : = SEQUENCE {
7