ГОСТ Р ИСО/МЭК 8825-3—2016
{в ELM) к типам АСН.1 для определения их кодирования. Руководителем, применяемым при фор
мировании таких наборов объектов кодирования, является зарезервированное слово «ENCODINGS
(см. пример в D.1.14).
9.5.2 Фундаментальное правило конструирования набора объектов кодирования заключается в
том, что любой набор может содержать только один объект кодирования заданного класса кодирования
(см. также 9.6.2). Поэтому не будет двусмысленности, когда набор объектов кодирования применяется
к типу для определения его кодирования.
9.5.3 Наборы предопределенных объектов кодирования имеются для всех вариантов BER и PER,
причем они могут использоваться для полных наборов, определенных пользователем объектов коди
рования.
9.6 Определение новых классов кодирования
9.6.1 Те. кто осведомлен об АСН.1, знают, что присвоение типа может использоваться для созда
ния новых имен (новых типов), например, из типов INTEGER и BOOLEAN. Новые имена определяют
типы, которые будут теми же INTEGER или BOOLEAN, но несут другую семантику. Это понятие рас
ширено в ECN, чтобы позволить создание (в присвоении класса — см. 16.1.1) новых имен (новых клас
сов) для конструкторов, таких как #SEQUENCE. Новые имена определяют классы, которые выполняют
такие же функции при структурировании кодовых последовательностей (например, при конкатенации),
но должны иметь другие объекты кодирования, применяемые к ним. Новое имя класса, присвоенное
некоторому старому классу, сохраняет определенные характеристики этого старого класса. Итак, при
своение, например. ««My-Sequonce ::= #SEQUENCE» создает новое имя класса «Му-Sequence. кото
рое все еще является некоторым классом кодирования, относящимся к конкатенации компонентов. Мы
говорим, что такие классы кодирования имеют одну и ту же категорию.
9.6.2 Если новый класс кодирования создан из существующего класса кодирования, то объекты
кодирования как старого, так и нового классов кодирования могут появляться в одном наборе объектов
кодирования.
9.6.3 Все предопределенные классы кодирования получаются от одного класса из небольшо
го числа простейших классов кодирования. Поэтому «SEQUENCE и #SET оба получены от класса
#CONCATENATION, классы #INTEGER и «ENUMERATED получены от класса #INT. а классы для
раз личных типов АСН.1 «цепочка знаков» все получены от класса «CHARS. Структура кодирования
(на пример. неявно генерируемая из некоторого типа АСН.1) может содержать смесь разных классов,
кото рые все получены из одного и того же простейшего класса и которые позволяют разные
кодирования, применяемые, например. к «SEQUENCE
и
«SET.
9.6.4 Часто удобно вложить классы кодирования в категории, основанные на простейшем клас
се, из которого они получены. Поэтому мы говорим, что «INTEGER. «ENUMERATED и #INT (и любой
класс, полученный из них в операторе присвоения класса, таком как «#My-int ::= #INT») находятся в
категории «целочисленная». Имеются также группы категорий, которые содержат весьма различные
классы, имеющие некоторые одинаковые характеристики. Поэтому любой класс, который может иметь
абстрактные значения, прямо связанные с ним, и который, следовательно, вырабатывает биты при ко
дировании. будет находиться, можно сказать, в группе категорий «битовое поле». Поэтому все классы,
которые находятся в категории «целочисленная», или «булева», или «цепочка знаков», относятся к
группе категорий «битовое поле». Классы, которые ответственны за кодирования с группированием или
повторением (например, классы в категории «альтернативы» или «повторение»), относятся к группе ка
тегорий «конструктор кодирования». Имеются также два класса, чьи объекты кодирования определяют
процедуры, не относящиеся прямо к конструированию кодирования («TRANSFORM и «OUTER): они
считаются находящимися в группе категорий «процедура кодирования». Структуры кодирования опре
деляются с помощью классов в группе категорий «битовое поле», которые комбинируются с классами
из группы категорий «конструктор кодирования» вместе с классами из категорий «факультативные воз
можности» (представляют процедуры кодирования для разрешенных факультативных возможностей) и
«тег» (представляют кодирование тегов). Все такие классы находятся в категории «структура кодирова
ния», а также в группе категорий «битовое поле».
9.6.5 Для простейших классов категория присваивается прямо. Для классов, созданных в опера
торе присвоения класса кодирования, категория определяется с помощью нотации справа от символа
«::=». Если эта нотация является определением структуры кодирования, то класс будет относиться как к
категории «структура кодирования», так и к группе категорий «битовое поле». Если эта нотация
12