ГОСТ Р ИСО/МЭК 8824-1-2001
45.5 Когда для типа установлен рял ограничений, несколько из которых имеют идентификато
ры исключений, идентификатор исключения самого внешнего ограничения должен рассматривать
ся как идентификатор исключения этого типа.
45.6 когда для типов, используемых в арифметических установках, присутствует маркер рас
ширения. идентификатор исключения игнорируется и не наследуется типом, ограниченным в ре
зультате арифметической установки.
46 Спецификация множества элементов
При осуществлении арифметической установки, включающей ограничения подтипа и множе
ства значений, в этой установке используются только абстрактные значения, определенные корнем
расширения. Все экземпляры нотации значения (включая ссылки на значения), используемые в
этих ограничениях, обязательно относятся к абстрактному значению корня расширения. Если на
самом внешнем уровне "ElementSetSpecs" нет маркера расширения, то результат арифметической
установки не является расширяемым типом.
При осуществлении арифметической установки, включающей множества информационных
объектов, все информационные объекты (а не только в корне расширения) используются в этой
установке. Если какое-либо множество информационных объектов, относящееся к арифметической
установке, является расширяемым или на самом внешнем уровне “ElementSetSpecs" есть маркер
расширения, то результат арифметической установки является расширяемым типом.
46.1В некоторых нотациях может быть специфицировано множество элементов некоторого
идентифицированного класса элементов (управляющего). В таких случаях используется нотация
"ElementSetSpecs”:
ElementSetSpecs : : =
RootElementSetSpec |
RootElementSetSpec "," “...“|
RootElementSetSpecAdditionalElementSetSpec
RootElementSetSpec : : = ElementSetSpec
AdditionalElementSetSpec : : = ElementSetSpec
ElementSetSpec . : = Unions |
ALL Exclusions
Unions :: = Intersections|
UElems UnionMark Intersections
UElems :: = Unions
Intersections:: = IntersectionElements|
lElems IntersectionMark IntersectionElements
lElems :: = Intersections
IntersectionElements :: = Elements | Elents Exclusions
Elems :: =* Elements
Exclusions : : = EXCEPT Elements
UnionMark:: =>f I UNION
IntersectionMark :: = "л" | INTERSECTION
П p и м с ч а н и я
1Символи слово INTERSECTION —синонимы. Символ "f*и слово UNION —синонимы. Рекомен
дуется. чтобы во всей спецификации использовались либо символ, либо слово. И в том. и в лругом случае
может использоваться слово EXCEPT.
2 Старшинство операторов от старших к младшим следующее: "EXCEPT". "л"."|". "ALL EXCEPT* специ
фицировано так. что оно нс может чередоваться с другими ограничениями без использования скобок вокруг
"ALL EXCEPT ххх* .
1 Всякий раз, когда ветречае! ся продукция "Elements", может появиться либо ограничение без скобок
(например INTEGER (I..4)), либо ограничение подтипа в скобках (например INTEGER ((1..4J9))).
4 Два оператора "EXCEPT" должны разделяться или"лИ. "(*, или ")", так что (A EXCEPT В EXCEPT
С) нс допускается: оно должно быть заменено на ((A EXCEPT В) EXCEPT С) или на (A EXCEPT (В EXCEPT
С».
5 Отмстим, что ((A EXCEPT В) EXCEPT С) - то же самое, что и (A EXCEPT (В | С)).
6 Элементы, которые указываются "ElementSetSpecs". яатяютси объединением элементов, указанных
"RootElementSetSpec" и "AdditionalElement SetSpec".
57