ASN.1值表示法和类型引用

时间:2013-09-26 16:32:08

标签: asn.1

在ASN.1中,您可以声明值引用,如:

<identifier> <Type Reference> ::= <Value Notation>

例如:

cost INTEGER ::= 123

“类型引用”组件可以是内置类型,也可以是用户定义的类型。我的问题是,当提到用户定义的类型时,ASN.1是否要求必须已经定义了类型? (假设直到稍后才定义)。例如,以下是有效的ASN.1语法:

cost MyIntType ::= 50
MyIntType ::= INTEGER (0..100)

请注意,在类型赋值中声明 之前,值{m>}中会引用MyIntType

这有效吗?

2 个答案:

答案 0 :(得分:2)

这完全有效。在使用之前没有必要定义。

请注意,有时您无法避免这种情况,例如,如果类型之间存在循环依赖关系:

A ::= some definition involving B
B ::= some definition involving A

答案 1 :(得分:0)

正如@Henry解释的那样,ASN.1允许前向引用;在类型定义中使用之前引用。

在定义相互递归的数据类型时也非常有用(实际上是必要的)。