ГОСТ 1» ИСО/МЭК 8824-2-2001
9.16 Примеры
Расширенная версия класса информационных объектов, описанного неформально как пример
в 3.4.9, может определяться следующим образом:
OPERATION : : = CLASS
{
AArgumentType OPTIONAL.
AResuItTvpe OPTIONAL.
& ErrorsERROR OPTIONAL,
&LinkedOPERATION OPTIONAL,
&resultReturned BOOLEAN DEFAULT TRUE,
AcodeINTEGER UNIQUE
}
ERROR : : = CLASS
{
AParameterTvpe OPTIONAL,
AcodeINTEGER UNIQUE
П р и м е ч а н и я
1 Этот пример основывается на понятиях операции и ошибки из стандартов но удаленным операциям,
но упрошен с целью наглядности.
2 Поля, специфицируемые для этого класса, включают два поля типа (AArgumentType и ARcsuliTypc)
двух полей множествобъектов <&Errors и &Linked) и двух полей значений (ArcsiiltRctiirncd и &codc), последнее
является полем идентификатора.
3 Множество информационных объектов, образованное классом OPERATION, должно быть таким,
чтобы нс было двух объектов в множестве, имеющих одно и то же значение для поля &code. (То же самое
применяется к множествам объектов ERROR).
4 Класс информационных объектов OPERATION включает цепочку полей связи, описанную в 9.15.
Цепочка длиной единица образуется полем &Linked, которое специфицируется (рекурсивно) с помощью
OPERATION. Однако это недопустимо, так как паче обозначено как OPTIONAL.
5 Никакой из этих примеров нс содержит продукцию «WithSyntaxSpec*. Соответствующие примеры
приводятся в 10.13.
10 Список синтаксисов
10.1 Часто бывает, что одна спецификация определяет класс информационных объектов, для
которого несколько других независимых отдельных спецификаций определяют информационные
объекты. Возможно, автору определения класса следует предоставить дружественную пользователю
нотацию для определения информационных объектов этого класса.
Примечание —Именно для этого (исторически) использовалась главным образом «макронотация»
АСЫ. 1до того, как была заменена настоящим стандартом.
10.2 В данном разделе установлена нотация, с помощью которой разработчик класса инфор
мационных объектов определяет специфический для класса синтаксис определения информацион
ных объектов этого класса.
10.3 Нотация является синтаксической конструкцией «SvntaxList*, которая встречается в
синтаксической конструкции «ObjectClassDefn*.
10.4 Конструкция «SvntaxList* специфицирует синтаксис для определения единственного
информационного объекта определяемого класса. Синтаксис появляется как «DefinedSyntax* в
последующих пунктах.
Примечание —Свойством настоящей спецификации является то. что конец любой синтаксической
конструкции, определенный «SvntaxList» (экземпляра «DcfincdSyntax*), может быть найден путем:
а) игнорировании комментариев АСН. !;
б) трактовки значений символьных строк как лексических признаков:
в) проставления начальной
«{».
согласовывая вложенные <■{»и «}», и завершении конструкции несогла
сованной *}».
10.5 Конструкция «SvntaxList» специфицирует последовательность «DefinedSyntaxToken», ко
торая должна появляться в «DefinedSyntax* (см. 11.5).
SvntaxList:: = «{* TokenOrGroupSpec empty + «}*
TokenOrGroupSpec :: = RequiredToken | OptionalGroup
9