X680 14 引用类型和值定义

14 引用类型和值定义

14.1 定义类型和值的表达式:

       DefinedType ::=

              ExternalTypeReference

              | typereference

              | ParameterizedType

              | ParameterizedValueSetType

 

       DefinedValue ::=

              ExternalValueReference

              | valuereference

              | ParameterizedValue

      

       定义了引用类型和值的定义。ParameterizedType和ParameterizedValueSetType的类型和ParameterizedValue定义的值在X683中详细定义。

 

       14.2 NonParameterizedTypeName表达式:

       NonParameterizedTypeName ::=

              ExternalTypeReference

              | typereference

              | xmlasn1typename

 

       该表达式在当XML标签名称用于代表ASN.1类型的时候使用。如果XML标签名称起始字符串是“XML”,那么短横线应用被用于构成NonParameterizedTypeName结构。

      

14.3 当XML值标识用于ASN.1模块中时,如果xmlasn1typename是CHOICE, ENUMERATED, SEQUENCE, SEQUENCE_OF, SET或SET_OF,那么XMLValueAssignment(详见16.2)或XMLOpenTypeFieldVal(详见X681 14.6)的XMLTypedValue不应该使用NonParameterizedTypeName选项。

       注-在ASN.1模块中使用XML值标识加上该约束的主要原因是xmlasn1typename没有定义ASN.1类型。该规则对在编码规则(例如X693定义的XER编码)中使用该标识无效,因为由xmlasn1typename构成的XML标签名称并不用于决定编码类型。

 

       14.4 除13.19定义外,typereference,valuereference,ParameterizedType或ParameterizedValueSetType,ParameterizedValue选项不应该在ModuleBody中使用,除非ModuleBody中定义的应用的类型或值(详见16.1和16.2)是分配给typereference或valuereference。

 

       14.5 在ModuleBody中定义对应的modulereference的时候,ExternalTypeReference和ExternalValueReference只有在以下条件之一情况下才能使用:

       a) 对应typereference或valuereference已经各自分配了值和类型;或

       b) 对应typereference或valuereference在Imports部分。

从另外一个模块的Imports部分引用名称只有在那么模块的Imports部分只包含1个Symbol。

       注-这里不禁止在两个不同模块中定义相同的Symbol,然后被引入到另外一个模块。然而,如果在模块A的Imports中相同Symbol出现多次,那么那个Symbol不可以通过模块A的外部引用方式引用。

 

       14.6 外部引用用于在一个模块中请求另外一个模块定义的引用名称,定义的表达式如下:

       ExternalTypeReference ::=

              modulereference

              “.”

              typereference

 

       ExternalValueReference ::=

              modulereference

              “.”

              valuereference

       注-其他外部引用表达式(ExternalClassReference,ExternalObjectReference, ExternalObjectSetReference)在X681中定义。

 

       14.7 当引用模块是使用Imports的SymbolsImported选项定义,外部引用中的modulereference应该作为SymbolsImported中的GlobalModuleReference中的SymbolsFromModule确切一员出现。当引用模块使用Imports的empty选项定义,外部引用中的modulereference应该出现在模块的Reference定义的ModuleDefinition中。

 

       14.8 当Type使用DefinedType作为标识的一部分(例如,在SubtypeConstraint),那么DefinedType应用兼容于控制它的Type。C.6.2定义该部份。

 

       14.9 ASN.1规范中,DefinedType的每个事件都是被Type控制,DefinedType引用的某一类型的值应该与控制Type兼容。C.6.2定义该部份。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值