13.2.1 Общие правила приведены ниже.
13.2.1.1 Альтернативы "Encodinglnstruction" определяют команду кодирования XER, которая назначается, и цель (цели) для назначения в пределах модуля АСН.1. Все цели - появления продукционных правил "Туре" в пределах модуля АСН.1.
Примечание - Могут быть определены множественные цели в тех же самых или в различных назначениях типа АСН.1. Цель, которая является полным модулем, или всеми появлениями в пределах модуля встроенного типа или конструктора, также может быть определена. Таким образом, (при использовании раздела управления XER кодирования) единственная "Encodinglnstruction" может использоваться для назначения конкретной команды XER кодирования всем типам в модуле АСН.1, которым необходимо назначить эту команду кодирования.
13.2.1.2 При идентификации цели (целей) для назначения команды XER кодирования используется продукционное правило "TargetList". Это определено в следующих подразделах.
Примечание 1 - На продукционное правило "TargetList" ссылаются в разделе 19.
Примечание 2 - Продукционное правило "TargetList" имеет "пустую" альтернативу. Это - единственная разрешенная альтернатива, если "Encodinglnstruction" используется в префиксе типа (см. 12.12). В 13.2 рассматривается только использование "TargetList" в управляющем разделе кодирования.
13.2.1.3 Продукционное правило "TargetList":
TargetList: := | |
Targets"," + | |
| empty | |
Targets::= | |
Typeldentification | |
| BuiltlnTypeldentification | |
| IdentifierslnContext | |
| ImportedTypesldentification |
13.2.1.4 Если "TargetList" - перечень одного или более продукционных правил "Targets", то каждое из "Targets" идентифицирует одну или более целей (типы - "Туре", которым назначена команда кодирования), но оно может также обеспечить уточняющую информацию для команды кодирования, ограничивая ее применение кодированием с использованием конкретного идентификатора в определении целевого типа, или с использованием тегов пустых элементов для управляющих символов, определенных в ИСО/МЭК 8824-1, 11.15.5.
Примечание - Уточняющая информация присутствует только в том случае, если цель является определением одного из следующих типов: булевский, строка битов, перечислимый, целочисленный или ограниченная строка символов (см. 13.2.2.9).
13.2.1.5 "TargetList" "пустых" разрешается только в префиксе типа (когда это - единственная разрешенная альтернатива) и в команде кодирования GLOBAL-DEFAULTS. В префиксе типа он идентифицирует тип, связанный с префиксом. В команде кодирования GLOBAL-DEFAULTS он идентифицирует весь "Туре" в модуле.
13.2.1.6 Команда кодирования XER (возможно, со связанной уточняющей информацией) назначена всем типам, идентифицированным "TargetList", как определено в 13.2.1.10-13.2.1.16.
Примечание - Это было бы необычным, но правомочным для данного "Туре", который будет идентифицирован не раз в целевом перечне. В таких случаях применяется раздел 14.
13.2.1.7 Идентификация цели (целей) (и, возможно, уточняющей информации) продукционным правилом "Targets" использует одну из пяти базовых форм:
а) использование ссылки на тип ("typereference", см. 13.2.2), возможно, сопровождаемой перечнем разделенных точкой идентификаторов, с распознаванием также:
1) "Туре" в назначении типа (идентификаторы отсутствуют);
2) "Туре" в компоненте определения типов (который может включать компоненты верхнего уровня, введенные конструкцией COMPONENTS OF - см. 13.2.1.12);
3) один из "Туре" - (1) или (2), плюс конечный идентификатор, перед которым стоит двоеточие (не точка) для идентификатора, используемого в определении целевого типа, обеспечивает уточняющую информацию;
б) использование ALL как последнего идентификатора в форме (а), идентифицируя все, что типы ("Types") дословно представляют в определении типов (что идентифицировано предшествующей ссылкой на тип и перечнем идентификаторов, разделенных точками), или использование уточняющей информации (которой предшествует двоеточие, не точка), распознающей все идентификаторы, используемые для значений определений типов: булевских, строк битов, перечислимых, или целочисленных (которые идентифицированы предыдущей ссылкой на тип и списком идентификаторов, разделенных точками), или идентифицирующей все использования тегов пустого элемента XML, обычно представляющих некоторые управляющие символы (см. ИСО/МЭК 8824-1, 11.15.5);
в) использование "BuiltlnTypeName" (см. 13.2.3), идентифицирующего все типы ("Type"s) в модуле, которые определены при помощи соответствующего встроенного названия типа или конструктора, возможно только в случае типов BOOLEAN, BIT STRING, ENUMERATED, INTEGER и ограниченной строки, в сопровождении уточняющей информацией;
г) использование списка "идентификаторов", сопровождаемого IN (или ALL сопровождаемого IN, или COMPONENTS, сопровождаемых IN) и формой (а), (см. также 13.2.4), идентифицирующего:
1) "Туре" идентифицированных компонентов формы (а);
2) все "Types", которые текстуально встречаются в пределах "Туре", идентифицированного формой (а) (использование ALL);
3) все ("Type"s), которые являются компонентами верхнего уровня "Туре", идентифицированного формой (а) (использование COMPONENTS);
д) использование "ImportedTypesldentification" (см. 13.2.5) идентифицирует все ссылки на типы ("typereference"s) в списке IMPORTS, которые импортированы из специфицированного модуля.
Примечание 1 - Термин "определение типов", используемый в формах (а) и (б) подчеркивает, что только дословно представленные идентификаторы могут использоваться. Идентификаторы не могут использоваться, если "Туре" - ссылка на тип.