在 ASN.1 中,值分配语法需要一个标识符、一个类型引用和一个值。如:
age INTEGER ::= 45
或者
name UTF8String ::= "bob"
通常,用户定义的类型将是更复杂的类型,例如 SEQUENCE 或具有约束的类型。假设我们有一个这样的 SEQUENCE 类型:
MySequence ::= SEQUENCE {
age INTEGER,
name UTF8String
}
然后我可以创建一个值分配,如:
seq MySequence ::= { 50, "bob" }
但是假设MySequence
从未定义过。在创建值分配时动态定义类型是否合法?例如,我可以说:
seq SEQUENCE { age INTEGER, name UTF8String } ::= { 50, "bob" }
我意识到这种语法很丑陋,但我只是在问这是否被 ASN.1 标准允许。
或者如何在值分配中动态创建子类型?是否是有效的 ASN.1 语法说:
int INTEGER (0..10) ::= 5