ГОСТ Р ИСО/М ЭК 8824-4-2003
Прим ер
Рассмотрим следующее присваивание параметризованного класса объектов:
PARAMETERIZED-OBJECT-CLASS {TypeParam, INTEGER: valueParam,
INTEGER: VahieSetParam} : : =
CLASS |
&valueFieldI
&value Field2
&valueField3
&valueSet Field
>
TypeParam,
INTEGER DEFAULT valueParam,
INTEGER (ValueSetParam),
INTEGER DEFAULT {ValueSetParam)
Для определения правильного использования пустых ссылок "DummyReference” в контексте
“ParameterizedAssignment” и. только для той цели, могут быть рассмотрены “DummyReference” для
того, чтобы быть определенными следующим образом:
TypeParam : : = UnspecifieldType
valueParam INTEGER : : = unspecifieldlmegerValue
ValueSetParam INTEGER : : = {UnspecifieldInteger ValueSet)
где:
а) TypeParam есть пустая ссылка “DummyReference”, которая замещает “Туре”. Поэтому
TypeParam может быть использоиан пезде, где можно использопать “typereference”, например как
“Туре” для значения фиксированного типа поля valueFieldl.
б) ValueParam есть пустая ссылка “DummyReference”, которая замещает значение целочислен
ного типа. Следовательно, valueParam можно использовать везде, где можно использовать “valueref-
егепсе" для целочисленного значения, например как значение по умолчанию для
значения фиксированного-тнпа поля valueFie!d2.
в) ValueSetParam есть пустая ссылка “DummyReference”, которая замешает множество значе
ний целочисленного типа. Следовательно, ValueSetParam можно использовать везде, где можно
использовать “typereference” для целочисленного значения, например как “Туре” в нотации “Соп-
tainedSubtype” для valueField3 и ValueSetField.
8.6Каждая пустая ссылка “DummyReference” должна использоваться по крайней мере один
раз в пределах своей области действия.
П р и м е ч а н и е —Если пустая ссылка “DummyReference" так и нс появилась, то соответствующий
“ActualParameter” нс влияет на определение, мог бы быть просто «отброшен», хотя пользователю могло бы
кататься, что имеет место некая спецификация.
Присваивания “ParamctcrizedValueAxsignmcnt", “ParamcterizcdValueSetTypcAssignmcnt", ”Parametcrizc-
dObjcct Assignment" и “ParameterizedObject SetAssignment”, прямо или косвенно содержащие ссылку на себя,
недействительны.
8.7 В определении “ParameterizedType”, “Parameterized ValueSet” или “ParameterizedOb-
jeclClass” пустая ссылка “DummyReference” не должна передаваться как тегированный тип (как
фактический параметр) рекурсивной ссылке на этот “ParameterizedType”, “ParameterizedValueSet”
или “ParameterizedObjectClass” (см. А.З).
8.8 В определении “ParameterizedType”, "ParameterizedValueSet” или "ParameterizedOb
jectClass” не должно быть циклической ссылки на определяемый элемент, если только такая ссылка
прямо или косвенно не помечена как OPTIONAL или, в случае “ParameterizedType” и “Parameter-
izedValueSet”,дана путем ссылки на выборочный тип, по крайней мере одна из альтернатив которого
является нециклической в определении.
8.9 Управляющий пустой ссылки “DummyReference” не должен включать в себя ссылку на
другую “DummyReference”, если эта другая “DummyReference” также имеет управляющего.
8.10 В параметризованном присваивании правая сторона” не должна состоять исклю
чительно из “DummyReference”.
8.11 Упраазяюшнй "DummyReference” не должен требовать знания “DummyReference” или
определяемого параметризованного имени ссылки.
5