ГОСТ Р ИСО/МЭК 8824-2-2001
9.16 Примеры
Расширенная версия класса информационных объектов, описанного неформально как пример в 3.4.9, может определяться следующим образом:
OPERATION : : = CLASS
{
&ArgumentType OPTIONAL,
&ResultType OPTIONAL,
&Errors ERROR OPTIONAL,
&Linked OPERATION OPTIONAL,
&resultReturned BOOLEAN DEFAULT TRUE,
&code INTEGER UNIQUE
}
ERROR : : = CLASS
{
&ParameterType OPTIONAL,
&code INTEGER UNIQUE
}
Примечания
1 Этот пример основывается на понятиях операции и ошибки из стандартов по удаленным операциям, но упрощен с целью наглядности.
2 Поля, специфицируемые для этого класса, включают два поля типа (TArgumentType и TResultType) двух полей множеств объектов (TErrors и TLinked) и двух полей значений (TresultReturned и Tcode), последнее является полем идентификатора.
3 Множество информационных объектов, образованное классом OPERATION, должно быть таким, чтобы не было двух объектов в множестве, имеющих одно и то же значение для поля Tcode. (То же самое применяется к множествам объектов ERROR).
4 Класс информационных объектов OPERATION включает цепочку полей связи, описанную в 9.15. Цепочка длиной единица образуется полем TLinked, которое специфицируется (рекурсивно) с помощью OPERATION. Однако это недопустимо, так как поле обозначено как OPTIONAL.
5 Никакой из этих примеров не содержит продукцию «WithSyntaxSpec». Соответствующие примеры приводятся в 10.13.
10 Список синтаксисов
10.1 Часто бывает, что одна спецификация определяет класс информационных объектов, для которого несколько других независимых отдельных спецификаций определяют информационные объекты. Возможно, автору определения класса следует предоставить дружественную пользователю нотацию для определения информационных объектов этого класса.
Примечание — Именно для этого (исторически) использовалась главным образом «макронотация» АСН. 1 до того, как была заменена настоящим стандартом.
10.2 В данном разделе установлена нотация, с помощью которой разработчик класса информационных объектов определяет специфический для класса синтаксис определения информационных объектов этого класса.
10.3 Нотация является синтаксической конструкцией «SyntaxList», которая встречается в синтаксической конструкции «ObjectClassDefn».
10.4 Конструкция «SyntaxList» специфицирует синтаксис для определения единственного информационного объекта определяемого класса. Синтаксис появляется как «DefinedSyntax» в последующих пунктах.
Примечание — Свойством настоящей спецификации является то, что конец любой синтаксической конструкции, определенный «SyntaxList» (экземпляра «DefinedSyntax»), может быть найден путем:
а) игнорирования комментариев АСН. 1;
б) трактовки значений символьных строк как лексических признаков;
в) проставления начальной «{», согласовывая вложенные «{» и «}», и завершения конструкции несогласованной «}».
10.5 Конструкция «SyntaxList» специфицирует последовательность «DefinedSyntaxToken», которая должна появляться в «DefinedSyntax» (см. 11.5).
SyntaxList : : = «{» TokenOrGroupSpec empty + «}»
TokenOrGroupSpec : : = RequiredToken | OptionalGroup
9