ASN.1
Previous: Subtype Notation and Value Sets Up: Additional Features Next: Macros


Recursion

  Recursion, a common feature in high-level languages, is also a feature in ASN.1. Data types, such as a set of sets, records with one or more components being a record, linked lists, and trees, are better understood when viewed as recursive structures. ASN.1 allows definitions of these kinds of data types and values to include recursion. For example, the linked list of integer values, each of whose nodes can be a linked list of integer values, is specified:

  LinkedList  ::=  SEQUENCE
         {
          label     IA5String,
          value     CHOICE
            {
             nodevalue    INTEGER,
             node         SEQUENCE OF LinkedList
            }
         }


Figure: Instance of a linked list of linked lists.

Assume L, shown in the following Figure, is an instance of LinkedList consisting of four nodes labeled A,B,C,D, where B is a linked list of three nodes B1,B2,B3 and B3 is a linked list of two nodes B31, B32. Header nodes are not included in this example. Then, the instance can be represented:

  {
   label    "L",
   value    node
     {
       {label     "A", value nodevalue 75},
       {label     "B",
        value     node
          {
            {label   "B1", value nodevalue 60},
            {label   "B2", value nodevalue 50},
            {label   "B3",
             value   node
               {
                 {label   "B31", value nodevalue 48},
                 {label   "B32", value nodevalue 46}
               }
            }
          }
       },
       {label   "C", value nodevalue 35},
       {label   "D", value nodevalue 15}
     }
  }

This site was developed from:
Computer Networks and Open Systems
An Application Development Perspective

by
Lillian N. Cassel
Richard H. Austing

Jones & Bartlett Publisher
ISBN 0-7637-1122-5

This site is hosted by:


Real World ASN.1 and XML Solutions