ГОСТ Р ИСО/МЭК 8824-2-2001
10.12 Для того чтобы обеспечить простой синтаксический разбор нового синтаксиса и предотвратить правильное употребление, следующие дополнительные ограничения накладываются на автора определения нового синтаксиса:
а) требуется, чтобы каждая продукция «OptionalGroup» содержала в себе по крайней мере одну продукцию «PrimitiveFieldName» или «OptionalGroup»;
Примечание 1 — Это помогает предотвратить видимое скопление информации, которое не отражается ни в каком поле информационного объекта;
б) использование продукции «OptionalGroup» должно быть таким, чтобы в процессе синтаксического разбора никогда не могла появиться продукция «Setting», которая потенциально может быть установкой для более чем одного «FieldName»;
в) если продукция «OptionalGroup» начинается с альтернативы «Literal», то первый признак, следующий за «OptionalGroup», должен также быть «Literal» и отличаться от первого литерала «Literal» во всех непосредственно следующих конструкциях «OptionalGroup».
Следующие ограничения накладываются на пользователя продукции «DefinedSyntax»:
г) всякий раз, когда альтернатива «Literal» присутствует в «DefinedSyntax», которая встречается в «OptionalGroup», альтернатива «Setting» для «PrimitiveFieldName» в этой «OptionalGroup» также должна присутствовать.
Примечания
2 Это ограничение помогает предотвратить видимое скопление информации, которая не отражается ни в каком поле информационного объекта.
3 Следующий пример является допустимым синтаксисом, но ограничение г) не позволяет пользователю писать «LITERAL» без следующих за ним одной или обеих факультативных групп.
[LITERAL [A Tfield] [В &field2]]
10.13 Примеры
Примеры определений классов из 9.16 могут быть дополнены определяемым синтаксисом для обеспечения дружественного пользователям способа определения экземпляров классов. (Этот определяемый синтаксис используется в примере в 11.10).
OPERATION : : = CLASS
&ArgumentType
&ResultType
&Errors
&Linked
&resultReturned
&operationCode
}
WITH SYNTAX
OPTIONAL,
OPTIONAL,
ERROR OPTIONAL, OPERATION OPTIONAL, BOOLEAN DEFAULT TRUE, INTEGER UNIQUE
&ArgumentType]
&ResultType]
[RETURN RESULT &resultReturned]
&Errors]
&Linked]
&operationCode
[ERRORS
[LINKED
CODE
}
ERROR : : = CLASS {
&ParameterType OPTIONAL &errorCode INTEGER UNIQUE
}
WITH SYNTAX }
[PARAMETER &ParameterType] CODE &errorCode
11