Ограничить индексы для ПОСЛЕДОВАТЕЛЬНОСТИ типов в ASN.1 - PullRequest
1 голос
/ 19 сентября 2019

Возможно ли в ASN.1 добавить ограничение для доступных значений типа SEQUENCE OF?Что-то вроде этого

MyArray ::= SEQUENCE (1..10) OF INTEGER -- MyArray has 10 elments indexed from 1-10
Array2  ::= SEQUENCE (-5..5) OF INTEGER -- Array2 has 11 elments indexed from -5-5

Я пытался достать это из книги ASN.1 от Дюбуисона, но я не совсем уверен, что правильно понимаю описание грамматики.

МойВ настоящее время понимается, что можно создать ограничения на размеры ПОСЛЕДОВАТЕЛЬНОСТИ, но не предполагается никакого влияния на поведение при индексировании.Я предполагаю, что это оставлено на усмотрение языка реализации?

Это правильно?

1 Ответ

2 голосов
/ 19 сентября 2019

В ASN.1 отсутствует понятие «индекс» для ПОСЛЕДОВАТЕЛЬНОСТИ.Ваши назначения выше недействительны.

Вы можете указать ограничение на количество элементов ПОСЛЕДОВАТЕЛЬНОСТИ.Например, если вы напишите

A1 :: = SEQUENCE (SIZE (10)) OF INTEGER

, вы ограничите количество элементов до 10. Любое значение этого типа SEQUENCE-OF будетдолжно иметь ровно 10 элементов.

Если вы напишите

A2 :: = SEQUENCE (РАЗМЕР (1..10)) INTEGER

любое значение этой SEQUENCE-Тип OF должен содержать не менее 1 элемента и не более 10 элементов.В этом случае количество элементов ограничено диапазоном размеров, а не фиксированным размером.

Вы также можете написать более сложные ограничения, подобные следующим:

A3 :: = SEQUENCE(SIZE (1 | 4 | 6..MAX)) OF INTEGER

В этом случае любое значение этого типа SEQUENCE-OF должно иметь 1, 4 или 6 или более элементов.Например, значения {2} и {-5, 5, 1, -3} являются допустимыми значениями, а {1, 2} - нет.

Нельзя использовать отрицательное целое число в ограничении размера, посколькуцелое число, которое вы используете, указывает количество элементов, а не значение индекса.

...