Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-3-2016 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 3. Спецификация нотации контроля кодирования (ECN)

     19.3 Отображение с помощью полей сопоставления

19.3.1 Это отображение предусмотрено первоначально для создания возможности кодирования типа АСН.1, определяемого как кодирование структуры кодирования, которая имеет поля, соответствующие компонентам этого типа, но также имеет поля для определителей.

19.3.2 Продукцией "MappingByMatchingFields" является:

MappingByMatchingFields ::=

FIELDS

19.3.3 Если классы кодирования источника или цели являются определяемыми пользователем структурами кодирования (см. 9.2.2.3) либо генерируемыми структурами кодирования, то эти ссылки различаются до того, как источник и цель стартуют с конструктором кодирования. Если этот конструктор кодирования в цели будет в категории "повторение", то разыменование компонента этого конструктора кодирования "повторение" выполняется до того, как этот компонент стартует с конструктором кодирования. Ссылки внутри результирующих структур не различаются.

19.3.4 Влияние возможного наличия классов в категории "тег" при начальном разыменовании имен "DefinedOrBuiltinEncodingClass" в источнике и цели было полностью описано в 19.1.3-19.1.5. Спецификация ECN будет ошибочной, если дальнейшие начальные классы в категории "тег" вводятся путем применения 19.3.3.

19.3.5 После применения 19.3.3 классы кодирования источника и цели стартуют с одним и тем же конструктором кодирования. Это должен быть либо конструктор кодирования в категории "конкатенация", либо конструктор кодирования в категории "повторение". Если этот конструктор кодирования будет в категории "повторение", то его компоненты в цели должны быть классом в категории "конкатенация". В настоящем пункте результирующие структуры кодирования называются структурами кодирования источника и цели соответственно.

19.3.6 Имена полей компонентов (верхнего уровня) конструктора кодирования, образованного путем применения 19.3.3 к источнику, называются полями источника.

Примечание - Поля источника ограничены до полей верхнего уровня конкатенации или компонентов повторения. Это ограничение накладывается на каждую реализацию ECN и может быть ослаблено в будущем.

19.3.7 Имена полей компонентов конструктора кодирования в категории "конкатенация", образованного путем применения 19.3.3 к цели, называются потенциальными полями цели.

Примечание - Потенциальные поля цели могут быть либо компонентами конкатенации верхнего уровня, либо компонентами "конкатенации", которые являются компонентами "повторения".

19.3.8 Для каждого поля источника будет потенциальное поле цели с тем же именем поля (сопоставляющее поле цели).

Примечание - Компонент класса "повторение" может быть отображен только в случае, если в него включен идентификатор (сопоставляющий индикатор в цели). Использование отображения с помощью полей сопоставления было бы неправомерным при отсутствии опознавателя.

19.3.9 Сопоставляющее поле цели будет факультативным элементом в конкатенации, если, и только если, его поле источника является факультативным элементом в конкатенации, а наличие или отсутствие поля источника в абстрактном значении, связанном со структурой кодирования источника, определяет наличие или отсутствие поля цели в структуре кодирования цели.

19.3.10 Если поле источника имеет начальный класс в категории "тег", то сопоставляющее поле цели должно иметь начальный класс в категории "тег", а номер тега класса в поле источника отображается в номер тега класса в категории "тег" в сопоставляющем поле цели. Если класс в категории "тег" в сопоставляющем поле цели имеет связанный номер тега, то спецификация ECN будет ошибочной, когда он отличается от номера тега, отображаемого из поля источника.

19.3.11 Если поле источника не имеет начального класса в категории "тег", то отображающее поле цели не обязано иметь начальный класс в категории "тег", но если оно его имеет, то должен быть номер тега, связанный с этим тегом в определении сопоставляющего поля цели.

19.3.12 Не считая наличия или отсутствия класса в категории "тег" и факультативных категорий (как указано в 19.3.9-19.3.11), сопоставляющее поле цели и поле источника будут иметь один и тот же класс кодирования (см. 17.1.7) или будут определены с помощью одной и той же последовательности текстуальных элементов, игнорируя комментарий и пробел, а также спецификации границ.

19.3.13 Все абстрактные значения отображаются из каждого поля источника в сопоставляющие поля цели. Дополнительные поля в структуре кодирования цели не получают абстрактных значений. В правильных спецификациях ECN значения таких полей должны определяться с помощью ссылки в виде определителя.

19.3.14 Если конструкторы кодирования источника и цели являются классами в категории "повторение", то число повторений в абстрактном значении, связанном со структурой кодирования источника, отображается в число повторений в структуре кодирования цели.

19.3.15 Когда поле источника имеет ограничение на связанное содержимое, оно отображается в сопоставляющее поле цели в виде ограничения как связанное содержимое.

19.3.16 Если из-за наличия ограничений на границы или размер имеются значения в поле источника, которые не присутствуют в сопоставляющем поле цели, то следует применять 17.4.7.