GB/T 16262.2-2006/ISO/IEC 8824 - 2:2002
信息技术 抽象语法记法--(ASN1)
第2部分:信息客体规范
1 范围
GB/T 16262的本部分是抽象语法记法一(AsN.1)的一个部分,并提供规摩信息客体类别、信息客
体和信息客体集合的记法。
2 规范性引用文件
下列文件中的条款通过GB/T 16262的本部分的引用而成为本部分的条款。凡是注日期的引用文
件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。
GB/TI6262.1—2006 信息技术 抽象语法记法一(ASN.1) 第1部分: 基本记法规范(ISO/
IEC 8824-1:2002,IDT)
GB/T 16262.3--2006 信息技术 抽象语法记法一(ASN.1) 第3部分:约束规范(ISO/IEC
8824-3:2002,IDT)
GB/T 16262.4—2006 信息技术 抽象语法记法一(ASN.1) 第4部分;ASN.1规范的参数化
(ISO/IEC 8824-4: 2002, IDT)
3 术语和定义
下列术语和定义适用于GB/T 16262--2006的本部分。
3.1基本记法规范
本部分使用GB/T 16262.1--2006中定义的术语。
3.2约束规范
16262.3m2006中定义的下列术语:——表约束 table constraint。
3.3 ASN.1规范的参数化
本部分使用GB/T 16262.4--2006中定义的下列术语。
a) 参数化类型 parameterized type;
b) 参数化值 parameterized value。
3.4附加定义
3.4.1
关联表associated tabe
通过由已有的链接字段(见3.4.15)而产生的展开分层结构可从客体或客体集合导出的(某个信息客体或信息客体集合)抽象表。
注:关联表能用来确定某种约束的精确性质(见GB/T 16262.3--2006).此约束是在使用客体集合时施加的.
3.4.2
默认语法 default syntax
对定义者没有提供定义语法的类别,定义这种类别信息客体的记法(见11.10的示例)。
3.4.3
定义语法 defined syntax
由类别的定义者提供的记法,它允许以用户友好的方式定义此类别的信息客体。
注:例如,类别OPERATION的定义语法可以允许此类别的实例定义如下t字ARGUMENT后接& ArgumentType,然后,字RESULT后接&ResultType.然后,字CODE后接&OperationCode(见11. 11的示例).
3.4.4
可扩展客体集合 extenslble object set
具有扩展标记的客体集合或对可扩展的客体集合进行集合运算定义的客体集合。
3.4.5
字段field
信息客体类别的成分。每个字段是类型字段、固定类型值字段、可变类型值字段、固定类型值集合字段、可变类型值集合字段、信息客体字段或信息客体集合字段。
3.4.6
字段名称field name
标识某个类别的字段的名称I或是直接规定此字段的类别,在此情况中,此名称是原始字段名称,或是具有与其中此字段实际上已被规定的情况有关的一系列链接字段的类别。
3.4.7
支配(类别) governing(class)
支配者governor
要求其引用或规定支配类别的信息客体时,影响ASN.1语法某部分解释的信息客体类别定义或
引用。
3.4.8
标识符字段 identifier field
为提供类别中信息客体的唯一标识,所选用的类别的固定类型值字段。标识符字段值,如果提供,
在对此类别定义的任一信息客体集合中应是无歧义的。它们可以,但不需要在更广范围内起到无歧义
地标识此类别的信息客体。
注l:标识符字段具有固定的ASN.1类型,此类型的值可包含在协议中以标识此类型中的信息客体.
注2:标识符为无歧义的范围是信息客体集合的范围.然而,它还能在任一给定的抽象语言中,或完整的应用上下
文中是无歧义的,或甚至通过标识符字段使用客体标识符类型能对所有类别是完全无歧义的.
3.4.9
信息客体Information object
某个信息客体类别中的实例,由符合此类别字段规范的字段集合组成。
注:例如,信息客体类别OPERATION(在3.4.10的示例中提及的)一个具体实例可以是invertMatrix,它具有
&ArgumentType字段(包含类型Matrix).&ResuhType字段(也包含类型Matrix)和&operationCode字段(包
含值7)(见10.13的示例).
3.4.10
信息客体类别(类别) information object class(class)
对可能未界定的信息客体(此类别的实例)汇集为定义,形成模板的字段集合。
注:例如,信息客体类别OPERATION可以与远程操作服务(ROS)的操作概念相对应予以定义。此外,每个不同命名的字段规范可能与一个操作实例变到另一个操作实例的某个方面相对应.因而,可能有& ArgumentType、
&ResultType和&operationCode字段,前两个规定类型字段,第三个规定值字段.
3.4.11
信息客体字段 Information object field
包含某个规定类别信息客体的字段.
3.4.12
信息客体集合information object set
使用相同信息客体类别引用名定义的所有信息客体的非空集合。
注:例如,类别OPERATION(在3.4.10例中使用的)一个信息客体集合MatrixOperation可以包含invertMatrix
(在3.4.9中提及过>和其他有关操作(例如,addMatrices、muhiplyMettrices等).这种客体集合可来用定义对调用作出规定并产生所有这些操作的结果报告的抽象语法(见12.11的示例).
3.4.13
信息客体集合字段 information object set field
包含某个规定类别信息客体集合的字段。
3.4.14
单一实例类型 instance-of type
通过引用与类型相关联的客体标识符的信息客体类别所定义的类型.
3.4.15
链接字段 link field
客体或客体集合字段.
3.4.16
客体类别字段类型 object class field type
通过对信息客体类别中的某个字段的引用所规定的类型。在GB/T 16262.3中.提供的记法通过
对此类别信息客体集合的引用使此类型受到限制。
3.4.17
原始字段名称 primitive field name
在信息客体类别定义中无须使用链接字段而直接规定的名称。
3.4.18
递归定义(引用名称的> recursive definition(of a reference name)
解析引用名称或引用名称定义的支配者要求解析最初引用名称的引用名称。
注:信息客体类是q的递归定义是允许的.11.2和12.2各自禁用信息客体或信息客体集合的递归定义.
3.4.19
递归实例(参数化引用名称的)recursive instantiation of a parameterized reference name
在解析实际参数要求解析最初引用名称时,引用名称的实例.
注:信息客体类别(包括编码结构)的递归实例是允许的.11.2和12.2均禁用信息客体或信息客体集合的递归
实例.
3.4.20
类型字段type field
包含任意类型的字段.
3.4.21
值字段 value field
包含值的字段。这种字段或是固定类型或是可变类型,前者,值的类型是由字段规范确定的;后
者,值的类型含在同一信息客体某个(指定)类型字段之中。
3.4.22
值集合字段 value set field
包含某个类型非空值集合的字段。这种字段或是固定类型或是可变类型,前者.值的类型是由字
段规范确定的;后者,值的类型含在同一信息客体某个(指定)类型字段之中。
注:对一信息客体而言,值集合字段中的值集合构成规定类型的子类型.
4 缩略语
本部分使用下列缩略语:
ASN.1 抽象语法记法一
5 约定
本部分采用GB/T 16262.1--2006第5章定义的记法约定。
6 记法
本章综述本部分定义的记法。
6.1 赋值
本部分定义了下列记法,这些记法能用作“Assignment”(见GB/T 16262.1--2006第12章)的替代
记法:
——ObjectClassAssignment(见9.1);
——ObjectAssignment(见1 1.1);
——ObjectSetAssignment(见12.1)。
6.2类型
6.2.1 本部分定义了下列记法,这些记法能用作“BuitinType”(见GB/T 16262.1--2006的16.2)的替代记法:
——ObjectClassFieldType(见14.1);
——InstanceOfType(见附录C)。
6.2.2 本部分定义了下列记法,这些记法能用作“ReferencedType”(见GB/T 16262.1--2006的16.3)的替代记法:
——TypeFromObject(见15章);
——ValueSet FromObjects(见15章)。
6.3值
6.3.1 本部分定义了下列记法,此记法能用作“Value”(见GB/T 16262.1--2006的16.7)的替代记法:
——ObjectClassFieldValue(见4.6).
6.3.2本部分定义了下列记法,此记法能用作“BuiltinValue”(见GB/T 16262.1--2006的16.9)的替代记法:
——InstanceOfValue(见附录C)。
6.3.3本部分定义了下列记法,此记法能用作“RefereneedValue”(见GB/T 16262.1--2006的16.11)的替代记法:
——ValueFromObjeet(见15章)。
6.4元素
6.4.1本部分定义了下列记法,此记法能用作“Elements”(见GB/T 16262.1--2006的46.5)的替代记法:
——ObjectSetElements(见12.10).
7 ASN.1词项
除GB/T 16262.1--2006第1l章中规定的词汇之外,本部分中还使用下列各条规定的词项。适用
于这些词项的一般规则是按GB/T 16262.1--2006的11.1定义的。这些新的词项使用GB/T 16262.1--
2006第10章规定的ASN.1字符集,以及字符“&”。
注:GB/T 16262.1--2006的10.1中的注也适用于7.1到7.9中规定的词项。
7.1 信息客体类别引用
词项名称——objectclassreference
“objectclassreference”应由GB/T 16262.1--2006的11.2对“typereference”规定的字符序列组成,但不应包括小写字母。
7.2信息客体引用
词项名称——objectreference
“objectreference”应由GB/T 16262. 1--2006的11.4对“valuereference”规定的字符序列组成。
7.3信息客体集合引用
词项名称——objectsetreference
“objectsetreference”应由GB/T 16262.1--2006的11.2对“typereference”规定的字符序列组成。
7.4类型字段引用
词项名称——typefieldreference
“typefieldreference”应由“&”紧接GB/T 16262.1--2006的11.2对“typereference”规定的字符序列组成。
7.5值字段引用
词项名称——valuefieldreference
“valuefieldreference”应由“&”紧接GB/T 16262. 1--2006的11.4对“valuereference”规定的字符序列组成。
7.6值集合字段引用
词项名称--valueset fieldreference
“valuesetfieldreference”应由“&”紧接GB/T 16262. 1--2006的11.2对“typereference”规定的字符序列组成。
7.7客体字段引用
词项名称——objectfieldreferenee
“objectfieldreference”应由“&”紧接7.2对“objectreference”规定的字符序列组成。
7.8客体集合字段引用
词项名称——objectsetfieldreferenee
“objeetsetfieldreference”应由“&”紧接7.3对“objectsetreference”规定的字符序列组成。
7.9字
词项名称——word
“word”应由GB/T 16262. 1--2006的11.2对“type reference”规定的字符序列组成,但不应包括小写字母或数字。
7.10附加关键字
名称CLASS、INSTANCE、SYNTAX和UNIQUE在GB/T 16262. 1--2006的11.27中作为备用
字列出。
8 引用定义
8.1结构:
DefinedObjectClass::=
ExternalObjectClassReference ∣
objectclassreference ∣
UsefulObjectCtassReierence
DefinedOb}ect::=
ExternalObjectReierence ∣
objectreierence
DefinedObjeetSet::=
ExternalObjectSetReference ∣
objectsetreference
分别用来引用类别,信息客体和信息客体集合定义.
8.2对信息客体和信息客体集合的引用有一个支配类别。要求所引用的信息客体和所引用的信息客
体集合中的信息客体应是支配类别中的客体。对信息客体而言.没有所规定的等效“value mappings”
(见GB/T 16262.1--2006的附录B),所以上句意指信息客体或信息客体集合必须使用与支配者使用
的相同信息客体类别引用(或通过简单引用赋值获得的引用)加以定义。就此要求而盲,两个等同的信息客体类别记法的实例(但字面上不同)不能视为同样的信息客体类别。
8.3 除GB/T 16262.1--2006的12.15规定外,“objectclassreference”、“objectreference”和“objectsetrefe”的替代记法只能用于将类别或信息客体或信息客体集合赋于此引用的模块(见9.1、11.1和12.1)。
"ExternalObjectClassReference”、“ExternalObjectReIerence’’和“ExternalObj ectSetreierence”的替代记法定义如下:
Externa[ObjectClassReference::=
modulerelerence
“.”
objectclassreference
ExternalObjectRefereace::=
Modulereference
“.”
objectreference
ExternalObjectSetReference: :
Modulereference
“.”
objectsetreference
不应使用这些替代记法,除非在由相应的“modulereference”标识的模块(与引用模块不同)中已将类别或信息客体或信息客体集合赋予相应的“objectclassreference”、“ohjectrefereuce”或"objectsetreference”(见9.1、11.1和12.1).这就是分别被引用的类别或信息客体或信息客体集合。
8.4“DefinedObjectClass”的替代记法“UsefulObjectclassReference”定义如下:
UsefulObjectClassReference:.= TYPE_IDENTIFIER l ABSTRACT-SYNTAX
其中,第一记法在附录A中规定,第二记法在附录B中规定。
注:名称TYPE-IDENTIFIER和ABSTRACT-SYNTAX在GB/T 16262.1—2006的11.27中作为备用字列出.
9 信息客体类别定义和赋值
9.1结构“ObjectClassAsslgnment”用来将信息客体类别赋于引用名(“objectclassreference”)。此结构是GB/T 16262.1--2006的12章,“Assignment”的替代记法之一,并定义如下:
ObjectClassAssigament::=
objectelassreference
”::=”
ObjectClass
9.2信息客体类别是由结构“ObjectClass”定义的类别:
ObjectClass::=
DefinedObjectClass ∣
ObjectClassDefn ∣
ParameterizedObj ectClass
如果“object class”是:
a) “DefinedObj ectclass”,那么此类别定义与此类别所引用的定义相同;
b) “ObjectClassDefn”,那么此类别按9.3中所述定义;
c) “ParameterizedObjectClass”,那么此类别按GB/T 16262.4的9.2中所述定义。
9.3每个类别归根结底是由“ObjectClassDefn”定义的:
ObjectClassDefn::=
CLASS
″{″FieldSpec″,″+″}″
withSyntaxSpec?
WithSyntaxSpec::= WITH SYNTAX SyntaxList
这种记法允许类别的定义者提供命名的字段规范,其中每个规范是9.4中定义的一种“Field-
Spec”,作为选择,定义者可以提供按I0.5定义的信息客体定义语法(“SyntaxList”)。类别的定义者还可规定与此类别定义相关的语义。
9.4每个“FieldSpee”规定并命名字段之一,它们应该或可以与此类别的实例相关联:
FieldSpec::=
TypeFieldSpec ∣
FixedTypeValueFieldSpee ∣
VairableTypeValueFieldSpec ∣
FixedTypeValueSetFieldSpec ∣
VariableTypeValueSetFieldSpec ∣
ObjectFieldSpec ∣
ObjectS etFieldSpec
“FieldSpec”的各种替代记法在以下各条中规定。
9.5“TypeFieldSpec”规定此字段是类型字段(见3.4.20):
TypeFieldSpec::=
typefieldreference
TypeOpetionalitySpec?
TypeOptionalitySpec::=OPTIONAL∣DEFAULT Type
此字段的名称是“typefieldreference”。如果没有“typeOptionalitySpee”,则要求此类别的所有信息客体定义包括此字段的类型规范。如果OPTIONAL存在,那么,可以不定义此字段。如果DEFAULT存在,那么,在“Type”之后,则为(此字段)提供在定义中省略的默认设置。
9.6“FixedTypeValueFieldSpec”规定此字段是固定类型值字段(见3.4.21):
FixedTypeValueFieldSpec::=
valuefieldreference
Type
UNIQUE?
ValueOpetionalitySpec?
ValueOptionalitySpee::=OPTIONAL∣DEFAULT Value
此字段的名称是“valuefieldreference”。此“Type”结构规定此字段中的包含的值的类型。如果ValueOpetionalitySpec存在,它规定在信息客体定义中可以省略此值,或在DEFAULT情况时,它规定省略随后的“Value”(它应是此类型的值)。存在关键字UNIQUE时,它规定此字段是3.4.8(也见GB/T 16262.3--2006的10.20)定义的标识符字段。如果此关键字存在,则“Value OpetionalitySpec”不应是"DEFAULT Value”。
9.7对标识符字段赋值时,要求此值在任一定义的信息客体集合中是无歧义的。
9.8“VariableTypeValueFieldSpec”规定此字段是可变类型值字段(见3.4.21):
VariableTypeValueFieldSpec::=
valuefieldreference
FieldName
ValueOptionalitySpee?
此字段名称是“valuefieldreference”.“FieldName”(见9.14)与要规定的类别相关。它应是类型字段,此类型字段或是作为值字段处于相同的信息客体中,或通过客体字段链(其引用出现在“Field-Name”中)链接。此类型字段应包含值的类型。(字段引用出现在“FieldName”中的所有链接字段应是客体字段。)如果存在ValueOpetionalitySpec,它规定在信息客体定义中可以省略此值,或在DE-FAULT情况时,它规定省略随后的“Value”,“ValueOptionalitySpec”应是这样:
a) 如果由“FieldName”表示的类型字段有OPTIONAL的“TypeOptionality Spec”,那么,“ValueOptionalitySpee”也应是OPTIONAL;以及
b) 如果“ValueOptionalitySpec”是“DEFAULT Value”,那么,由“FieldName”表示的类型字段应有“DEFAULT Type”的“TypeOptionlitySpec”,并且“Value”应是此类型的值。
9.9“FixedTypeValueSetFieldSpee”规定此字段是固定类型值集合字段(见3.4.22):
FixedTypeValueSetFieldSpee::=
valuesetfieldreferenee
Type
ValueSetOptionalitySpee?
ValueSetOptionalitySpec::=OPTIONALI DEFAULT ValueSet
注:“ValueSet”在GB/T 16262.1--2006的15.6和15.7中定义,并允许对值集合显式列表(用波浪大括号),或对“Type”的子类型使用“type reference”。
此字段的名称是“valuesetfieldreferenee”。“Type”结构规定此字段中所包含的值的类型。如果存在“ValueSetOptionalitySpec”,它规定在信息客体定义中可以不规定此字段,或在DEFAULT情况时,规定省略随后的“ValueSet”,它应是此类型的子类型。
9.10“VariablTypeValueSetFieldSpec”规定此字段是可变类型值集合字段(见3.4.22):
VariableTypeValueSetFieldSpee::=
valuesetfieldreference
FieldName
ValueSetOptionalitySpec?
此字段的名称是“valuesetfieldreference”。“Field Name”(见9.14)与要规定的类别有关。它应是类型字段l此类型字段或是作为值集合字段处于相同的信息客体中,或通过客体字段链(其引用出现在“FieldName”)链接。此类型字段应包含值的类型。(字段引用出现在“FieldName”中的所有链接字段应是客体字段.)如果存在“value setOptionalitySpee”,它规定在信息客体定义中可以省略此值集合,或
在DEFAULT情况时,它规定省略随后的“Valueset”。“ValueSetOptionalitySpec”应是这样:
a) 如果由“FieldName"表示的类型字段有OPTIONAL的"TypeOptionalitySpec”,那么,“Value-SetoptiOnalitySpec”也应是OPTINAL:以及
b) 如果“ValueSetoptiOnalitySpec”是“DEFAULT ValueSet”,那么,由“FieldName”表示的类型字段应有“DEFAULT Type”的“TypeOptionality Spec”,并且“ValueSet”应是此类型的子类型。
9.11 "ObjectFieldSpee”规定此字段是信息客体字段(见3,4,l 1):
ObjectFieldSpec::=
objectfieldreference
DefinedObjectClass
ObjectOptionalitySpec?
ObjectOptionalitySpec:: =OPTIONAL∣DEFAULT Object
此字段的名称是“objectfieldreferencen. "DefinedObjeetClass”引用此字段(它可以是当前被定义的“ObjectClass”中所包含的客体类别。如果存在“Object OptionalitySpec”,它规定可以在信息客体定义中不规定此字段,或在DEFAULT情况时,规定省略随后的“object”(它应是“DefinedObjectClass”的客体)。
9. 12 =ObjectSetFieldSpec”规定此字段是信息客体集合字段(见3.4.13):
ObjectSetFieldSpec::=
objectsetfieldreference
DefinedObjectClass
ObjectSetOptionalitySpec?
ObjectSetOptionlitySpec::=OPTIONAl.I DEFAULT ObjectSet
此字段的名称是“objeetsetfieldre ference”。“DefinedObjectClass”引用此字段中包括的客体类别。如果存在“Obj ectSetOptionalitySpec”,它规定可以在信息客体定义中省略此字段,或在DEFAULT情况时,规定省略随后的“ObjectSet”(见12.3)。其所有客体应是“DefinedObjectClass”的客体。
9.13结构“primitiveFieldName”用来标识与包含其规范的类别有关的字段:
PrimitiveFieldName::=
Typefieldreference ∣
Valuefieldreference ∣
Valuesetfieldreference ∣
Objectfieldreference ∣
objectset fieldreference
在类别定义中所规定的所有字段名称应是各不相同的。
9.14结构“FieldName”用来标识与直接包含此字段规范的某个类别有关的字段,或具有一系列链接
字段链接到此包含类别的某个类别有关的字段。此链由用句点隔开的“PrimitiveFieldName”列表指明。 FieldName::=PrimitiveFieldNam”,”+
9.15如果有如下情况的一系列链接字段(见3.4.15)规范(长度为1或更长):
a) 第一个处于被定义的类别中而不是被定义的字段;和
b) 每个相继的规范是定义前一个规范的类别中的字段;及
c) 最后一个是使用被定义的类别加以定义。
那么,至少有一个字段规范应具“ObjectOptionalitySpec”或“ObjectSetOptionalitySpec”(视合适而定)。
注:这是为防止递归的信息客体类别定义(一般情况下是允许的)。对此递归类别的信息客体具有无限的表示.
9.16实例
在3.4.10中作为示例的菲正式描述的信息客体类别的展开形式可以定义如下:
OPERATION::=CLASS
{
&L ArgumentType OPTIONAL,
&ResultType OPTIONAL,
&Errors ERROR OPTIONAL,
&Linked OPERATION OPTIONAL,
&resultReturned BOOLEAN DEFAULT TRUE,
&LCode INTEGER UNIQUE
}
ERROR::=CLASS
{
&ParameterType OPTIONAL,
&code INTEGER UNIQUE
}
注1:此示例是基于远程操作标准的操作和差错概念,但是作为示例,它被简化了。
注2:对此类别规定的字段包括2个类型字段(&ArqumentType和&ResultType),2个客体集合字段(&Errors和
&Linked)和2个值字段(&result Returned和&code).后者是标识符字段,
注3:由OPRATIONS构成的任何信息客体集合必须是对&code字段,此集合中没有2个客体具有相同的值.(这
同样适用于ERRORS的客体集合.)
注4:OPERATION信息客体类别包括一系列9.15所描述的链接字段。本链长度为了并通过&linked构成,它借
助OPERATION加以(递归)规定。然而,这是十分有效的,因为将OPERATION赋于此字段(见9.15).
注5:这些示例中没有一个示仞包括“withSyntaxSpec”。但是在I0.13中提供这样做的相应示例。
10 语法表
10.1经常的情况是单独一个规范定义信息客体类别,对多种信息客体而有许多独立的规范分别予以
定义。为此类别信息客体定义提供用户友好的记法,这可能对类别的定义者是合适的。
10.2本章规定信息客体类别的制定者用以对此类别信息客体规范定义具体类别定义语法的记法。
10.3此记法是语法结构“SyntaxList”,它出现在于语法结构“ObjectClassDefn”(见9.3)之中。
10.4“SyntaxList”规定被定义类别的一个信息客体定义的语法。在下列各条中,此语法以“De-
finedSyntax”表现。
注:此规范的特征是由“SyntaxList”定义的任一语法结构的末端(“DefinedSyntax"的实例)可由下列各条确定。
a)无ASN.1说明;
b)将字符串值处理成文字符号;
c)要求一个初始的“{”,嵌入成对的“{”和“}”,并终止于一个未配对的“}”。
10.5“SyntaxList”规定出现在“DefinedSyntax"(见11.6)中的“DefinedSyntaxToken”的顺序:
SytaxList::″{″TokenOrGroupSpec empty+″) ″
TokenOrGroupSpec::=RequiredToken l OptionalGroup
OptionalGroup::= ″[″TokenOrGroupSpec empty+″] ″
RequiredToken::=
Literal ∣
PrimitiveFieldName
注1:“SyntaxList”的编写者没有提供BNF的全部功能.记法功能差不多等于通常用于规定命令解释程序的命令
行语法的权力.给出可能的“RequiredToken”的表,在于准许他们这样做,将一串或几串符号置于方括号中, 使
得它们成为任选的。
注2:当分析“SyntxList”时,“[[”(或“]]”)的存在,不能分别解释为GB/T 16262.1--2006的11. 19和11.20中规定的词项“[[”(或“]]”),但可分别解释为“P和“[”(或“]”和“]”)两个词项.
10.6用作“Literal”的“word”符号不应是下列之一:
BIT
BOOLEAN
CHARACTER
CHOICE
EMBEDDED
END
ENUMERATED
EXTERNAL
FAI,SE
INSTANCE
INTEGER
INTERSECTION
MINUS-INFINITY
NULL
OBJECT
PLUS-INFINITY
REAI
REIATIVE-OID
SEQUENCE
SET
TRUE
UNION
注:此表仅包含ASN.1备用的,表现为“Type"、“value”、“valueset”、“Obj ect”或“ObijectSet”第一个词项的字以及备用字END。使用ASN.1其他备用字不引起歧义性的,允许使用.若定义语法用于一个“word"还是“typerelerence”和“object setreterence”的环境时,首先采用当作“word”的用法.
10.7“Literal”规定此“Literal”的实际内含,它是定义语法中此位置处的“word”或逗号(“,”):
Literal::=
Word ∣
″,″
10.8每个“PrimitiveFieldName”对相应字段规定“Setting”(见11.7)的内含(在新语法中的此置)。
10.9信息客体类别的每个"PrimitiveFieldName”只能准确地出现一次。
10. 10在分析过程中,当遇到“OptionalGroup”,以及随后的词项在语法上可作为任选组中的第一个词
项时,那么认为此组是存在的。如果它在语法上不能作为任选组的第一个词项,那么,认为此组是不存
在的。
注:为避免不希望的影响,设计者通常使任选维中的第一个词项成为“Literal”.
10.11使用“DefinedSyntax”的实例是无效的,除非它对信息客体类别规定所有强制字段。
10. 12为了保证易于分析新语法和防止误用,对新语法的定义者提出如下附加限制:
a) 要求每个“OptionalGroup”内至少有一个“PrimitiveFieldName”或“OptionalGroup”)
注1:这有助于防止在信息客体任一字段中没被反映的信息明显汇集.
b) “OpfionalGroup”的使用应该使得在分析过程中决不能出现“setting”,它可能是一个以上
“Field Name”的设置;
c) 如果“OptionalGroup”以一个“Literal”开始,那么“OptionalGroup”之后的第一个符号也应是一个“Literal”,并且应与紧接在“OptionalGroup”之前所有第一个“Literal”不同;
同时对“DefinedSyntax”的使用者提出如下限制:
d) 在“Optional Group”中出现的“Defined Syntax”内存在一个“Literal”,那么此“Optional
Group”中“Primitive Field Name”的“setting”也应存在。
注2:这有助于防止在信息客体任一字段中没被反映的信息明显汇集.
注3:下列的示例是法定语法,而限制d)防止使用者书写LITERAL时没有在其之后用此任选组之一或两者:
[LITERAL[A&Sfield] [B&field2]3
10.13示例
上面9.16类别定义的示例可以装配定义语法,以提供定义这些类别实例的“用户友好”的方法(此
定义语法用于11.11的示例中):
OPERATION::=CLASS
{
&LArgumentType OPTIONAL,
&ResultType OPTIONAL,
&Errors ERROR OPTIONAL,
&Linked OPERATION OPTIONAL,
&resultReturned BOOLEAN DEFAULT TRUE,
&LoperationCode INTEGER UNIQUE
}
WITH SYNTAX
{
[ARGUMENT &ArgumentType]
[RESULT &ResultType]
[RETURN RESULT &resultReturned]
[ERRORS &Errors]
[LINKED &Linked]
CODE &operationCode
}
ERROR::=CLASS
{
&ParameterType OPTIONAL,
&errorCode INTEGER UNIQUE
}
WITH SYNTAX
{
[PARAMETER &ParameterType
CODE &errorCode
}
11 信息客体定义和赋值
11.1语法结构“ObjectAssignment”用来将规定类别的信息客体赋于引用名(“objectreference”)。此
结构是GB/T 16262.1--2006中第12章“Assignment”的替代记法之一,并定义如下:
ObjectAssignment::=
objectreference
DefinedObjectClass
“::=”
Object
11.2不应有“objectreference”递归定义(见3.4.18),以及不应有“objeetreference”递归实例(见
3.4.9)。
11.3 "DefinedObjectClass”引用的类别的信息客体是由结构“Object”定义的:
Object::=
DeiinedObject ∣
ObjectDefn ∣
ObjeetFromObject ∣
ParameterizedObject
如果“0bj eet”是:
a) “DefinedObject”,那么,此客体与所引用的客体相同;
b) “ObjeetDefn”,那么,此客体按11.4规定;
c) “ObjectFromObject”,那么,此客体按15章规定;
d) “ParameterizedObject”,那么,此客体按GB/T 16262.4-=2006的9.2规定予以定义。
11.4每个信息客体归根结底是由“ObjeetDefn”定义的;
ObjectDefn::=
DefaultSyntax ∣
DefinedSyntax
如果类别定义不包括“withSyntaxSpec”,则“ObjeetDefn”应是“DeiaultSyntax(见11.5)”,如果它包括,则“ObjectDefn”应是“DefinedSyntax”(见11.6)。
11.5 "DefaultSyntax”结构定义如下:
DefauhSyntax::=″{″FieldSetting″, ″*″}″
FieldSetting::=PrimitiveFieldName Setting
对不是OPTIONAL并且没有DEFAULT的类别定义中的每个“FieldSpee”应准确地有一个
“FieldSetting”,对其他的每个“FieldSpec”至多有一个“Fieldsetting”。“FieldSetting”可以以任意次序出现。每个“FieldSetting”中的“PrimitiveFieldName”应是相应“FieldSpec”的名称。结构“Setting”在11.7中规定。
11,6"DefinedSyntax"结构定义如下:
DelinedSyntax::= ″{″DefinedSyntaxToken empty* ″}″
DefinedSyntaxToken::=
Literal ∣
Setting
“withSyntaxSpee”中的“SyntaxList”(见第10章)确定要出现在“DefinedSyntax”中的“DefinedSyn”taxToken”的顺序。结构“setting"在11.7中规定;每一次的出现规定信息客体某个字段的设置。结构“Literal"在10.7中定义;“Literal”是人们可读性的体现。
11.7 "setting”规定所定义信息客体中某个字段的设置:
Setting::=
Type ∣
Value ∣
ValueSet ∣
Object ∣
ObjectSet
如果此字段是:
a) 类型字段,则应选用“Type”替代记法;
b) 值字段,则应选用“Value”替代记法;
c) 值集合字段,则应选用“ValueSet”替代记法;
d) 信息客体字段,则应选用“Object”替代记法;
e) 信息客体集合字段,则应选用“ObjectSet”替代记法。
注:设置将按9.5到9.12和11.8到11.9合适条款所述予以进一步限制.
11.8可变类型值字段的设置应是由相同或所链接客体的合适类型字段的规定的类型值(即,不采用开
放类型的值记法)。
11.9可变类型值集合字段的设置应是由相同或所链接客体的合适类型字段所规定的类型值集合(即,
不采用开放类型的值记法).
11.10示例(默认语法)
已知上面9.16的信息客体类别定义(不包括“WithSyntaxSpec”).此类别的实例可使用“Default-
Syntax”予以定义。例如(3.4.9给出的示例的展开形式)
invertMatrix OPERATION::=
{
&L ArgumentType Matrix,
&LResuhType Matrix.
&Errors {determinantlsZero},
&operationCode 7
}
determinantlsZero ERROR::=
{
&Lerrorcode 1
}
11.11示例(定义语法)
在10.13中,示例类别被提供给“WithSyntaxSpec”,因此,此类别实例使用“DefinedSyntax”予以定义。所以.11.10的示例要写成:
invertMatrix OPERATION::=
{
ARGUMENT Matrix
RESULT Matrix
ERRORS {determinantlsZero}
CODE 7
}
determinantIsRero ERROR::=
{
CODE 1
}
12信息客体集合定义和赋值
12.1语法结构“ObjectSetAssignment”用来将规定类别的信息客体集合赋子引用名(“objectsetreference”)。此结构是GB/T 16262. 1--2006第12章"Assignment”的替代记法之一,并定义如下:
ObjectSetAssignment::=
objectsetreference
DefinedObjectClass
“::=”
ObjectSet
12.2不应有“objectsetreference”递归定义(见3.4.18),以及不应有“objeetsetreference”递归实例(见3.4.9)。
12.3 "DefinedObjectClass”引用的类别的信息客体集合是由结构“ObjectSet”定义的:
ObjectSet::=″{″ObjectSetSpec″) ″
ObjectSetSpec::=
RootElementSetSpec ∣
RootElementSetSpec″, ″″…″∣
″…″
″…″″, ″AdditionalElementSetSpec ∣
RootElementSetSpec″, ″″…″″, ″AddhionalElementSetSpec
“RootElementSetSpec”和“AdditionalElementSetSpec”在GB/T 16262.1--2006中规定,并能利用支配类别的信息客体或集合来规定一个信息客体集合。集合中应至少有一个信息客体,除非规定了
“ObjectSetSpec”的第三个替代记法(“…”)。在后一种情况,省略号的存在指明此客体集合最初是空
的,但是通过应用程序将有客体动态地加入。
注1:“ObjeetSetSpee”引用的元素是“RootElementSetSpec” “和“AdditionalElementSetSpee”所引用元素的并集
注2:与可扩展类型,例如SET或SEQENCE.或可扩展子类型约束(相对为ASN.1规范每种型式而设置的“under-
stood”值集合是静态的)不同,可扩展客体集合在一给定的形式中能够动态地减少和增加。换言之,它可以在
使用应用程序的给定实仞中扩充和减少,好象它是动态地定义或未定义客体(进一步讨论见附录E)。
12.4涉及可扩展信息客体集合的集运算结果在GB/T 16262.1--2006第46章中规定。
12.5如果可扩展信息客体集合A在另一个客体集合定义中被引用,那么,其扩展标记和其扩展由B
继承。
12.6如果使用可扩展信息客体集合定义“ValueSetFromObject”(见第15章)则最后产生的值集合不
继承此信息客体集合的扩展标记。
12.7如果类型由表约束所约束(见GB/T 16262.3--2006的10.3条)并且表约束中所引用的客体集
合是可扩展的,则此类型不继承此客体集合的扩展标记。如果此类型预定是可扩展的,那么,应将扩展
标记明确地加到其“ElementSetSpec”。
12.8如果类型由不是可扩展的信息客体集合约束,那么,一致性实现应支持此集合中的所有信息客
体,并且不应使用非此集合中的信息客体产生编码。
12.9如果类型由可扩展信息客体集合约束.那么,一致性实现可根据对所约束类型每个实例的本地决
定选择支持是根或是扩展中的一个信息客体。不应使用可扩展信息客体集合的根或扩展中具有
UNIQUE字段值的其他信息客体产生编码,但是,另一方面,可对所要求类别的任一信息客体产生
编码。
12.10 “ObjectSetElements”记法如下:
ObjeetSetElements::=
Object ∣
DefinedObjeetSet ∣
ObjectSetFromObjects ∣
ParamenterizedObjectSet
此记法规定的元素由采用的记法确定,具体如下:
a) 如果使用“Object”替代记法,则仅规定确已赋值的客体。此客体应是支配类别的客体;
b) 如果使用其余替代记法的任一种,则规定确已赋值的集合的所有客体。这些客体应是支配类
别的客体。如果使用“DefinedObjeetSet”替代记法,则客体集合是被引用的集合。如果使用
“ObjectSetFromObjeets”替代记法,那么客体集合按第15章规定。如果使用“Parameterized
ObjectSet”替代记法,那么客体集合按GB/T 16262.4--2006的9.2条规定。
12.11示例
在3.4.12注中非正式描述的信息客体集合可规定如下:
MatrixOperations OPERATION::=
{
invertMatrix ∣
addMatrices ∣
subtractMatrices ∣
MultipIyMatrices
}
13 关联表
13.1每个信息客体或信息客体集合能够看作一个表:其关联表。关联表的每个字符元对应于信息客
体某个字段的设置,或是空的。关联表的列集合由客体或客体所属的类别确定;然而,行集合是由所涉
及的客体或几个客体确定。
13.2 已知类别的定义,列集合定义如下:
a) 此类别定义的每个字段规范有一列。每个列用对应的“PrimitiveFieldName”命名;
b) 有一个附加的列集合对应于每个链接字段规范。此列集合是由链接字段的支配类别规则的
应用确定的,但其名称以链接字段的“PrimitiveFieldName”和句号(“.”)为前缀的除外。
注:这些规则是递归的,并且是:如果类别是直接或间接自引用的,则列集合不是有限的。这不被禁止.
13.3 已知某个类别的信息客体,关联表是将13.4应用于正好包含此客体的客体集合而产生的表。
13.4已知某个类别的信息客体集合,关联表中的行集合是执行下列递归规程而产生的:
a) 客体集合中的每个客体以一行开始。在每一行中,列中由“PrimitiveFieldName”命名的字符元
将对应客体中合适字段的设置,而其他所有字符元是空的;
b) 对出现在行集合中某个行的每个链接字段:
1) 产生链接字段内容的(次级)关联表。
2) 下一步,用一批行代替链接字段所在的行,次级关联表的每个行进行一次替换。此批中的
每一行与被取代的行相同,但用次级关联表被选择行的字符元填充,至今是空的对应字符
元除外。其“FieldName”以“PrimitiveFieldName”为前缀。
注:这些规则是递归的,并且是:如果信息客体是直接或间接自引用的,则该规程将不会终止。这不被
禁止。实际上,为了知道有限长度名命字的字符元的内容才是必要的,为此可以设计一种有界限的
规程.
13.5有效“FieldName”的示例
下列“FieldName”对类别OPERATON(见10.13中定义)信息客体或信息客体集合关联表是有
16
效的:
&ArgumentType
&Errors.&Parameter
&Errors.&errorCode
&Linked. &ArgumentType
&Linked. &Linked. &operetionCode
&Linked. &Linked. &Linked. &Linked. &Linked.8LErrors. &errorCode
因为类别OPERATION是自引用的(通过&Linked字段),所以列的数目不是有限的。
14 客体类别字段类型记法
用此记法被引用的类型与字段名称的种类有关。对不同的字段名称种类,在14.2到14.5中规定
了被引用的类型。
14.1 客体类别字段类型(见3.4.16)的记法应是“ObjeetClassFieldType”:
ObjectClassFieldType::=
DeftnedObjectClass
"."
FieldName
其中,“FieldName”按9.14规定,与“DefinedObj ectClass”标识的类别有关。
14.2对类型字段,此记法定义一种开放类型,即其值集合是能用ASN.1规定的所有可能值的全集。
使用对应信息客体集合的约束规范(见GB/T 16262.3--2006)可将此类型限于一特定类型。当“Field-
Name”引用类型字段时,关于使用这种记法的下列约束适用:
a) 这种记法不应直接或间接用于信息客体类别值或值集合字段的类型定义l
b) 此记法有一个不确定的标记,因此当要求与某个其他类型不同的标记时不能使用这种记法;
注1:通过显式标记此类型通常可以避免这种限制.
注2:尽管在GB/T 16262.1--2006的48.7.3中规定对扩展标志概念上所加的元素有一个与所有已知ASN.
1类型的标记不同的标记,但是要求开放类型有一个与概念上所加的元素的标记不同的标记时,仍不应
使用此开放类型。
c)不应隐式标记这种记法;
注3:当将开放类型限于可以是一个选用类型的特定类型时应显式标记。
d)要求编码规则对赋于定义的成分的值进行编码,使得接收者无须知道此成分的实际类型就能
成功地确定与包含此成分的结构所有其他部分相对应的抽象值。
注4:“Type”结构通常使用信息客体集合和“AtNotation”予以约束(见GB/T 16262.3--2006第10章).然而,要告诫ASN.1的使用者在没有应用约束时使用这种记法可能导致实现要求的歧义性,通常应予以避免.
74.3对固定类型值或固定类型值集合字段,此记法表示出现在信息客体类别定义中此字段的规范中
的“Type”。具有客体、标识符或值引用的特定选择名,在这种产生式后的“SimpleTableConstraint”(见GB/T 16262.3--2006的10.3)也能是有效的“SingleValue”(见GB/T 16262.1--2006韵47.2)子类型约束。在这种情况下,它应被看作是“SimpleTableConst raint”。
14.4对可变类型值或可变类型值集合字段,此记法表示开放类型,其使用受14.2规定的相同限制所
支配。
14.5如果此字段是客体字段或客体集合字段,则不允许这种记法。
LobjectClassFieldValue”:
ObjectClassFieldValue::=
OpenTypeFieldVal ∣
FixedTypeFieldVal
OpenTypeFieldVal::=Type”:“Value
FixedTypeFieldVal::=BuiltinValue I ReferencedValue
XMI.ObjectClassFieldValue::=
∣ ∣14.8对由“ObjectClassFieldType”定义的类型字段或可变类型值或值集合字段,
“OpenTypeFieldVai”应用于任一“Value”。“OpenTypeFie[dVal”中的“Type”应是任一ASN.1类型,并且“Value”应是此类型的任一值。.
此类型的任一值。
typename”项中的字符序列应是信息客体类别中规定的“Type”的字符序列。单一序列和单一集合的
值记法(见GB/T 16262.1--2006表5)应由信息客体类别中规定的“Type”确定.14.13 “ObjectClassFieldType”用法示例
下列每个示例基于10.13的示例并表明(a)可能的“ObjectClassFieldType”, (b)与示例类型(a)等
价的类型(当没有约束地使用时)和(c)此类型值示例的记法。
1 (a) OPERATION. &operationCode
(b) INTEGER
(c)7
2 (a) OPERATION. &ArgumentType
(b) open type
(e) Matrix:
{{1,O,O,0},
{O,1,0,O),
1427