ГОСТ Р ИСО/МЭК 8824-4—2016
8.5Использование пустой ссылки «DummyReference» в ее области действиядолжно бытьсогла
совано с ее синтаксической формой, и там. где применимо. — с управляющим параметром, а все
использования той же самой «DummyReference» должны быть согласованы другсдругом.
П р и м е ч а н и е — Когда синтаксическая форма имени пустой ссылки двусмысленна (например, не ясно,
используется «objectciassreference» или «typereference»). неоднозначность может быть разрешена при первом
использовании имени пустой ссыпки справа от оператора присваивания. После этого характер имени пустой ссып ки
становится известным. Однако характер пустой ссылки не определяется полностью по правой стороне операто ра
присваивания, когда он. в свою очередь, используется только как фактический параметр в параметризованной
ссылке; в этом случае характер пустой ссылки должен быть определен при рассмотрении определения этой пара
метризованной ссыпки. Пользователи нотации должны учитывать, что такая практика может сделать специфика ции
АСН.1 менее понятными, поэтому рекомендуется предусматривать соответствующие комментарии для
пояснений.
Пример —
Рассмотрим следующее присваивание параметризованного класса объектов:
&valuoField2
&valueField3
&ValuoSetField
PARAMETERIZED-OBJECT-CLASS {TypeParam, INTEGER:valueParam, INTEGER: ValueSet-
Param} .*;■
CLASS{
&valueField1TypeParam,
INTEGER DEFAULTvalueParam,
INTEGER (ValueSetParam),
INTEGER DEFAULT{ ValueSetParam}
}
Для определения правильного использования пустых ссылок «DummyReference» в кон
тексте кParameterizedAssignment» и, только для той цели, могут быть рассмотрены
кDummyReference» для того, чтобы быть определенными следующим образом:
TypeParam ::= UnspecifiedType
valueParam INTEGER ::= unspecifiedlntogerValue
ValueSetParam INTEGER ::= { UnspecifiedlntegerValueSet}
где:
a) TypeParam представляет собой пустую ссылку кDummyReference», которая замеща
ет «Туре». Поэтому TypeParam может быть использован везде, где можно использовать
«typereference», например, как «Туре» для значения фиксированного типа поля valueFleld;
b
) valueParam представляет собой пустую ссылку «DummyReference», которая замеща
ет значение целочисленного типа. Следовательно, valueParam можно использовать везде,
где можно использовать «valuereference» для целочисленного значения, например, как значе
ние по умолчанию для значения фиксированного-типа поля valuoField2.
c) ValueSetParam представляет собой пустую ссылку «DummyReference», которая заме
щает множество значений целочисленного типа. Следовательно, ValueSetParam можно
использовать везде, где можно использовать «typereference» для целочисленного значения,
например, как «Туре» в нотации «ContainedSubtype»для valueField3 и ValueSetField.
8.6 Каждаяпустая ссылка «DummyReference» должна использоваться покрайней мереодин раз в
пределахсвоей областидействия.
П р и м е ч а н и е — Если пустая ссылка «DummyReference» так и не появилась, то соответствующий
«ActualParameter* не влияет на определение, и мог бы быть просто «отброшен», хотя пользователю могло бы
казаться, что имеет место некая спецификация.
Присваивания«ParameterizedValueAssignment»,«ParameterizedValueSetTypeAssignment»,
«ParameterizedObjectAssignment» и «ParameterizedObjectSetAssignment» , прямо или косвенно содер
жащие ссылку на себя, недействительны.
8.7 В определении «ParameterizedType», «ParameterizedValueSet» или «ParameterizedObject-
Class» пустаяссылка «DummyReference» недолжна передаваться кактегированный тип (как фактичес
кий параметр) рекурсивной ссылке на этот «ParameterizedType». «ParameterizedValueSet» или
«ParameterizedObjectClass» (см. А.З).
5