2014-06-16 3 views
0

En ASN.1, il est valide pour écrireASN.1 Spécification de la taille Constraint

(SIZE(10)) 

Est-ce équivalent à (SIZE(10..10)), (SIZE(0..10)) ou (SIZE(1..10))? Ou autre chose? Où est-ce spécifié dans la norme?

Il semble que tous les analyseurs l'interprètent comme (SIZE(10..10)). Cependant, je n'ai pas pu trouver de spécification pour cela.

Répondre

2

en abrégé: SIZE(10) contraintes la taille du type à 10 (et seulement 10).


Explication détaillée avec des références à la norme:

contrainte de taille est définie à l'article 47.5 de X.680

En particulier

SizeConstraint ::= SIZE Constraint 

Constraint est défini à l'article 45.6:

Constraint ::= "(" ConstraintSpec ExceptionSpec ")" 
ConstraintSpec ::= 
    SubtypeConstraint 
    | GeneralConstraint 

GeneralConstraint est défini dans X.682 (représentant des contraintes plus complexes), alors que SubtypeConstraint est défini dans 45,7

SubtypeConstraint ::= ElementSetSpecs 

à 46,1 (ici, il devient difficile ... Je vais essayer d'élargir le chemin que nous ne besoin)

ElementSetSpecs ::= 
     RootElementSetSpec 
    | RootElementSetSpec "," "..." 
    | RootElementSetSpec "," "..." "," AdditionalElementSetSpec 

RootElementSetSpec ::= ElementSetSpec 

ElementSetSpec ::= Unions 
    | ALL Exclusions 

Unions ::= Intersections 
    | UElems UnionMark Intersections 

Intersections ::= IntersectionElements 
    | IElems IntersectionMark IntersectionElements 

IntersectionElements ::= Elements | Elems Exclusions 

à 46,5

Elements ::= 
    SubtypeElements 
    | ObjectSetElements 
    | "(" ElementSetSpec ")" 

à 47,1

SubtypeElements ::= 
     SingleValue 
    | ContainedSubtype 
    | ValueRange 
    | PermittedAlphabet 
    | SizeConstraint 
    | TypeConstraint 
    | InnerTypeConstraints 
    | PatternConstraint 

Valeur unique est définie dans 47.2.1

SingleValue ::= Value 

Plage de valeurs est définie dans la 47.4.1

ValueRange ::= LowerEndpoint ".." UpperEndpoint 

Alors ... nous limitant la taille un type (une contrainte sur le type INTEGER), définissant un ensemble (ElementSetSpecs) de valeurs valides. Cet ensemble est spécifié à l'aide d'un langage d'expression qui inclut des unions facultatives et des intersections facultatives de Elements. Elements peut être plusieurs choses (en fonction du type de cible) comprenant soit SingleValue (indiquant une valeur unique) ou un ValueRange (indiquant une plage proche ou ouverte)

+0

Exactement ce que je avais besoin. Merci pour la réponse géniale et détaillée! –