ГОСТ Р ИСО/МЭК 8824-2-2001 щено в определении информационного объекта или, в случае «DEFAULT#, это опускание порождает последующее множество значений «Val^Set». Продукция «ValueSetOptionalitySpec» должна быть такой, что:
а) если поле типа, обозначенное «FieldName», имеет продукцию «TypeOptionalitySpec» «OPTIONAL», то продукция «ValueSetOptionalitySpec» должна также быть «OPTIONAL», и
б) если продукция «ValueSetOptionalitySpec» есть «DEFAULT ValueSet», то поле типа, обозначенное «FieldName», должно иметь продукцию «TypeOptionalitySpec» «DEFAULT Type», а множество значений «ValueSet» должно быть значением этого типа.
9.11 Продукция «ObjectFieldSpec» определяет, что поле является полем информационного объекта (см. 3.4.10).
ObjectFieldSpec : : = objectfieldreference DefinedObjectClass ObjectOptionalitySpec?
ObjectOptionalitySpec : : = OPTIONAL | DEFAULT Object
Имя поля есть «objectfieldreference». Продукция «DefinedObjectClass» указывает класс объекта, содержащегося в поле (который может быть классом «ObjectClass», определяемым в настоящее время). Продукция «ObjectOptionalitySpec», если присутствует, устанавливает, что поле в определении информационного объекта может быть неспецифицированным или, в случае «DEFAULT», это опускание порождает последующий объект «Object» (см. 11.2), который должен быть «DefinedObjectClass».
9.12 Продукция «ObjectSetFieldSpec» определяет, что поле является полем множества информационных объектов (см. 3.4.12).
ObjectSetFieldSpec : : = objectsetfieldreference DefinedObjectClass ObjectSetOptionalitySpec?
ObjectSetOptionalitySpec : : = OPTIONAL | DEFAULT ObjectSet
Имя поля есть «objectsetfieldreference». Продукция «DefinedObjectClass» указывает класс объектов, содержащихся в поле. Продукция «ObjectSetOptionalitySpec», если присутствует, устанавливает, что поле в определении информационного объекта может быть неспецифицированным или, в случае «DEFAULT», это опускание порождает последующее множество объектов «ObjectSet» (см. 12.2), все объекты которого должны быть «DefinedObjectClass».
9.13 Конструкция «PrimitiveFieldName» используется для идентификации поля относительно класса, содержащего его спецификацию:
PrimitiveFieldName : : = typefieldreference | valuefieldreference | valuesetfieldreference | objectfieldreference | objectsetfieldreference
Имена всех полей, специфицированых в определении класса, должны быть различными.
9.14 Конструкция «FieldName» используется для идентификации поля относительно некоторого класса, который либо непосредственно содержит спецификацию поля, либо имеет цепочку полей связи к содержащему классу. Цепочка указывается списком имен «PrimitiveFieldName», разделенных точками.
FieldName : : = PrimitiveFieldName «.» +
9.15 Если имеется любая цепочка (одна или более) спецификаций полей связи (см. 3.4.14) такая, что:
а) первое поле находится в том классе, который определяется, и
б) каждое последующее является полем класса, использованного при определении предыдущего, и
в) последнее поле определяют, используя класс, который определяется, то, по крайней мере, одна из спецификаций полей должна иметь «ObjectOptionalitySpec» или «ObjectSetOptionalitySpec».
Примечание — Это условие должно предотвратить рекурсивные определения классов информационных объектов без конечного представления для информационных объектов этого рекурсивного класса.
8