IBM
Contents Index Previous Next



The ASN1 Syntax Productions in BNF


  1. moduleidentifier ::= BoundedFreeText
  2. typereference ::= Identifier
  3. valuereference ::= Identifier
  4. TypeAssignment ::= typereference "::=" ASN1_main_Type
  5. ASN1_main_Type ::= BuiltinType | DefinedType | SubType
  6. BuiltinType ::= BooleanType | IntegerType | BitStringType | OctetStringType
    | NullType | SequenceType | SequenceOfType | SetType | SetOfType | ChoiceType | SelectionType | TaggedType | AnyType | ObjectIdentifierType
    | CharacterStringType | UsefulType | EnumeratedType | RealType
  7. NamedType ::= Identifier ASN1_main_Type | ASN1_main_Type | SelectionType
  8. ASN1_Value ::= BuiltinValue | DefinedValue
  9. BuiltinValue ::= BooleanValue | IntegerValue | BitStringValue | OctetStringValue | NullValue | SequenceValue | SequenceOfValue | SetValue | SetOfValue
    | ChoiceValue | SelectionValue | TaggedValue | ASN1_AnyValue
    | ObjectIdentifierValue | CharacterStringValue | EnumeratedValue | RealValue
  10. NamedValue ::= Identifier ASN1_Value | ASN1_Value
  11. BooleanType ::= BOOLEAN
  12. IntegerType ::= INTEGER | INTEGER "{" NamedNumberList "}"
  13. NamedNumberList ::= NamedNumber | NamedNumberList Comma
    NamedNumber
  14. NamedNumber ::= Identifier "(" Minus Number ")" | Identifier "(" Number ")"
    | Identifier "(" DefinedValue ")"
  15. IntegerValue ::= Minus Number | Number | Identifier
  16. EnumeratedType ::= ENUMERATED "{" Enumeration "}"
  17. Enumeration ::= NamedNumber | Enumeration Comma NamedNumber
  18. EnumeratedValue ::= Identifier
  19. RealType ::= REAL
  20. RealValue ::= NumericalRealValue | SpecialRealValue
  21. NumericalRealValue ::= "{" Mantissa Comma Base Comma Exponent "}"
  22. Mantissa ::= Minus Number | Number
  23. Base ::= Two | Ten
  24. Exponent ::= Minus Number | Number
  25. SpecialRealValue ::= PLUS_INFINITY | MINUS_INFINITY
  26. BitStringType ::= BIT STRING | BIT STRING "{" NamedBitList "}"
  27. NamedBitList ::= NamedBit | NamedBitList Comma NamedBitList
  28. NamedBit ::= Identifier "(" Number ")" | Identifier "(" DefinedValue ")"
  29. BitStringValue ::= Bstring | Hstring | "{" IdentifierList "}" | "{" "}"
  30. IdentifierList ::= Identifier | IdentifierList Comma Identifier
  31. OctetStringType ::= OCTET STRING
  32. OctetStringValue ::= Bstring | Hstring
  33. NullType ::= NULL
  34. NullValue ::= NULL
  35. SequenceType ::= SEQUENCE "{" ElementTypeList "}"
  36. ElementTypeList ::= | ElementType | ElementTypeList Comma ElementType
  37. ElementType ::= NamedType | NamedType OPTIONAL | NamedType DEFAULT ASN1_Value | COMPONENTS OF ASN1_main_Type
  38. SequenceValue ::= "{" ElementValueList "}" | "{" "}"
  39. ElementValueList ::= NamedValue | ElementValueList Comma NamedValue
  40. SequenceOfType ::= SEQUENCE OF ASN1_main_Type | SEQUENCE
  41. SequenceOfValue ::= LBRACE ASN1_ValueList RBRACE | LBRACE RBRACE
  42. ASN1_ValueList ::= ASN1_Value | ASN1_ValueList Comma ASN1_Value
  43. SetType ::= SET "{" ElementTypeList "}"
  44. SetValue ::= "{" ElementValueList "}" | "{" "}"
  45. SetOfType ::= SET OF ASN1_main_Type | SET
  46. SetOfValue ::= "{" ASN1_ValueList "}" | "{" "}"
  47. ChoiceType ::= CHOICE "{" AlternativeTypeList "}"
  48. AlternativeTypeList ::= NamedType | AlternativeTypeList Comma NamedType
  49. ChoiceValue::=Identifier : Value
  50. SelectionType ::= Identifier "<" ASN1_main_Type
  51. SelectionValue ::= NamedValue
  52. TaggedType ::= Tag ASN1_main_Type | Tag IMPLICIT ASN1_main_Type
    | Tag EXPLICIT ASN1_main_Type
  53. Tag ::= "(" Class ClassNumber ")"
  54. Class ::= UNIVERSAL | APPLICATION | PRIVATE | empty
  55. ClassNumber ::= Number | DefinedValue
  56. TaggedValue ::= ASN1_Value
  57. AnyType ::= ANY | ANY DEFINED_ BY Identifier
  58. ASN1_AnyValue ::= ASN1_main_Type Colon ASN1_Value
  59. ObjectIdentifierType ::= OBJECT IDENTIFIER
  60. ObjectIdentifierValue ::= "{" ObjIdComponentList "}"
    | "{" DefinedValue ObjIdComponentList "}"
  61. ObjIdComponentList ::= ObjComponent | ObjIdComponentList ObjComponent
  62. ObjComponent ::= NameForm | NumberForm | NameAndNumberForm
  63. NameForm ::= Identifier
  64. NumberForm ::= Number | DefinedValue
  65. NameAndNumberForm ::= Identifier "{" NumberForm "}"
  66. CharacterStringType ::= Identifier
  67. CharacterStringValue ::= Cstring
  68. UsefulType ::= Identifier
  69. SubType ::= ParentType SubtypeSpec | SET SizeConstraint OF ASN1_main_Type | SEQUENCE SizeConstraint OF ASN1_main_Type
  70. ParentType ::= ASN1_main_Type
  71. SubtypeSpec ::= "(" SubtypeValueSetList ")"
  72. SubtypeValueSetList ::= SubtypeValueSet | SubtypeValueSetList `|'
    SubtypeValueSet
  73. SubtypeValueSet ::= ASN1_Value | ContainedSubtype | ASN1_ValueRange
    | PermittedAlphabet | SizeConstraint | InnerTypeConstraints
  74. ContainedSubtype ::= INCLUDES ASN1_main_Type
  75. ASN1_ValueRange ::= LowerEndpoint DotDot UpperEndpoint
  76. LowerEndpoint ::= LowerEndValue | LowerEndValue "<"
  77. LowerEndValue ::= ASN1_Value | MIN
  78. UpperEndpoint ::= UpperEndValue | "<" UpperEndValue
  79. UpperEndValue ::= ASN1_Value | MAX
  80. SizeConstraint ::= SIZE SubtypeSpec
  81. PermittedAlphabet ::= FROM SubtypeSpec
  82. InnerTypeConstraints ::= WITH COMPONENT SingleTypeConstraint
    | WITH COMPONENTS MultipleTypeConstraints
  83. SingleTypeConstraint ::= SubtypeSpec
  84. MultipleTypeConstraints ::= FullSpecification | PartialSpecification
  85. FullSpecification ::= "{" TypeConstraints "}"
  86. PartialSpecification ::= "{" DotDotDot Comma TypeConstraints "}"
  87. TypeConstraints ::= NamedConstraint | NamedConstraint Comma
    TypeConstraints
  88. NamedConstraint ::= Identifier Constraint | Constraint
  89. Constraint ::= ValueConstraint PresenceConstraint
  90. ValueConstraint ::= SubtypeSpec | empty
  91. PresenceConstraint ::= PRESENT | ABSENT | OPTIONAL | empty

http://www.ibm.com/rational
Contents Index Previous Next