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

2 В данном разделе описано применение табличного ограничения, использующего множество информационных объектов, которое идентифицировано в главной нотации, определяющей порождающий тип; другими словами, определено и идентифицировано разработчиком протокола. Оно не удовлетворяет требованиям для фактического множества информационных объектов, которое должно быть использовано как ограничение в конкретном абстрактном синтаксисе, так как может изменяться от синтаксиса к синтаксису. ИСО/МЭК 8824-4 обеспечивает нотацию, которая, кроме всего прочего, позволяет множеству информационных объектов, используемому в этом ограничении, быть параметром, значение которого подставляется позже различными группами пользователей.
Пример
Для иллюстрации текста настоящего раздела использован следующий пример. Тип ErrorReturn представляет категорию ошибки errorCategory и один или несколько кодов ошибок errorCodes с соответствующей информацией errorlnfo для этой категории. Это представление обеспечивается классом информационных объектов ERROR-CLASS со специфическим множеством объектов, определенных в множестве информационных объектов ErrorSet, которое используется для ограничения полей ErrorReturn.
Имеем
ERROR-CLASS : : = CLASS
{
&category PrintableString (SIZE (1)),
&code INTEGER,
&Type
}
WITH SYNTAX {&category &code &Type}
ErrorSet ERROR-CLASS : : =
{
{"A" 1 INTEGER} |
{"A" 2 REAL} |
{"B" 1 CARACTER STRING} |
{"B" 2 GeneralString}
}
ErrorReturn : : = SEQUENCE
{
errorCategory ERROR-CLASS.&category ({ErrorSet}) OPTIONAL,
errors SEQUENCE OF SEQUENCE
{
errorCode ERROR-CLASS.&code
({ErrorSet}{@errorCategory}),
errorlnfo ERROR-CLASS.&Type
({ErrorSet}{@errorCategory, @errorCode})
} OPTIONAL
}
Ассоциированная таблица множества ошибок ErrorSet может быть изображена следующим образом.
&category
&code
&Type
"А"
1
INTEGER
"А"
2
REAL
"В"
1
CHARACTER STRING
"В"
2
GeneralString
10.1 Табличное ограничение может быть применено только к типу "ObjectClassFieldType" или "InstanceOfType". Первый случай определяется в последующих частях данного раздела, второй - в приложении А.
10.2 Тип "ObjectClassFieldType" идентифицирует класс информационных объектов и одно из допустимых имен полей "FieldName" этого класса. Табличное ограничение идентифицирует множество информационных объектов, ассоциированная таблица которых определяет множество ограниченных значений, как установлено в ГОСТ Р ИСО/МЭК 8824-2, раздел 13.
10.3 Нотацией для табличного ограничения "TableConstraint" является
TableConstraint : : =
SimpleTableConstraint |
ComponentRelationConstraint
SimpleTableConstraint : : = ObjectSet
10.4 Множество объектов "ObjectSet" в ограничении "SimpleTableConstraint" управляется классом, который появляется в ограничиваемом типе "ObjectClassFieldType".
10.5 Семантика "SimpleTableConstraint" специфицируется с использованием ассоциированной таблицы ограничивающего множества информационных объектов.
10.6 Имя поля "FieldName" типа, который будет ограничен, используется для выбора применяемого столбца ассоциированной таблицы, и при этом применяются следующие правила:
а) для поля типа компонент ограничен тем, что должен быть любым значением одного из типов в любой строке этого столбца;
б) для поля значения компонент ограничен тем, что должен быть одним из значений в любой строке этого столбца;
в) для поля множество значений компонент ограничен тем, что должен быть одним из множества значений в любой из строк этого столбца.
Примечание - Если для некоторого данного множества объектов сформулированные выше алгоритмы приводят к недопустимому значению, то ограничение всегда нарушается, если этот компонент присутствует в значении содержащего типа.
Пример
В примере раздела 10 перечисление б) применяется к компоненту errorCategory:
errorCategory ERROR-CIASS.&category ({ErrorSet}) OPTIONAL, с ассоциированной таблицей ErrorSet, ограничивающей его возможные значения до "А" и "В".
10.7 Ограничение связи компонента применяется с использованием ассоциированной таблицы множества информационных объектов и следующей продукции:
ComponentRelationConstraing : : =