17.6.1 Продукцией "DifferentialEncodeDecodeObject" является:
DifferentialEncodeDecodeObject ::=
"{"
ENCODE-DECODE
SpecForEncoding
DECODE AS IF
SpecForDecoders
"}"
SpecForEncoding ::= EncodingObject
SpecForDecoders ::= EncodingObject
17.6.2 "DifferentialEncodingObject" определяет правила кодирования абстрактных значений, связанных с классом руководителя этой нотации, и (отдельно) правила, используемые декодерами для восстановления абстрактных значений из кодовых комбинаций, которые, как предполагается, созданы объектами кодирования с классом руководителя.
17.6.3 "SpecForEncoding" применяется кодерами. Декодеры будут декодировать так, как будто бы кодер применил "SpecForDecoders".
Примечания
1 "SpecForDecoders" является, тем не менее, спецификацией кодирования. Он предлагает декодерам предполагать, что кодеры использовали эту спецификацию.
2 Поведение декодеров, которые декодируют в предположении, что кодер использовал "SpecForDecoders", но обнаруживают ошибки кодирования, не стандартизовано.
17.6.4 Объекты кодирования "SpecForEncoding" и "SpecForDecoders" не должны определяться с помощью ENCODE-DECODE, и любые объекты кодирования, использованные в этом определении, не должны определяться с помощью ENCODE-DECODE.
Примечание - Это ограничение сделано потому, что в противном случае спецификация смысла конструкции кодирования/декодирования стала бы более сложной, не давая дополнительных функциональных возможностей.
17.6.5 Если "SpecForEncoding" и "SpecForDecoders" показывают одинаковый идентификационный описатель с одинаковым набором значений описателя, то определяемый объект кодирования (см. 17.1.5) показывает этот идентификационный описатель (с тем же набором значений описателя); иначе он не показывает описатель.