信息技术 抽象语法记法--(ASN.1)
第4部分:ASN.1规范的参数化
1 范围
GB/T 16262的本部分是抽象语法记法--(ASN.1)的一个部分,并定义了ASN.1规范的参数化的记法。
2规范性引用文件
下列文件中的条款通过GB/T 16262的本部分的引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。
GB/T 16262.1--2006信息技术 抽象语法记法一(ASN.1) 第1部分:基本记法规范(ISO/IEC 8824-1,2002 ,IDT)
GB/T 16262.2--2006信息技术抽象语法记法一(ASN.1) 第2部分:信息客体规范(ISO/
IEC 8824-2:2002, IDT)
GB/T 16262.3--2006 信息技术 抽象语法记法一(ASN.1) 第3部分:约束规范(ISO/IEC 8824-3. 2002, IDT)
3术语和定义
下列术语和定义适用于GB/T 16262的本部分。
3.1 基本记法规范
本部分使用GB/T 16262.1--2006中定义的术语。
3.2信息客体规范
本部分使用GB/T 16262.2--2006中定义的术语。
3.3约束规范
本部分使用GB/T 16262.3--2006中定义的术语。
3.4附加定义
3.4.1标准引用名称 normal reference name
由“Assignment”方法而不是“ParameterizedAssignment”定义的、无参数的引用名称。这种名称引用完整的定义,并且在使用时不向其提供实际的参数。
3.4.2
参数化引用名称 parameterlzed reference name
使用参数化赋值定义的引用名称,它引用不完整的定义,因此在使用时必须提供实际的参数。
3.4.3
参数化类型 parameterized type
使用参数化类型赋值定义的类型,其成分是不完整的定义,在使用这种类型时必须提供实际的参数。
3.4.4
参数化值 parameterized value
使用参数化值赋值定义的值,其值没有完整地予以规定,在使用时必须向其提供实际的参数。
3.4.5
参数化值集合parameterlzed value set
使用参数化值集合赋值定义的值,其值没有完整地予以规定,在使用时必须向其提供实际的参数。
3.4.6
参数化客体类别 parameterized object clam
使用参数化客体类别赋值定义的信息客体类别,其字段规范没有完整地予以规定,在使用时必须向其提供实际的参数。
3.4.7
参数化客体 parameterized object
使用参数化客体赋值定义的信息客体,其成分没有完整地予以规定,在使用时必须向其提供实际的参数。
3.4.8
参数化窖体集合parameterlzed object set
使用参数化客体集合赋值定义的信息客体集合,其客体没有完整地予以规定,在使用时必须向其提供实际的参数。
3.4.9
可变约束 variable constraint
规定参数化抽象语法时采用的约束,此约束视抽象语法的某个参数而定.
4缩略语
本部分使用下列缩略语:
ASN.1抽象语法记法一
5约定
本部分采用GB/T 16262.1--2006的第5章定义的记法约定.
6记法
本章综述本部分定义的记法。
6.1 赋值
本部分定义了下列记法,此记法能用来替代“Assignment”(见GB/T 16262. 1--2006的第12章);
——ParameterizedAssignment(见8.1).
6.2参数化定义
6.2.1本部分定义了下列记法,此记法能用来替代“DefinedType”(见GB/T 16262.1--2006的13.1):
--ParameterizedType(见9.2).
6.2.2本部分定义了下列记法,此记法能用来替代“DefinedValue”(见GB/T 16262. 1--2006的13.1):
--ParameterizedValue(见9.2).
6.2.3本部分定义了下列记法,此记法能用来替代“DefinedType”(见GB/T 16262.1--2006的13.1):
--ParameterizedVaueSetType(见9.2).
6.2.4本部分定义了下列记法,此记法能用来替代“ObjectClass”(见GB/T 16262.2--2006的9.2):
一ParameterizedOhjectClass(见9.2).
6.2.5本部分定义了下列记法,此记法能用来替代“Object"(见GB/T 16262.2-006的11.3):
——ParameterizedObject(见9.2)。
6.2.6本部分定义了下列记法,此记法能用来替代“ObjectSet”(见GB/T 16262.2--2006的12.3):
--ParameterizedObjectSt(见9.2).
7 ASN.1词项
本部分使用GB/T 16262.1--2006的第11章规定的词项。
8参数化赋值
8.1 与GB/T t-6'262.1和GB/T 16262.2规定的每一赋值语句有对应的参数化赋值语句t“Parame-terizedAssignment”结构是:
ParameterizedAssignment.:=
ParameterizedTypeAssignment
ParameterlzedValueAssignment
ParametertzedValueSetTypeAssignment
ParameterizedObjectClassAssignment
ParameterizedObjeetAssignment
ParameterizedObjectSet Assignment
8.2除了在初始词项之后有一个“ParameterList”之外,每个“Parameterized <X> Assignment”的语法与“<X>Assignment”相同。因此初始项成了参数的引用名(见3.4.2):
注.GB/T 16262.1要求在一个模块中所赋予的所有引用名,不訾是否参数化,必须是阴确的:
ParameterizedTypeAssignment::=
typereference
ParameterList
¨::=¨
Type
ParameterizedValueAssignment::=
valuereference
Parameterl.ist
Type
¨::2¨
Value
ParameterizedValueSgtTypeAssignment.:=
typereference
ParameterList
Type.
“::=”
Value Set
ParameterizedObjectClassAssignment::=
objectclassrderence
Parameter乙ist
“::=”
Object Class
ParameterizedObjeetAssignment:: =
objectreferenee
ParameterList
DefinedObjeetClass
ParameterizedObjectSetAssignment: :=
objeetreference
ParameterList
DefinedObjectClass
ObjeetSet
8.3 “ParameterList”是括号之间的“Parameter”表
ParameterI—ist::=”(”Parameter”,¨ ”+” n)”
每个“Parameter,,由“DummyReference"和或许还有“ParamGovernor”组成:
Parameter..: =ParamGovernor”:.’DummyReference I DummyReference
ParamGovernor::=Governor[ DummyGovernor
Governor::=Type I DefinedObjectClass
DummyGovernor::=DummyReference
DummyReference::=Reference
“Parameter”中的‘‘DummyReference”可以代表:
a) 在没有“ParamGovernor"的情况,代表“Type”或“DefinedObj ectClass”
b)在应存在“ParamGovernor"的情况,代表Value或ValueSet在ParamGovernor是“Gov—ernor"的情况,它应是“Type”在“ParamGovernor”是“DummyGovernor”的情况,“Pa—ramGovernor”的实际参数应是“Type”.
c)在应存在“ParamGovernor,,的情况,代表"Object"或“ObjectSet";在"ParamGovernor"是“Governor"的情况,它应是“DefinedObj ect Class",在‘‘ParamGovernor,,是“DummyGovernor"的情 况,“ParamGovernor’’的实际参数应是“DefinedObjectClass”;
“DummyGovernor”应是没有“Governor”的“DummyReference”。
8.4出现在"ParameterList"中的“DummyReference”的范围是"ParameterList"本身,以及在之后的“ParameterizedAssignment”部分。“DummyReference”潜藏此范围中具有相同名称的其他“Reference”。
注:本条不适用于“NamedNumberList”,"Enumeration-和"NamedBitList"中定义的"identifier",因为它们不是“Rerence” “DummyReference”不潜藏这些“identifier”(见GB/T 16262. 1--2006的18. ii和19.10).
8.5 “DummyReference”在其范围内的用法应与其语法形式、何处应用、支配者一致,相同“Dum—myReference”的所有用法应彼此一致。
注;在虚设引用名称的语法形式有二义性的时候(例如,是"objectclassreference"还是。typereference).
通常可根据赋值语句右边首先使用虚设引用名称加以解决.据此,虚设引用名称的特性是已知的。然而当它依次仅用作参效化引用的实际参数时,只用赋值语句的右侧不能确定虚设引用名称的特性I在此情况中,虚设ASN名称的性质必须通过检查此参数化引用的定义予以确定。需告诉此记法的使用者,这一实际做法会使
ASN.1规范不太清晰,建议提供足够的注释以向滨者说明。
示例:
考虑有下列参数化客体类别赋值:
PARAMETERIZED-OBJECT-CLASS(TypeParam, INTEGER. ValueParam, INTEGER 3
ValueSetParam)::=
CLASS{
valueFieldl TypeParam,
&valueField2 INTEGER DEFAULT valueParam,
&valueField3 INTEGER (ValueSetParam)
&ValueSetField INTEGER DEFAULT{ ValueSetParam),
)
为确定“ParameterizedAssignment”范围中的“DummyReference”的合适用法,且目的仅限于此,可考虑将“DummyReIerence”定义如下:
TypeParam::一UnspecifiedType
valueParam lNTEGERz.= unspecifiedlntegerValue
ValueSetParam INTEGER.:={UnspeeifiedlntegerValueSet)
其中:
a)TypeParam是代表“Type”的“DummyReference”。因此,凡是将“typereference”用作,例如固定类型值字段valueFieldl的“Type”时,可以使用TypeParam;
b)ValueParam是代表整数类型的值的“DummyReference”。因此,凡是能将整数值的“valueref-erence”用作,例如,固定类型值字段valueField2的默认值时,可以使用valueParam;
C)ValueSetParam是代表整数类型的值集合的“DummyReierence”。因此,凡是能将整数值的“typereferenee”用作,例如,valueField3和ValueSetField的“ConstrainedSubtype”记法中的“Type”时,可以使用ValueSetParam。
8.6在其范围内每个“DummyReference”应至少采用一次。
注:如果。Dummy Reference”没有这样出现过,对应的“Actual Parameter’’不会影响此定义,好像被排除了,而对使用者而言,它们产生过某个规范.
包含对自身的直接或间接引用的“ParameterizedValueAssignment”、“ParameterizedValueSetAs-signment”、“ParameterizedObj eetAssignment"、‘‘ParameterizedObjeetSetAssignment”是不合法的.
8.7 在“ParameterizedType”、“ParameterizedValueSet”或“ParameterizedObjectClass”的定义中-不应将“DummyReference”作为已标记类型(作为实际参数)递归引用传递给“ParameterizedType竹、“Param-eterizedValueSet”或“ParameterizedObjeetglass”(见A.3).
8.8在“ParameterizedType”、“ParameterizedValueSet”或“ParameterizedObjeetClass”的定义中,不应产生对被定义项的循环引用,除非这种引用直接或间接标记成OPTIONAL或在通过对选择类型的引用产生的“ParameterizedType”和“ParameterizedValueSet”情况,至少其替代记法之一在定义中是非循环的。
8.9“DummyReferenee”的支配者不应包括对另一个㈨洋具有支配者的“DummyReference”的引用。
8.10在参数化赋值中“::=”的右边不应仅由“Du mmyReference”组成。
8.11 “DummyReferenee”的支配者不应要求知道此“DummyReference”,或正被定义的参数化引用名。
8.12当值或值集合作为实际参数提供给参数化类型时,要求此实际参数的类型与对应虚设参数的支配者兼容(详见GB/T 16262.1--2006的B.6.2和B.6.3)。
8.13在定义具有值或值集合虚设参数的参数化类型时,用来支配该虚设参数的这一类型应是其所有值用于赋值右边使用虚设参数的各处都有有效的类型(详见GB/T 16262.1--2006的B.6.5)。
9引用参数化的定义
9.1 在“SymbolList”(在“Exports”或“Imports”中),参数化定义应通过“Parameterized Reference”予以引用:
ParameterizedReference::=Reference I Reference"{¨’’)¨
其中,如上述8.2规定,“Reference”是“ParameterizedAssignment”中的第一个词项。
注:提供~Parameterized Reference”第一个替代记法只是帮助人们理謦.两种替代记法具有相同意义.
9.2在"Exports”或“Imports”以外,参数化定义应通过“Parameterized<X>”结构予以引用,此结构可用作对应“<X>”的替代记法:
ParameterizedType-;=
SimpleDefinedType
AetualParameterList
SimpleDefinedType..:=
ExternalTypeReference
typereference
ParameterizedValue.:=
SimpleDefinedValue
ActualParameterList
SimpleDefinedValue.:=
ExternalValueReference
valuereferenee
ParameterizedValueSetType::=
SimpleDefinedType
ActualParameterList
ParameterizedObjeetClass.:=
DefinedObjectClass
AetualParameterList
ParameterizedObjectSet::=
DefinedObjeetSet
ActualParameterList
ParameterizedObject::=
DefinedObject
ActualParameterList
9.3 “Defined<X>”中的引用名称应是“Parameterized Assignment”中对其产生赋值的引用名称.
9.4 关于使用“Defined<X>”替代记法的限制(在GB/T 16262.1和GB/T 16262.2中规定为标称)同样适用于相应的参数化引用名称。
注:大体上,限制如下:每个。D6fined<X>”有两种替代记法,即“<X>reference”和“External< X> Reference”。前者在定义模块中使用,或如果巳输入定义并且没有名称冲突时使用l后者在没有所列的输入(未赞同)或如果被输入的名称与本地定义之间(也未赞同)或在输入之间有冲突时使用.
9.5 “Actual Parameter List”是:
Actual Parameter List::=
“{”Actual Parameter”,”+”)”
Actual Parameter :: =
Type
Value
ValueSet
DefinedObjectClass
Object
ObjectSet
9.6对应“ParameterizedAssignment”中的每个“Parameter”应正好有个“ActualParameter”,并且以同样的顺序出现。对“ActualParameter”和支配者(如果有)的具体选择应通过此“Parameter”的语法形式和它出现在“ParameterizedAssignment”的环境的检查予以确定。“AetualParameter”的形式应是取代其范围内每处的"DummyReference”所要求的形式(见8.4)。
示例;
例如,可以引用前面示例(见8.5)的参数化客体类别定义如下:
MY--OBJECT--CLASS..=PARAMETERIZED-OBJECT-CLASS{ BIT STRING, 123,{ 41516})
9.7在确定正由使用参数化引用名的实侈《引用的实际类型、值、值集合、客体类别或客体集合时,实际参数代替虚设引用名称。
9.8出现在“Actual Parameter”中任一引用的含义和默认适用于也是如此出现的任何标记的标记,按照“Actual Parameter”的标记环境而不是对应的“Dummy Reference”的标记环境予以确定.
注;因此,参效化,尤其如引用、选择类型和CX)MPONENT OF的参数化,准确地说不是按照文字的替换:
示例:
假设有下列模块:.
M1 DEFINITIONS AUTOMATIC TAGS-:----BEGEN
EXPORTS T1;
TI::=SET{
flINTEGER,
f2 BOOLEAN
}
END
M2 DEFINITIONS EXPLICIT TAGS..-- BEGIN
IMPORTS TI FROM Mt;
T3, =T2{TI}
T2{X)., =SEQUENCE{
a1NTEGER,
b X
)-
END
应用9.8意味着T3的成分f1的标记(即T3.b.fl)将隐含地予以标记,因为虚设参数X(名义上明显标记)的标记环境不影响实际参数T1的成分的标记.
假设有模块M3:
M3 DEFINITIONS AUTOMATIC TAGS::=BEGIN
IMPORTS TI FROM MI
T5::=T4{T1)
T4{ Y}:: =SEQUENCE{
aINTEGER,
b Y
}
END
应用GB/T 16262.1~2006的30:6意味着T5的成分b的标记(即@T5.B)将明显地予以标记因为虚设参数Y总是明显地予以标记,因此T5等效于:
T5::一SEQUENCE{
aE0]IMPLICIT INTEGER,
b [1]EXPLICIT SET{
f1E01INTEGER,
f2 [I]BOOLEAN
)
而T3等效于:
T3: : = SEQUENCE{
a INTEGER,
b SET{
fl [-0~IMPLICIT INTEGER,
f2 [" 1]IMPLICIT BOOLEAN
}
10抽象语法参数
10.1 GB/T 16262.2--2006的附录B提供了ABSTRACT--SYNTAX信息客体类别,并建议用其定义抽象语法。一个示例是将抽象语法定义成一个ASN.1类型的值集合,而这一ASN.1类型的外层未被参数化。
10.2用来定义抽象语法的ASN.1类型予以参数化时,某些参数可作为定义抽象语法时的实际参数予以提供,而一些其他参数留作抽象语法本身的参数。
示例:
如果某一参数化类型已定义,叫做有二个虚设引用(假设第一个是某个已定义客体类别的客体集合,第二个是在一个边界内的整数值)的YYY--PDU,那么:
YYY--Abstract--Syntax{ INTEGER- bound} ABSTRACT--Syntax::2
{YYY--PDU“ValidObjects}, bound) IDENTIFIED BY{ YYY 5))
定义其中已解决客体集合的参数化抽象语法,而bound留作抽象语法的一个参数。
抽象语法参数的使用方法是:
a) 直接或间接用于约束的上下文中;
b) 直接或间接用作最后用于约束上下文中的实际参数。
注:见A.2中的示例和GB/T 16262.1--2006的F.5中的示例.
10.3其值集合视抽象语法一个或几个参数而定的约束是可变约束。在定义抽象语法之后确定这种约束(或许由国际标准化轮廓或在协议实现一致性声明中确定)。
注.如果在约束值规范包含的定义中的某处出现了抽象语法的参数,那么.此限别是可变约束.即使最后的约束的值集合与抽象语法的参数的实际值无关.它也是可变约束。
示例:
((1..3)EXCEPT a)UNION(I..3)的值总是1..3,与a是什么值无关,若a是抽象语法的一个参数,它仍是可变约束。
10.4形式上,可变约束不约束抽象语法中的值集合。
注:强力推荐希望留作抽象语法中可变约束的约束要有使用GB/T 16262. 1--2006的49.4提供的记法的特殊规范.
附录A
(资料性附录)
示 例
A.1 使用参数化类型定义的示例
假设一名协议设计者常常需要携带具有一个或多个协议字段的鉴别符。这将按BIT STRING携带(位于此字段一侧)。没有参数化,Authenticator需定义为BIT STRING,因此不管authenticator是否要出现,需将它附加到文本以标识它应用于什么。换言之,此设计者要遵守将具有鉴别符的字段能换成此字段和authenticator的SEQENCE的约束.参数化机制为此工作提供便捷的方法。
首先,我们定义参数化类型SIGNED{):
SIGNED{ ToBeSigned}::=SEQUENCE
authenticated-data
authenticator
)
因此,在协议的主体中,此记法(作为示例)
SIGNED{ OrderInFormation)
是下列的类型记法:
SEQUENCE
{
authenticated-data
authenticator
ToBeSigned,
BIT STRING
OrdeInFormation,
BIT STRING
)
进一步假设发送者必须作出对某些字段是否加鉴别符的选择。这可通过产生任选的BIT
STRING完成~但是更好的方案(线上比特更少>是定义另一种参数化类型。
OPTIONALLY—SIGNED{ ToBeSigned)::=CHOICE
{
unsigned--data [0] ToBeSigned,
signed--data [1] SIGNED{ ToBeSigned)
)
注;如果编制者保证在使用参数化类型中没有一次产生BIT STRING的实际自变量(SIGNED的类型).则CHOICE中的标记不是必需的,但是在防止规范其他部分中的差错是有用的.
A.2使用参数化定义以及信息窖体类别的示例
使用信息客体类别以集中抽象语法的所有参数。用此方法能使抽象语法的参数数目减少到收集类别的一个实例。可以使用“lnformationFromObject”生成式提取参数客体中的信息。
示例:
一这种类别的一个实例包含抽象语法Message--PDU的所有参数。
MESSAGE—PARAMETERS::=CI.ASSf
Maximum-priority-level INTEGER,
maximum--message--buffer--size INTEGER,
maximum--reference--buffer--size INTEGER
}
WITH SYNTAX{
THE MAXIMUM PRIORITY LEVEL IS ~maximum-priority-level
THE MAXIMUM MESSAGE BUFFER SIZE IS ~maximum-message-buft-
er-size
THE MAXIMUM REFERENCE BUFFER SIZE IS &maximum-reference-
buffer-size
)
一“Value From Object”生成式用来提供抽象语法参数“Param”
一中的值。这些值只能用于约束中。
一此外.此参数能一直被传送给另一个参数化类型。
Message--PDU{ MESSAGE---PARAMETERS: param)::=SEQUENCE{
priority--level INTEGER(0.. param. ~maximum--priority--level), .
message BMPString(SIZE(0.. param. ~maximum-message-buffer-size》,
reference Reference{ param}
)
Reference{ MESSAGE--PARAMETERS:param}::=
SEQUENCE OF IASString(SIZE(0.. param, g~maximum-reference-buffer-size》
一参数化抽象语法信息客体的定义。
一此抽象语法参数只能用于约束。
Message--Abstract--Syntax{ MESSAGE--PARAMETERS: param)
ABSTRACT--SYNTAX.:=
{
Message--PDU{ param)
IDENTIFIED BY{joint--is o--ccitt asnl(1) examples(123)0)
)
类别MESSAGE--PARAMETERS和参数化抽象语法客体message----Abstraet--Syntax使用
如下:
--MASSAGE--PARAMETERS的实例定义此抽象语法的参数值。
My--message--parameters MESSAGE--PARAMETERS::={
THE MAXIMUM PRIORITY LEVEl. IS 10
THE MAXIMUM MESSAGE BUFFER SIZE IS 2000
THE MAXIMUM REFERENCE BUFFER SIZE IS 100
)
一现在可用规定的可变约束定义此抽象语法。
My--message--Abstract--Syntax ABSTRACT--SYNTAX,:=
message--Abstract--Syntax{ My--message--parameters}
A.3有限的参数化类型定义的示例
当规定作为一个通用表形式的参数化类型时,规定此种类型会使产生的ASN.1记法是有限的方法。例如,我们规定:
Listl{ ElementTypeParam)::一SEQUENCE{
elemElementTypeParam,
next Listl{ ElementTypeParam}OPTIONAL
}
为了使用下列形式时是有限的:
lntegerListl::一Listl{INTEGER}
产生的ASN.1记法正如它通常定义的解释:
IntegerListl::=SEQUENCE{
elem INTEGER,
next IntegerListl OPTIONAL
)
将此与下列定义比较:
List2{ ElementTypeParam}::=SEQUENCE{
elem EIementTypeParam,
next List2{[0] ElementTypeParam) OPTIONAL
}
IntegerList2::一List2{ INTEGER)
在此场合,产生的ASN.1记法是无限的:
IntegerList2,,=SEQUENCE{
elem INTEGER,
next SEQUENCE{
Elem [0] INTEGER,
next SEQUENCE{
elem [O] [O] INTEGER,
next SEQUENCE{
elem E03 E03 E03 INTEGER,
next SEQUENCE{
一一等等
] OPTIONAL
] OPTIONAL
] OPTIONAL
] OPTIONAl.
]
A.4参数化值定义的示例
如果定义参数化串值如下:
generieBirthdayGreeting{ IA5String: name) IA5String.={”Happy birthday,",
name,“!!”}
那么下面二个串值是相同的:
greeringl IASString:*= genericBirthdayGreeting{”John”}
greeting2 IA5String:t一”Happy birthday,John!!”
A.5参数化值集合定义的示例
如果定义二个参数化值集合如下;
QuestListl{IASString:extra Quest}lA5String.:;{“Jack”|“John”|extraQuest)
QuestI.ist2 IA5String:ExtraQuest) IA5String::={“Jack”|“John”|
extraQuest)
那么下列值集合表示此相同的值集合:
SetofQuestl IASString-,一{QuestListl{“Jill”¨
SetofQuest2 IA5String..:一{QuestList2{{ “JilI”)}}
SetofQuest3 1A5String,,={“Jack”|“John”|“Jill”}
以及下列值集合表示此相同的值集合:
SetofQuest4 IA5String,:一{QuestList2(“Jill””Mary”))}
SetofQuest5 IASString..={”Jack”I”John”l”Jill”}”Mary”)
注意,一个值集合总是在花括号中规定的,即使它是一个参数化值集合引用时也是如此。通过在对曾在值集合赋值中创建的。identifier"的引用中略去花括号或在对“ParameterizedValueSetType”的引用中略去花括号,此记法则是“Type”的记法,而不是值集合记法。
A.6参数化类别定义的示饲
下列参数化类别可用来定义包含不同类型的差错代码的差错类别。注意,ErrorCodeType参数只能用作ValidErrorCodes参数的“DummyGovernor~
GENERIC--ERROR{ ErrorCodeType, ErrorCodeTypel ValidErrorCodes}::=CLASS{
&errorCode ValidErrorCodes
}
WITH SYNTAX{
CODE&errorCode
)
可以使用如下参数化类别定义来定义像同样的定义语法那样共享一些特性的不同类别:
ERROR--1:::GENERIC--ERROR{ INTEGER,{1 L213})
ERROR--2:,:GENERIC~ERROR{ ErrorCodeString,{ StringErrorCode))
ERROR--3-.= GENERIC--ERROR{ EnumeratedErrorCode,{fatal ~error})
ErrorCodeString-:一IASString(SIZE(4))
StringErrorCodes ErrorCodeString::={”E001”l”E002‘‘1”E003”)
EnumeratedErrorCode l l=ENUMERATED{ fatal, error, warning)
因此可使用定义类别如下:
MY--Errors ERROR--2::={CODE“E001”)I{CODE”E002”)}
FataIError ERROR--3::={CODE fatal}
A.7参数化窖体集合定义的示例
参数化客体集合定义AII Type构成包含基本客体集合BaseType和以参数additionaiType提供的附加客体集合的客体集合;
AiITypes{ TYPE--IDENTIFIER: AddttionaITypes} TYPE--IDENTIFIER.,=
{ BaseTypesl AdditionalTypes)
BaseTypes TYPE--IDENTIFIER-:={
{ BasicTypes-1 IDENTIFIFD BY basic-type-obj-id-value-1}[
{ BasicTypes-2 IDENTIFIFD BY basic-type-obj-id-value-2)1
{ BasicTypes-3 IDENTIFIFD BY basic-type-obj-id-value-3)
}
参数化客体集合定义可使用如下:
MY-ALL-Types TYPE-IDENTIFIER::={AilTypes{{
{ MY-Type-1 IDENTIFIED BY my-obj-id-value-1)
{ MY-Type-2 IDENTIFIED BY my-obj-id-value-2)
{ MY-Type-3 IDENTIFIED BY my-obj-id-value-3)
))}
A.8参数化客体集合定义的示例
在如下的参数化抽象语法定义中可使用GB/T 16262.3--2006的A.4定义类型:
-Possible Body Types是一种抽象语法的参数。
Message-abstract-syntax{MHS-BODY-CLASS. PossibleBodyTypes)ABSTRACT-SYN-
TAX-:={
INSTANCE OF MHS-BODY-CLASS( {PossibleBodyTypes))
IDENTIFIED BY{ joint-iso-itu asnl(1) examples(1) 123}
)
一此客体集合列出单纯实例类型所有可能成对的值和type-ids,
一此客体集合用作参数化抽象语法定义的实际参数a
MY-BODY-TYPES MHS-BODY-CLASS-:一{
{ MY-First-Type IDENTIFIED BY my-first-obj-id)1 .
{ MY-Second-Type IDENTIFIED BY my-second-obj-id)1
)
my-message-abstract-syntax ABSTRACT-SYNTAX:"=
message-abstract-syntax{MY-BODY-TYPES})
GB/T 16262.4--2006/1S0/IEC 8824-4=2002
附 录B
(资料性附录)
记法综述
在GB/T 16262.1--2006中定义了下列词项并用于本部分:
typereference
valuerererence
“::=”
“( ”
“)”
“ .”
在GB/T 16262.2--2006中定义了下列词项并用于本部分:
objectclassreference
objectreference
objectsetreference
在GB/T 16262. 1--2006中定义了下列生成式并用于本部分:
DefinedType
DefinedValue
Reference
Type
Value
ValueSet
在GB/T 16262.2--2006中定义了下列生成式并用于本部分:
DeflnedObjectClass
DefinedObject
DefinedObjectSet
ObjectClass
Object
ObjectSet
本部分中定义了下列生成式;
ParameterizedAssignment::=
ParameterizedTypeAssignment |
ParameterizedValueAssignment |
ParameterlzedVal ueSetTypeAssignment |
ParameterizedObjectClassAssignment |
ParameterizedObjectAssignment |
ParameterizedObj ectSetAssignment
ParameterlzedTypeAssignment;l
typereference ParameterList”::=”Type
ParameterizedValueAssignment::2
valaereference ParameterList Type ”::=”Value
ParameterizedValueSetTypeAssignment::=
typereference ParameterLlst Type "::= " ValaeSet
ParameterizedObjectClassAssignment : :=
objectclassreference ParameterList " :: = " ObjectCiass
ParameterlzedObjectAssignment : = =
ob|ectreference ParameterList DefinedObjectClass
ParameterlzedObjectSetAssignmeut :: =
objectsetreference ParameterList DeflnedOhjectCiass
ParameterList::= {" Parameter " " + " )"
Parameter ::= ParamGovernor " " DummyReference I DummyReference
ParamGovernor ::= Governor I DummyGovernor
Governor ::= Type I DefinedObjectClass
DummyGovernor :: = DummyReferenc~
DummyReference ::== Reference
ParameterizedReference ::=-Reference ] Reference " {" " )"
SimpleDeflnedType ::= ExternalTypeReference I typereference
SimpleDeglnedValue ::= ExternalValueReference L valuereference
ParameterizedType :: = SimpleDefinedType ActualParameterList
ParameterizedValue ::= SimpleDefinedValue ActualParameterLlst
ParameterlzedValueSetType ::= SimpleDeflnedType ActuaiParameterList
ParameterlzedObjectClass ::= DefinedObjectClass ActualParameterList
ParameterizedObjectSet ::= DeflnedObjectSet ActualParameterList
ParametertzedObject : =DefinedObject ActualParameterList
ActualParameterList : : --
ActualParameter ::=Type] Value] ValueSet [ DefinedOb|ectClass| Object [ ObjectSe
1162