ГОСТ Р ИСО/МЭК 8824-4-2003
А.5 Пример определения множества параметризованных значений
Если два множества параметризованных значений определены следующим образом:
QuestListl{IA5String:extraQuest} IA5String : : = {“Джек” | “Джон” | extraQuest}
QuestList2 {IA5String:ExtraQuests} IA5String : : = {“Джек” | “Джон” | ExtraQuests}
то следующие множества значений обозначают одно и то же множество значений:
SetOfQuestsl IA5String : : = {QuestListl {“Джилл”}}
SetOfQuests2 IA5String : : = {QuestList2 | {{“Джилл”}}}
SetOfQuests3 IA5String : : = {“Джек” | “Джон” | “Джилл”}
и следующие множества значений обозначают одно и то же множество значений:
SetOfQuests4 IA5String : : = {QuestList2 {{“Джилл” | “Мэри”}}}
SetOfQuests5 IA5String : : = {“Джек” | “Джон” | “Джилл” | “Мэри”}
Следует обратить внимание, что множество значений всегда задается в фигурных скобках, даже когда это — ссылка на параметризованное множество значений. Опуская фигурные скобки у ссылки на “identifier”, который был создан в присвоении множества значений, или у ссылки на “ParameterizedValueSetType”, получим нотацию для “Type”, а не для множества значений.
А.6 Пример определения параметризованного класса
Следующий параметризованный класс может использоваться для определения классов ошибок, которые содержат коды ошибок различных типов. Следует обратить внимание, что параметр “ErrorCodeType” используется только как “DummyGovemor” для параметра “ValidErrorCodes”.
GENERIC-ERROR {ErrorCodeType, ErrorCodeType:
ValidErrorCodes} : : = CLASS {
&errorCode ValidErrorCodes
}
WITH SYNTAX {
CODE &errorCode
Определение параметризованного класса может использоваться для определения различных классов, которые совместно используют некоторые характеристики, подобные одному и тому же синтаксису:
ERROR-l : : = GENERIC-ERROR {INTEGER, {l|2|3}}
ERROR-2 : : = GENERIC-ERROR {ErrorCodeString, {StringErrorCodes}}
ERROR-3 : : = GENERIC-ERROR {EnumeratedErrorCode, {fatal|error}}
ErrorCodeString : : = IA5String (SIZE (4))
StringErrorCodes ErrorCodeString : : = {“E00l"|”E002"|"E003"}
EnumeratedErrorCode : : = ENUMERATED {fatal, error, warning}
Определяемые классы тогда могут использоваться следующим образом:
My-Errors ERROR-2 : : = {{CODE “E00l"} | {CODE ”E002"}} fatalError, ERROR-3 : : = {CODE fatal}
А.7 Пример определения множества параметризованных объектов
Определение множества параметризованных объектов AllTypes формирует множество объектов, которые содержит базовое множество объектов BaseTypes и множество дополнительных объектов, которые поставляются как параметр AdditionalTypes.
AllTypes {TYPE-IDENTIFIER: AdditionalTypes} TYPE-IDENTIFIER : : = {
BaseTypes | AdditionalTypes}
BaseTypes TYPE-IDENTIFIER : : = {
{BasicType-l IDENTIFIER BY basic-type-obj-id-value-1} |
{BasicType-2 IDENTIFIER BY basic-type-obj-id-value-2} |
{BasicType-3 IDENTIFIER BY basic-type-obj-id-value-3}
Определение множества параметризованных объектов, AllTypes, может использоваться следующим образом:
{My-All-Types TYPE-IDENTIFIER : : = {AllTypes {
{My-Type-l IDENTIFIER BY my-obj-id-value-l} |
l2