ГОСТ Р ИСО/МЭК 8824-1-2001
3
А : : = CHOICE
|b
B.
В : : = CHOICE
с
Q
Id
10] NULL,
e |l| NULL)
С: : = CHOICE
If
[2| NULL.
g
|3| NULL)
(НЕКОРРЕКТНЫЙ)
А :: = CHOICE
{bВ,
сС}
В :: = CHOICE
{d 10J NULL,
e 111 NULL)
C : : = CHOICE
|f |0| NULL,
g |1| NULL)
В примерах I и 2 нотация используется корректно. В примере 3 нотация некорректна без авто
матического тегирования, так как теги типов d. f, а также е, g идентичны.
28.7 Идентификаторы "identifier” всех типов "NamedType" в "AlternativeTypeLists" должны отли
чаться от идентификаторов других типов "NamedType" в этом же списке.
28.8 Значение выборочного типа должно определяться нотацией "ChoiceValue":
ChoiceValue : : = identifierValue
28.9 “Value" должно быть нотацией для значения того типа в "AlternativeTypeLists", который
назван идентификатором “identifier".
29 Нотация для селективных типов
29.1 Нотацией, определяющей селективный тип (см. 3.8.55). должна быть "SelectionType":
SelectionType : i = identifier "<“ Type
где "Type" обозначает выборочный тип. a "identifier” —один из типов "NamedType". появляющихся
u "AlternativeTypeLists" определения этого выборочного типа.
29.1.1 Когда "Туре" обозначает ограниченный тип. выбор осуществляется из родового типа,
игнорируя ограничение.
29.2 Когда "SelectionType" используется в качестве "NamedType", идентификатор "identifier"
типа “NamedType” присутствует так же, как и "identifier" типа "SelectionType".
29.3 Когда "SelectionType” используется в качестве "Туре", идентификатор "identifier” сохраня
ется и обозначает тип выбранной альтернативы.
29.4 Нотацией для значения селективного типа должна быть нотация для значения, указанного
типом "SelectionType".
30 Нотация для тегированных типов
Тегированный тип (см. 3.8.64) — это новый тип, который является изоморфным старому типу,
но имеетдругой тег. Тегированный тип используется главным образом там. где настоящим стандар
том требуется использование типов с различающимися тегами (см. 24.5. 24.6. 26.3 и 28.2).
Использо вание в модуле "TagDefault" с "AUTOMATIC TAGS" позволяет выполнить эти требования
без явной спецификации нотации тегированного типа в этом модуле.
П р и м е ч а н и е —Когда протокол определяет, что значения нескольких типов данных могут быть
переданы в один и тот же момент времени, различие тегов может быть необходимым для того, чтобы обеспе
чить получателю возможность корректнодекодировать значение.
30.1 Нотацией для тегированного типа должна быть "TaggedType":
37