ГОСТ Р ИСО/МЭК 8824-4—2003
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Информационная технология
АБСТРАКТНАЯ СИНТАКСИЧЕСКАЯ НОТАЦИЯ ВЕРСИИ ОДИН (АСН.1)
Часть 4
Параметризация спецификации АСН.1
Издание официальное
БЗ 9-2000/263
ГОССТАНДАРГ РОССИИ Москва
ГОСТ Р ИСО/МЭК 8824-4-2003
Предисловие
1 РАЗРАБОТАН Государственным научно-исследовательским и конструкторско-технологическим институтом «Тест» Министерства Российской Федерации по связи и информатизации
ВНЕСЕН Министерством Российской Федерации по связи и информатизации
2 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 21 января 2003 г. № 19-ст
3 Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК 8824-4—95 «Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Параметризация спецификации АСН.1». ИСО/МЭК 8824-4—98/Доп. 1—2000 «АСН.1 — семантическая модель»
4 ВВЕДЕН ВПЕРВЫЕ
© ИПК Издательство стандартов. 2003
Настоящий стандарт нс может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Госстандарта России
Содержание
1 Область применения
2 Нормативные ссылки
3 Определения
3.1 Спецификация базовой нотации
3.2 Спецификация информационного объекта
3.3 Спецификация ограничения
3.4. Дополнительные определения
4 Сокращения
5 Соглашение
6 Нотация
6.1 Присваивания
6.2 Параметризованные определения
6.3 Символы
7 Элементы АСН.1
8 Параметризованные присвоения
9 Указания параметризованных определений
10 Параметры абстрактного синтаксиса
Приложение А Примеры
Приложение В Сводка погапий
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Информационная технология
АБСТРАКТНАЯ СИНТАКСИЧЕСКАЯ НОТАЦИЯ ВЕРСИИ ОДИН (АСН.1) Часть 4
Параметризация спецификации ЛСН.1
Information technology. Abstract Syntax Notation One (ASN.I).
Pari 4. Parameterization of ASN.I specifications
Дата введения 2004—01—01
1 Область применения
Настоящий стандарт является частью абстрактной синтаксической нотации версии I (ACH.I) и определяет нотацию для параметризации спецификации ACH.I.
2 Нормативные ссылки
В настоящем стандарте использованы ссылки на следующие стандарты:
ГОСТ Р ИСО/МЭК 8824-1—2001 Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть I. Спецификация основной нотации (Рекомендация МККТТ Х.680 (1994)|
ГОСТ Р ИСО/МЭК 8824-2—2001 Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта (Рекомендация МККТТ Х.681 (1994)|
ГОСТ Р ИСО/МЭК 8824-3—2002. Информационная технология. Абстрактно-синтаксическая нотация версии один (АСН.1). Часть 3. Спецификация ограничения (Рекомендация МККТТ Х.682 (1994)|
3 Определения
В настоящем стандарте применяют следующие термины:
3.1 Спецификация базовой нотации
В настоящем стандарте используют термины, определенные в ГОСТ Р ИСО/МЭК 8824-1.
3.2 Спецификация информационного объекта
В настоящем стапларге используют термины, определенные в ГОСТ Р ИСО/МЭК 8824-2.
3.3 Спецификация ограничения
В настоящем стандарте используют термины, определенные в ГОСТ Р ИСО/МЭК 8824-3.
3.4 Дополнительные определения
3.4.1 стандартное имя ссылки: Имя ссылки, определенное без параметров, посредством другого «Assignment» нежели «ParameierizcdAssignnient». Такое имя указывает полное определение и не обеспечивается фактическими параметрами при использовании.
3.4.2 параметризованное имя ссылки: Имя ссылки, определенное с помощью параметризованного присваивания, которое указывает на неполное определение и поэтому должно быть обеспечено фактическими параметрами при использовании.
3.4.3 параметризованный тип: Тип, определенный с помощью присваивания параметризованного типа и, таким образом, компоненты которого являются неполными определениями, которые должны быть обеспечены фактическими параметрами при использовании типа.
Издание официальное
3.4.4 параметризованное значение: Значение, определенное с помощью присваивания параметризованного значения и. таким образом, не полностью специфицированное, которое должно быть обеспечено фактическими параметрами при использовании.
3.4.5 параметризованное множество значении: Множество значений, определенное с помошыо присваивания параметризованного множества значений и. таким образом, нс полностью специфицированное. которое должно быть обеспечено фактическими параметрами при использовании.
3.4.6 параметризованный класс объектов: Класс информационных объектов, определенный с помощью присваивания параметризованного класса объектов, таким образом, спецификации его полей заданы нс полностью и должны быть обеспечены фактическими параметрами при использовании.
3.4.7 параметризованный объект: Информационный объект, определенный с помощью присваивания параметризованного объекта и. таким образом, его компоненты заданы не полностью и должны быть обеспечены фактическими параметрами при использовании.
3.4.8 параметризованное множество объектов: Множество информационных объектов, определенное с помощью присваивания множества параметризованных объектов и. таким образом, его объекты заданы нс полностью и должны быть обеспечены фактическими параметрами при использовании.
3.4.9 переменное ограничение: Ограничение, применяемое в спецификации параметризованного абстрактного синтаксиса и зависящее от некоторого параметра абстрактного синтаксиса.
4 Сокращения
В настоящем стандарте использовано следующее сокращение:
АСН.1 — абстрактная синтаксическая нотация версии 1.
5 Соглашение
В настоящем стандарте используют соглашения, приведенные в ГОСТ Р ИСО/МЭК 8824-1, раздел 5.
6 Нотация
В данном разделе приведена сводка нотации, определенной в настоящем стандарте.
6.1 Присваивания
В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для присваивания «Assignment* (см. ГОСТ Р ИСО/МЭК 8824-1. раздел 12):
- ParametrizcdAssignmcnt (см. 8.1).
6.2 Параметризованные определения
6.2.1 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для определяемого типа «Defined Гуре» (см. ГОСТ Р ИСО/МЭК 8824-1. пункт 13.1):
- ParamclrizcdType (см. 9.2).
6.2.2 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для определяемого значения «DcfincdValuc* (см. ГОСТ Р ИСО/МЭК 8824-1. пункт 13.1):
- ParametrizedValuc (см. 9.2).
6.2.3 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для определяемого типа «DcfincdTypc» (см. ГОСТ Р ИСО/МЭК 8824-1. пункт 13.1):
- ParamctrizcdValucSct Гуре (см. 9.2).
6.2.4 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для класса объектов «ObjcctClass» (см. ГОСТ Р ИСО/МЭК 8824-2. пункт 9.2):
- ParametrizedObjcctClass (см. 9.2).
6.2.5 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для объекта «Object* (см. ГОСТ Р ИСО/МЭК 8824-2. пункт 11.2):
- ParametrizedObject (см. 9.2).
6.2.6 В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для множества объектов «ObjectSct* (см. ГОСТ Р ИСО/МЭК 8824-2. пункт 12.2):
- ParametrizedObjectSct (см. 9.2).
6.3 Символы
В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для символа «Symbol» (см. ГОСТ Р ИСО/МЭК 8824-1. пункт 12.1):
- ParametrizcdRcfercncc (см. 9.1).
7 Элементы АСН.1
В настоящем стандарте используют элементы АСН.1. определенные в ИСО/МЭК 8824-1. раздел 11.
8 Параметризованные присвоения
8.1 Существуют операторы параметризованного присвоения, соответствующие каждому из операторов присвоения, определенному в ГОСТ Р ИСО/МЭК 8824-1 и ГОСТ Р ИСО/МЭК 8824-2. Конструкция «ParametcrizcdAssignmcnt» есть:
ParametcrizcdAssignmcnt : : =
ParamctcrizcdTypcAssignment
ParanictcrizcdValucAssignmcnt
ParameterizcdValueSetTypeAssignmcnt
ParamctcrizedObjeclClassAssignmcnt
ParamctcrizcdObjectAssignmcnt
ParamctcrizcdObjcctSctAssignmcnt
8.2 Каждая конструкция «Paramctcrizcd<X>Assignmcnt» имеет тот же самый синтаксис, что и «<X>Assignmcnt», за исключением того, что имеется начальный элемент «ParameterList». Таким образом, начальный элемент становится параметризованным именем ссылки (см. 3.4.2).
Примем а и и е — ГОСТ Р ИСО/МЭК 8824-1 налагает требование. заключающееся в том. что все имена ссылки, нашаченные в пределах модуля, параметризованные или нет. должны различаться.
ParamctcrizcdTypeAssignment : : =
type reference
ParameterList
Type
ParametcrizcdValucAssignment : : =
valuercfcrcnce
ParameterList
Type
** I I — **
Value
ParamctcrizcdValucSetTypcAssignmcnt: : —
type reference
ParameterList
Type
ValueSet
ParamctcrizcdObjcctClassAssignmcnt : : =
objcctclassrcfcrcnce
ParameterList
ObjcctClass
ParamctcrizcdObjcctAssignmcnt : : = objcctrcfcrcnce ParamctcrList DcfincdObjectClass
ObjectClass
ParamctcrizcdObjcctSctAssignmcnt : : = objcctsctrcfcrencc ParamctcrList DcfincdObjectClass
ObjcctSct
8.3 Конструкция “ParamctcrList” есть список параметров ••Parameter'’, заключенных в фигурные скобки.
ParamctcrList : : = Parameter ".” + “}”
Каждый параметр “Parameter” состоит из пустой ссылки “DummyRcfcrcnce” и. возможно, из параметра управляющего слова “ParamGovernor”.
Parameter: : = ParamGovernor “:” DummyRcfcrcnce | DummyRcfcrcnce
ParamGovernor: : = Governor | DummyGovernor
Governor : : = Type | DcfincdObjectClass
DummyGovernor: : = DummyRcfcrence
DummyRcfcrcnce : : = Reference
“DummyRcfcrence” в “Parameter” может замешаться:
а) “Type” или "DcfincdObjectClass”, в том случае, когда нс должно быть “ParamGovernor”;
б) “Value” или “ValucSct”; в этом случае должен присутствовать “ParamGovernor”; когда “ParamGovernor” есть “Governor”, он должен быть “Туре”, когда “ParamGovernor” есть “Dummy-Governor”. фактическим параметром для “ParamGovernor” должен быть “Туре”;
в) “Object” или “ObjcctSct”: в этом случае должен присутствовать “ParamGovernor”; если “ ParamGovernor” есть “Governor”, это должен быть “DcfincdObjectClass”. если "ParamGovernor” есть “DummyGovernor”, то фактическим параметром для “ParamGovernor” должен быть “DefinedOb-jcctClass”;
“DummyGovernor” должен быть “DummyRcfcrcnce”. который нс имеет "Governor”.
8.4 Областью действия “DummyRcfcrence”, появляющейся в конструкции “ParamctcrList”, валяется сам “ParamctcrList” вместе с той частью "ParamctcrizcdAssignmcnt”. которая следует за “:: =”. “DummyRcfcrcnce” скрывает любую другую ссылку "Reference” с таким же именем в этой области действия.
8.5 Использование пустой ссылки "DummyRcfcrcnce” в ее области действия должно быть согласовано с се синтаксической формой, и (там, где применимо) с управляющим параметром, а все использования той же самой “DummyRcfcrence” должны быть согласованы друг с другом.
Примечание- Когда синтаксическая форма имени пустой ссылки двусмысленна (например, не ясно, используется "objcctclassrcfcrencc" или "lypercfcrcncc"). неоднозначность может быть разрешена при первом использовании имени пустой ссылки справа от оператора присваивания. После этого характер имени пустой ссылки становится известным. Однако характер пусгой ссылки нс определяется полностью по правой стороне оператора присваивания, когда он. в свою очередь, используется только как фактический параметр в параметризованной ссылке; в этом случае характер пустой ссылки должен быть определен при рассмотрении определения этой параметризованной ссылки. Пользователи нотации должны учитывать, что такая практика может сделать спецификации ASN.I менее понятными, поэтому рекомендуется предусматривать соответствующие коммен гарии для пояснений.
Пример
Рассмотрим следующее присваивание параметризованного класса объектов:
PARAMETERIZED-OBJECT-CLASS {TypcParam. INTEGER: valucParam,
INTEGER: ValiieSctParam} :
CLASS {
Avaluc Field 1 &valucFicld2 &valucFicld3
&valucSctFicld
TypcParam.
INTEGER DEFAULT valucParam.
INTEGER (ValucSctParam).
INTEGER DEFAULT {ValucSctParam}
Для определения правильного использования пустых ссылок “DummyRcfcrcncc” в контексте “ParamctcrizedAssignmcnt" и. только для той цели, могут быть рассмотрены “DummyRcfcrcncc” для того, чтобы быть определенными следующим образом:
TypcParam : : = UnspccificldTypc
valucParam INTEGER : : = unspecifieldlntcgcrValuc
ValucSctParam INTEGER : : = {Unspccificldlntegcr ValueSci} где:
а) TypcParam есть пустая ссылка “DummyRcfcrcncc”. которая замещает “Туре”. Поэтому TypcParam может быть использован везде. где можно использовать “typercfcrcncc". например как “Туре” для значения фиксированного типа поля valucFicldl.
б) ValucParam сеть пустая ссылка “DummyRcfcrcncc”. которая замешает значение целочисленного типа. Следовательно. valucParam можно использовать везде, где можно использовать “valucrcf-crcncc” для целочисленного значения, например как значение по умолчанию для значения фиксированного-типа поля valueFicld2.
в) ValucSctParam есть пустая ссылка “Dummy-Reference”, которая замещает множество значений целочисленного типа. Следовательно. ValucSctParam можно использовать везде, где можно использовать “typcrcfcrcncc” для целочисленного значения, например как “Туре" в нотации “Соп-taincdSubtypc" для valucFicld3 и ValueSciField.
8.6 Каждая пустая ссылка “DummyRcfcrcncc” должна использоваться по крайней мере один раз в пределах своей области действия.
Примечание — Если пустая ссылка “DummyReference” так и не появилась, то соответствующий “AciualParaineier” не влияет на определение, мог бы быть просто «отброшен», хотя пользователю могло бы казаться, что имеет место некая спецификация.
Присваивания “ParamctcrizcdValucAssignmcnt”, “ Parameterized ValucSctTypcAssignmcnt”. " Parameterize-dObjectAssignment” и “ParamelerizedObjeclSetAssignmenl”. прямо или косвенно содержащие ссылку на себя, недействительны.
8.7 В определении “ParamcterizcdTypc". “ ParameicrizcdValucSet” или “ ParamcicrizedOb-jcctClass” пустая ссылка “Dummy-Reference” не должна передаваться как тегированный тип (как фактический параметр) рекурсивной ссылке на этот “ParamcterizcdTypc”. “ParameicrizcdVakieSci” или “ParamclcrizcdObjcctClass” (см. А.З).
8.8 В определении “Parameterized Гуре”. “ParamctcrizcdValucSct” или “ParamctcrizcdOb-jcctClass" нс должно быть циклической ссылки на определяемый элемент, если только такая ссылка прямо или косвенно нс помечена как OPTIONAL или. в случае “ParamcterizcdTypc” и “Parametcr-izcdValucSct”, дана путем ссылки на выборочный тип. по крайней мерс одна из альтернатив которого является нециклической в определении.
8.9 Управляющий пустой ссылки “DummyReference” нс должен включать в себя ссылку на другую “DummyRcfcrcncc”. если эта другая “DummyReference” также имеет управляющего.
8.10 В параметризованном присваивании правая сторона “: : = ” нс должна состоять исключительно из “DummyRcfcrcncc”.
8.11 Управляющий "DummyReference” нс должен требовать знания "DummyRcfcrcncc" или определяемого параметризованного имени ссылки.
8.12 Когда в параметризованный тип в качестве фактического параметра подставляется значение или множество значений, го требуется, чтобы тип фактического параметра был совместим с упраазяюшим соответствующего пустого параметра. (См. ГОСТ Р ИСО/МЭК 8824-1. F.6.2. F.6.3).
8.13 При определении параметризованного типа с пустым параметром вместо значения или множества значений тип. используемый для управления этим пустым параметром, должен быть таким, что все его значения допустимы для использования во всех правых частях присваиваний, где есть пустой параметр. (См. ГОСТ Р ИСО/МЭК 8824-1. F.6.5).
9 Указания параметризованных определении
9.1 В перечне “SymbolList” (в ‘'Export” или “Import”) параметризованное определение должно быть указано с помощью “ParamctcrizedRcfcrcnce”:
ParamcterizcdRcfcrcncc : : = Reference | Reference “}”.
где “Reference” — первый элемент в “ParamctcrizcdAssignmcnt”. как определено в 8.2.
Примечание — Первая альтернатива для “Parameterized Reference” предусмотрена исключительно для облегчения понимания. Обе альтернативы имеют один и тот же смысл.
9.2 Вне “Export” или “Import” параметризованное определение должно быть указано конструкцией ”Paramctcrizcd<X>". которая может использоваться как альтернатива для соответствующего “<Х>”.
ParamctcrizcdType : : =
S i m р 1с De fi n cd Ту ре
ActualParamcterList
Simple DcfmcdTypc : : = Extcrnaltypcrcfcrcnce | type reference
ParametcrizcdValue : : =
Simple Defined Value
Actual ParamctcrList
SimpIcDefinedValue : : =
Externlvaluerefcrence |
valucrcfcrcncc
Paramcteriz.cdValueSctTypc : : =
Simple DefinedType
ActualParamcterList
ParamctcrizcdObjcctClass : : =
DcfincdObjcctClass
ActualParamcterList
ParametcrizcdObjcctSci : : =
DcfmcdObjcctSct
ActualParamcterList
ParamcterizcdObject : : =
DcfincdObjcct
ActualParamcterList
9.3 Имя ссылки в ”Dcfind<X>” должно быть именем ссылки, для которого сделано присваивание в “ParamctcrizcdAssignmcnt”.
9.4 Для используемой атьтсрнативы “Derincd<X>" ограничения, определенные в ГОСТ Р ИСО/МЭК 8824-1 и ГОСТ Р ИСО/МЭК 8824-2 для обычных имен ссылок, должны использоваться и для соответствующих параметризованных имен ссылок.
П р и м е ч а и и е — По существу, ограничения следующие: каждый “Detincd<X>" имеет две альтернативы — “<x>reference" и “External<x>Refeience". Первая используется в модуле определения или когда определение было импортировано и нег противоречия имени; вторая используется гогда. когда нет перечисленного импорта (не рекомендуется) или если есть конфликт между импортированным именем и локальным определением (также нс рекомендуется), или есть конфликт между импортированными именами.
9.5 Список фактических параметров “ActualParameterList" есть:
Actual ParanicicrLisi : : =
“{" AcuialParamcter
AcuialParamcter: : =
Type
Value
ValucSet
DufmcdObjectClass | Object
Object Set
9.6 Должен быть ровно один параметр “AcuialParamcter" для каждого ’‘Parameter'* в соответствующем “PanimctcrizcdAssignmcnt". и они должны появляться в том же самом порядке. Конкретный выбор “ActualParamcter" и управляющего (если он есть) должен определяться синтаксической формой “Parameter" и контекстов, в котором он встречается в “ParameterizcdAssignmcnt". “Actual-Parameter" должен иметь форму, необходимую для замены “DummyRcfcrcncc" в области се действия (см. S.4).
Пример
Параметризованный класс объектов предыдущего примера (см. 8.5) может быть указан следующим образом:
MY-OB.IECT-CLASS : : = PARAMETERIZED-OBJECT-CLASS {BIT STRING, 123, {4|5|6}}
9.7 Фактический параметр занимает место имени пустой ссылки в определении фактического типа, значения, множества значений, класса объектов, объекта или множества объектов, которые указываются данным экземпляром использования параметризованного имени ссылки.
9.8 Смысл любых ссылок, которые появляются в “AcuialParamcter". и умалчиваемый тег. применяемый к любым появляющимся тегам, определяются в соответствии со средой тегирования “ActualParameter", а нс “DummyRcfcrcncc".
Примечание — Таким образом, параметризация, подобно ссылкам, селективным типам и “COMPONENTS OF”, не является точной текстуальной заменой.
Пример
Рассмотрим следующие модули:
Ml DEFINITIONS AUTOMATIC TAGS : : = BEGIN
EXPORTS Tl;
Tl : : = SE I' {
П INTEGER.
f2 BOOLEAN
I
END
М2 DEFINITIONS AUTOMATIC TAGS : : = BEGIN-
IM PORTS Tl FROM Ml;
T3 : : = Г21Т1)
T2{X) : : = SEQUENCE {
a INTEGER.
b X
)
END
Применение 9.8 означает, что тег для компонента Л из ТЗ (то есть @T3.b.fl) будет тегирован неявно, гак как среда тегирования пустого параметра X. а именно — явное тегирование, нс влияет на тегирование компонентов фактического параметра Т1.
Рассмотрим модуль М3.
М3 DEFINITIONS AUTOMATIC TAGS : : = BEGIN
IMPORTS TI FROM Ml;
T5 : : =T4{T1|
T4(Y} : : = SEQUENCE {
a INTEGER.
b Y
)
END
Применение ГОСТ P ИСО/МЭК 8824-1. пункт 30.6. означает, что тег для компонента b в Т5 (то есть @Т5.Ь) будет тегирован явно, гак как пустой параметр (Y) всегда тегирован явно, следовательно. @Т5 эквивалентно
Т5 : : = SEQUENCE 1
а [01 IMPLICIT INTEGER,
b[l| EXPLICIT SET {
fl [01 INTEGER.
f2 |l| BOOLEAN
тогда как @T3 эквивалентно
ТЗ : : = SEQUENCE 1
a INTEGER.
b SET {
fl [0| IMPLICIT INTEGER, f2 [1| IMPLICIT BOOLEAN
10 Параметры абстрактного синтаксиса
10.1 Приложение В ГОСТ Р ИСО/МЭК 8824-2 устанавливает класс информационного объекта ABSTRACT-SYNTAX и рекомендует использовать его для определения абстрактных синтаксисов, применяя в качестве примера абстрактный синтаксис, определенный как множество значений единственного типа АСН.1, который нс был параметризован на внешнем уровне.
10.2 Когда тип АСН.1, используемый для определения абстрактного синтаксиса, является параметризованным, некоторые параметры могут быть подставлены как фактические параметры, а другие — оставлены как параметры абстрактного синтаксиса.
Пример
Если параметризованный тип был определен вызываемым YYY-PDU с двумя пустыми ссылками (например, первая — набор объектов некоторого заданного класса объектов, а вторая — целочисленное граничное значение), то:
yyy-Abstract-Syntax (INTEGERibound) ABSTRACT-SYNTAX : : =
{YYY-PDU {{ValidObjccts}. bound) IDENTIFIED BY {yy>- 5)) определяет параметризованный абстрактный синтаксис, в котором множество объектов было разрешено. а «граничное значение» оставлено в качестве параметра абстрактного синтаксиса.
Параметр абстрактного синтаксиса должен использоваться:
а) прямо или косвенно в контексте ограничения:
б) прямо или косвенно как фактические параметры, которые, в конечном счете, используются в контексте ограничения.
Примечание — См. пример в А.2 и ИСО/МЭК 8824-1. пункт D.5.
10.3 Ограничение, множество значений которого зависит от одного или более параметров абстрактного синтаксиса, является переменным. Такие ограничения определяются после определения абстрактного синтаксиса (возможно профилем международного функционального стандарта или в заявке о соответствии реализации протоколу).
П р и м е ч а н и е — Если где-нибудь в цепочке определений, включаемой в спецификацию значений ограничения, появляется параметр абстрактного синтаксиса, то ограничение является переменным. Оно является переменным ограничением, даже если множество значений результирующего ограничения на зависит от фактического значения параметра абстрактного синтаксиса.
Пример
Значение (((1 ..3) EXCEPT a) UNION (1..3)) всегда 1..3 независимо ог того, каково значение «а». тем нс менее это все является переменным ограничением, если «а» является параметром абстрактного синтаксиса.
10.4 Формально переменное ограничение нс влияет на множество значений в абстрактном синтаксисе.
Примечание — Настоятельно рекомендуется, чтобы ограничения, которые, как ожидается, останутся в абстрактном синтаксисе переменными, имели спецификацию исключений, использующую нотацию ГОСТ’ ИСО/МЭК 8824-1. пункт 45.4.
ПРИЛОЖЕНИЕ А (справочное)
Примеры
А. I Примеры использования определения параметризованного типа
Предположим, что разработчику протокола нужно часто передавать аутентификатор с одним или более полями протокола. Он будет передаваться как BIT STRING рядом с полем. Без параметризации аутентификатор должен бы быть определен как BIT STRING, а затем "authenticator" с текстом, идентифицирующим, к чему он прилагался, должен добавляться при каждом появлении. Альтернативно разработчик может предпочесть преобразование каждого поля, имеющего аутентификатор, в последовательность SEQUENCE этого поля и "authenticator'”a. Метол параметризации обеспечивает удобную краткую запись для решения этой задачи.
Сначала определяют параметризованный тип SIGNED!):
SIGNED (ToBcSigncd) : : = SEQUENCE
I
authcnticatcd-data ToBcSigncd. authenticator BIT STRING
I
тогда в теле протокола нотация (например)
SIGNED (Onlcrlnformation)
есть нотация типа, установленная хтя
SEQUENCE
{
authenticated-data Orderlnformation. authenticator BIT STRING
I
Далее предположим, что для некоторых полей отравитель должен иметь возможность добавить (или не добавить) аутентификатор. Этого можно достичь, сделав BIT STRING факультативной, но более изящное решение (меньшее количество битов в строке) состоит в том, чтобы определить другой параметризованный гип:
OPTIONALLY-SIGNED {ToBeSigned} : : = CHOICE
{
usigned-data |0| ToBeSigned.
signed-data |1] SIGNED {ToBeSigned}
I
Примечание — Тегирование в ClIOICE не является необходимым, если разработчик гарантирует, что пи одно и i использований параметризованного типа не порождает фактический параметр, который является BIT STRING (тип SIGNED), но полезен для предотвращения ошибок в других частях спецификации.
А.2 Пример использования параметризованных определений вместе с классом информационных объектов
Используют классы информационных объектов для сбора всех параметров абстрактного синтаксиса. Таким образом, число параметров абстрактного синтаксиса может бы ть сокращено до одного, который является экземпляром совокупности классов. Продукция "lnformationFromObjectM может быть использована для извлечения информации от параметра объекта.
Пример
- - Экземпляр этого класса содержит все параметры для
- - абстрактного синтаксиса Message-PDU.
MESSAGE-PARAMETERS : : = CLASS {
&maximum-priority-level
INTEGER. INTEGER. INTEGER
& max i mu m - message - bu ffe r-size &maximum-reference-buffer-size
WITH SYNTAX (
&maximum-priority-level &maximum-message-butTer-size &maximum-reference-bufler-size
THE MAXIMUM PRIORITY LEVEL IS THE MAXIMUM MESSAGE BUFFER SIZE IS
THE MAXIMUM REFERENCE BUFFER SIZE IS
- - Продукция “ValueFromObject” используется для извлечения
- - значения от абстрактного параметра синтаксиса, “param".
- - Значения могут быть использованы только в ограничениях.
- - Кроме того, параметр перелается посредством другого
- - параметризованного типа.
Message-PDU {.MESSAGE-PARA.METERS:param}: : = SEQUENCE
priority-level message reference | INTEGER (0..param.Amaximum-priority-level). BMPString (SIZE (0..param.&maximum-message-buffer-size)). Reference {param} |
Reference {MESSAGE-PARAMETERS:param}: : =
SEQUENCE OF
lASString (SIZE (0..param.Amaxirnum-reference-buffer-size))
- - Определение информационного объекта параметризованным
- - абстрактным синтаксисом.
- - Параметр абстрактного синтаксиса используется только в ограничениях. message-Abstracc-Simax {MESSAGE-PARAM ETERS:param)
ABSTRACT-SINTAX : : =
{
Message-PDU (param)
IDENTIFIED BY {joint-iso-coitt asnl(l) examples (12.3) 0}
}
Класс MESSAGE-PARAMETERS и объект параметризованного абстрактного синтаксиса messagc-Ab-stracl-Syntax используются следующим образом:
- - Этот экземпляр MESSAGE-PARAMETERS определяет значения
- - параметров абстрактного синтаксиса.
my-message-parameters MESSAGE-PARAMETERS : : = {
THE MAXIMUM PRIORITY LEVEL IS 10
THE MAXIMUM MESSAGE BUFFER SIZE IS 2000
THE MAXIMUM REFERENCE BUFFER SIZE IS 100
I
- - Абстрактный синтаксис теперь может быть определен «семи
- - специфицированными переменными ограничениями. my-messagc-Abstracl-Sintax ABSTRACT-SINTAX : : =
message-Abstract-Sintax {my-message-parameters}
А.З Пример определения параметризованного типа, который является конечным
При спецификации параметризованного типа, который представляет родовой список, определяют тип так, чтобы результирующая нотация АСИ. 1 была конченной. Например, можно определить:
List 1 {ElememTypeParam} : : = SEQUENCE {
elem ElememTypeParam.
next Listl {ElememTypeParam} OPTIONAL
I
который является конечным, а -затем его использовать.
IntegcrList 1 : : = Listl {INTEGER}.
где результирующая нотация ACII.1 является такой, какой Вы ее обычно определили бы:
IntegerListl : : = SEQUENCE {
elem INTEGER.
next IntegerListl OPTIONAL
I
Напротив, при
List2 {ElememTypeParam}:: = SEQUENCE {
elem ElememTypeParam,
next List2 {|0|} ElememTypeParam} OPTIONAL
}
lntegerList2 : : = List2 {INTEGER}.
где результирующая нотация АСИ. I является бесконечной:
lntcgerList2 : : = SEQUENCE {
elem INTEGER
next SEQUENCE {
elem |0| INTEGER, next SEQUENCE { elem [0| [0| INTEGER, next SEQUENCE { elem [0] [0] [0] INTEGER, next SEQUENCE {
. .. - - и так далее
} OPTIONAL
} OPTIONAL
} OPTIONAL
} OPTIONAL
A.4 Пример определения параметризованного значения
Если значение параметризованной строки определяется следующим образом:
generioBirthdayGreeting {IA5String: name}
IA5String : : = ["С днем рождения”, имя. ”| |”}.
то следующие две строки являются такими же:
gfeetingl IA5String : : = generioBirthdayGreeting {"Джон”}
greeting2 IASSlring : : = “С днем рождения. Джон 1|”
А.5 Пример определения множества параметризованных значений
Гели два множества параметризованных значений определены следующим образом:
QuestListl {IA5String:extraQuest) lASString :: = {“ Джек'* | "Джон" | extraQuest}
QuestList2 {lASString: ExlraQuests} lASString : : = {"Джек" | “Джон" | ExlraQuests}
то следующие множества значений обозначают одно и то же множество значений:
SetOfQuestsI lASString : : = {QuestListl {"Джилл"})
SetOtQuests2 lASString : : = {QuestList2 | {{“Джилл"}}}
SetOfQuestsS lASString : : — {"Джек” | “Джон" | “Джилл")
и следующие множества значений обозначают одно н то же множество значений:
SetOfQuests4 lASString : : = {QuestList2 {("Джилл" | "Мэри"}})
SetOIQuestsS lASString : : = {“Джек" | “Джон” | “Джилл" | “Мэри”}
Следует обратить внимание, что множество значений всегда задается в фигурных скобках, даже когда это — ссылка на параметризованное множество значений. Опуская фигурные скобки у ссылки на “identifier”, который был создан в присвоении множества значений, или у ссылки на "ParameterizedValueSetType". получим нотацию для “Туре", а нс для множества значений.
А.6 Пример определения параметризованного класса
Следующий параметризованный класс может использоваться для определения классовошибок, которые содержат колы ошибок различных типов. Следует обрати гь внимание, что параметр “ErrorCodeTypc” используется только как “DummyGovetnor" для параметра "ValidErrorCodes".
GENERIC-ERROR {ErrorCodeTypc, ErrorCodeTypc:
ValidErrorCodes} : : = CLASS {
&errorCodc ValidErrorCodes
}
WITH SYNTAX {
CODE &errorCode
}
Определение параметризованного класса может использоваться для определения различных классов, которые совместно используют некоторые характеристики, подобные одному и тому же синтаксису:
ERROR-1 : : = GENERIC-ERROR {INTEGER. {112|3}}
ERROR-2 : : = GENERIC-ERROR (ErrorCodcString, {StringErrorCodcs})
ERROR-3 :: = GENERIC-ERROR (EnumeratedErrorCode. {fatal|error}}
ErrorCodcString : : = lASString (SIZE (4))
StringErrorCodes ErrorCodcString : : = {“ЕООГ|"ЕОО2ТЕООЗ"}
EnumeratedErrorCode : : = ENUMERATED {fatal, error, warning)
Определяемые классы тогда могут использоваться следующим образом:
Му-Errors ERROR-2 : : = {{CODE “ЕООГ) | {CODE "Е002"})
fatalError, ERROR-3 :: = {CODE fatal}
A.7 Пример определения множества параметризованных объектов
Определение множества параметризованных объектов AllTypes формирует множество объектов, которые содержит базовое множество объектов Base Types и множество дополнительных объектов, которые поставляются как параметр AdditionalTypes.
AIITypcs {TYPE-IDENTIFIER: AdditionalTypes) TYPE-IDENTIFIER : : = {
BaseTypes | AdditionalTypes}
Base-TypesTYPE-IDENTIFIER : : = {
{BasicType-1 IDENTIFIER BY basic-type-obj-id-value-l} |
{BasicTypc-2 IDENTIFIER BY basic-typc-obj-id-valiie-2} | {BasicType-3 IDENTIFIER BY basic-type-obj-id-value-3}
}
Определение множества параметризованных объектов. AIITypcs. может использоваться следующим образом:
{My-All-Tvpes TYPE-IDENTIFIER : : = {AllTypes {
{Му-Туре-1 IDENTIFIER BY my-obj-id-vakic-1} |
(Му-Туре-2 IDENTIFIER BY my-obj-id-value-2} | (My-Type-3 IDENTIFIER BY my-obj-id-value-3}
В
A.8 Пример определения множества параметризованных объектов
Тип. определенный в А.4 ГОСТ Р ИСО/МЭК 8824-3. может использоваться в определении параметризованного абстрактного синтаксиса следующим образом:
- - Possible BodyTypes является параметром абстрактного синтаксиса, message-abstract-syntax {MHS-BODY-CLASS: PossiblcBodyTypes}
ABSTRACT-SYNTAX : : = {
INSTANCE OF MHS-BODY-CLASS ({PossibleBodyTypes})
IDENTIFIED {joint-iso-itu asnl (1) examples 1) 123J
}
- - Это множество объектов перечисляет все возможные
- - пары значений и идентификаторов-типа для типа “жземпляр-из**.
- - Множество объектов используется как фактический параметр
- - определения парамс гримированного абстрактного синтаксиса.
My-Body-Types MHS-BODY-CLASS : : = {
{Му-First-Type IDENTIFIED BY my-tirst-obj-id) |
{My-Second-Type IDENTIFIED BY my-second-obj-id}
}
my-message-abstract-syntax ABSTRACT-SYNTAX : : =
tnessage-abstract-syntax {(My-Body-Types}}
ПРИЛОЖЕНИЕ В
(справочное)
Сводка нотаций
Следующие элементы определены в ГОСТ Р ИСО/МЭК 8824-1 и используются в настоящем стандарте: type reference valucrcfcrcncc
“Г
Следующие элементы определены n ГОСТ P ИСО/МЭК 8824-2 и используются в настоящем стандарте: objec tc lassre fe re псе objectreference objectsetreference
Следующие продукции определены в ГОСТ Р ИСО/МЭК 8824-1 и используются в настоящем стандарте: DefinedType DefinedValue
Reference
Type
Value
ValucSct
Следующие продукции определены в ГОСТ Р ИСО/МЭК 8824-2 и используются в настоящем стандарте: DefinedObjectClass DefinedObject
DcfincdObjectSct
ObjectClass
Object
ObjcctSct
Следующие продукции определены в настоящем стандарте: ParameirizedAssignment : : =
ParametrizedTypeAssignment
ParametrizedValueAssignment
ParametrizedValueSetTypeAssignment | ParametrizedObjectClassAssignment
ParametrizedObjectAssignment
ParametrizedObjectSetAssignment
ParametrizedTypeAssignment: : =
typereference ParanieterList : =“ Type
ParametrizedValueAssignment: : = valuereference ParanieterList Type : ='" Value
ParametrizedValueSeiTypeAssignmeni :: = typereference ParanieterList Type : =" ValueSet
ParametrizedObjectClassAssignment:: = objectclassrcfcrcncc ParanieterList : =” ObjcctClass
ParametrizedObjectAssignment : : =
objectreference ParanieterList DefinedObjectClass : =’* Object
ParanietrizedObjectSeiAssignment :: = objectsetrefcrcnce ParameterLisi DefinedObjectClass : =” ObjcctSct
ParanieterList : : = Parameter
Parameter: : = ParamGovcnor DummyReference | DummyReference
ParamGovcnor: : = Govenor | DummyGovcnor
Gove nor :: = Type | DefinedObjectClass
DummvGovenor : : = DummyReference
DummyReference : : = Reference
Parametrized Reference : : =
Reference | Reference “Г
SimpleDefinedType : : = Externaltypereference | typereference
SimpIcDefinedValuc : : = Extemalvaluercfcrcncc | valuereferuncc
ParamclrizedTypc : : = SimpleDefinedType ActualParameterList
ParamelrizedValue : : = SimpIcDefinedValuc ActualParameterList
ParamelrizedValue : : = SimpIcDefinedValuc ActualParameterList
ParametrizedValueSeiType : : = SimpleDefinedType ActualParameterList
PaniinetrizedObjectClass:: = DefinedObjectClass ActualParameterList
ParametrizedObjeciSel : : = DefinedObjectSet ActualParameterList
ParametrizedObject : : = DefinedObject ActualParameterList
ActualParameterList :: = ActualParameter
ActualParametcr: : = Type | Value | ValueSet | DefinedObjectClass | Object | ObjectSet
УДК 681.324:006.354
ОКС 35.100.70
1185
ОКСТУ 4002
Ключевые слова: информационная технология, взаимосвязь открытых систем, спецификация абстрактной синтактической нотации, нотация АСН.1. протоколы прикладного уровня, параметризация. параметризованный тип. параметризованное значение, параметризованный объект, тег. структурированные типы
Редактор ВЛ. Огурцов
Технический редактор //.С. Гришанова
Корректор В.С. Черная Компьютерная веретка ЕЛ. Мартемьяновой
И п. лиц. № 02354 от 14.07.2000. Слано в набор 03.03.2003. Подписано в печать 19.03.2003. Уел. печ. л. 2,32. Уч.-изд. л. 1.85. Тираж 2)5 жз. С 9986. Зак. 244.
ИНК Издательство стандартов. 107076 Москва. Колодезный пер.. 14. //www.standards.ru e-mail: info^standards.ru Набрано в Издательстве на ПЭВМ
Филиал ИНК Издательство стандартов — тип. «Московский печатник», 105062 Москва, Лялин пер., 6.
11.1р № 080102