Государственный стандарт Российской Федерации ГОСТ Р ИСО/МЭК 8824-3-2002 "Информационная технология. Абстрактная синтаксическая нотация версии один (АСН. 1). Часть 3. Спецификация ограничения" (принят и введен в действие постановлением Госстандарта РФ от стр. 2

4 Сокращения

В настоящем стандарте применено следующее сокращение:
АСН. 1 - абстрактная синтаксическая нотация версии 1.

5 Соглашения

В настоящем стандарте используют соглашения, приведенные в ГОСТ Р ИСО/МЭК 8824-1, раздел 5.

6 Нотация

В данном разделе приводится сводка нотации, определенной в настоящем стандарте.

6.1 Ограничение

В настоящем стандарте определена следующая нотация, которая может быть использована как альтернатива для спецификации ограничения "ConstraintSpec" (см. ГОСТ Р ИСО/МЭК 8824-1, пункт 44.5): GeneralConstraint (см. 8.1).

7 Элементы АСН. 1

Дополнительно к элементам АСН. 1, определенным в ГОСТ Р ИСО/МЭК 8824-1, раздел 11, в настоящем стандарте используют элементы АСН. 1, определенные в последующих подразделах. Общие правила, применимые к этим элементам, определены в ГОСТ Р ИСО/МЭК 8824-1, пункт 11.1. Эти новые элементы АСН. 1 используют набор символов, определенный в ГОСТ Р ИСО/МЭК 8824-1, раздел 10.

7.1 Дополнительные ключевые слова

Имена CONSTRAINED и BY указаны в ГОСТ Р ИСО/МЭК 8824-1, пункт 9.12 как зарезервированные слова.

8 Спецификация общих ограничений

8.1 Нотация для общего ограничения "GeneralConstraint" следующая:
GeneralConstraint :: =
UserDefinedConstraint |
TableConstraint
8.2 Различные возможности спецификации ограничения определены следующим образом:
а) " UserDefinedConstraint" - в разделе 9;
б) "TableConstraint" - в разделе 10.

9 Ограничения, определенные пользователем

Примечания
1 Эта форма спецификации ограничения может рассматриваться как специальная форма комментария АСН. 1, так как она не является полностью машинообрабатываемой. Однако автоматические средства могли бы использовать наличие конкретного определенного пользователем ограничения для вызова проверки ограничения приложением пользователя.
2 Разработчики протоколов должны понимать, что, так как определение ограничения подобным образом не является полностью машинообрабатываемым, спецификация, которая использует эту возможность, может быть менее удобной для автоматической обработки.
9.1 Ограничение, определенное пользователем "UserDefmedConstraint", специфицируется синтаксисом:
UserDefinedConstraint : : =
CONSTRAINED BY " { " UserDefinedConstraintParameter ","*"} "
9.2 Рекомендуется, чтобы фактическое ограничение описывалось где-либо в комментарии в фигурных скобках (" { " и " } "). Этот комментарий должен ясно устанавливать, какое ограничение накладывает "UserDefinedConstraint".
Примечание - Если в фигурных скобках имеется несколько "UserDefinedConstraintParameter" (см. 9.3), то комментарии могут стоять перед, после или между ними, как удобнее разработчику.
9.3 Фактическое ограничение, которое должно применяться, может зависеть от некоторых параметров. Для каждого такого параметра в ограничение "UserDefinedConstraint" должна быть включена продукция "UserDefinedConstraintParameter":
UserDefinedConstraintParameter :: =
Governor ":" ActualParameter | ActualParameter
Нотации для "Governor" и "ActualParameter" определены в ИСО/МЭК 8824-4, пункты 8.3 и 9.5 соответственно. Когда фактический параметр "ActualParameter" есть тип "Туре" или класс объекта "ObjectClass", то не должно быть продукции "Governor"; когда фактический параметр "ActualParameter" есть значение "Value" или множество значений "ValueSet", то продукция "Governor" должна присутствовать и быть типом "Туре"; когда фактический параметр "ActualParameter" есть объект "Object" или множество объектов "ObjectSet", то продукция "Governor" должна присутствовать и быть "DefinedObjectClass".

9.4 Пример

Если разработчик приложения хочет специфицировать, что некоторые компоненты должны быть битовыми строками, представляющими зашифрованные значения некоторого типа АСН. 1 (различные для каждого компонента), то (используя параметризацию ИСО/МЭК 8824-4) параметризованный тип ENCRYPTED может быть определен следующим образом:
ENCRYPTED {ToBeEnciphered} : : = BIT STRING
(CONSTRAINED BY
{- - должен быть результат шифрования некоторого BER-кодированного значения - -
ToBeEnciphered}
!Error : : = securityViolation)
Error : : = ENUMERATED {securityViolation}
и использование параметризованного подтипа ENCRYPTED строки BIT STRING (чем, собственно, и является тип ENCRYPTED) выглядит как:
ENCRYPTED {SecurityParameters}
или, эквивалентно, по желанию разработчика:
BIT STRING (ENCRYPTED {SecurityParameters})
Появление ошибки sequirityViolation обрабатывается в соответствии с местной политикой защиты.

10 Табличные ограничения, включая ограничения связи компонента

Примечания
1 Классы информационных объектов, информационные объекты, множества информационных объектов и тип "поле класса объекта" определены в ГОСТ Р ИСО/МЭК 8824-2. Понимание этих концепций подразумевается в данном разделе.