**Table:**

ID Codes 0, 16 and 17 are ;SPM_quot;special;SPM_quot;

- Code 0 denotes End of Contents when indefinite length form objects are used. This requires that the input stream be scanned continuously object by object until this ;SPM_quot;token;SPM_quot; is recognized, so indefinite length objects are frequently encoded as sequences of known length ;SPM_quot;fragments;SPM_quot; to improve processing overheads.
- Code 16 introduces an ordered list of items of any type.
- Code 17 introduces a set of unordered items of any type.
- Since both of the last two items allow for recursive use, and a notation for choice also exists, any set or sequence -derived structure can be built. ASN.1 Construction Rules

- BNF notation for specifying the ASN.1
- Actual ASN.1 syntax itself.
- In the BNF, not all terminal objects are quoted, following the practice of quoting symbols which may conflict with BNF but allowing plaintext to be entered unquoted where it is unambiguous. General BNF Rules used. (from X400)
- Symbols rendered in bold are nonterminals
- All other symbols are terminals.
- The Terminals ;SPM_quot;::=;SPM_quot;,;SPM_quot;|;SPM_quot;,;SPM_quot;string;SPM_quot;,;SPM_quot;identifier;SPM_quot;, ;SPM_quot;number;SPM_quot; and ;SPM_quot;empty;SPM_quot; are quoted to distinguish them from the BNF operators, and any built-in non-terminals listed immediately below them.
- Non-terminals whose first letter is capital are defined in the grammar
- Other non-terminals, of which there are four are defined here:
- non-terminal string is a sequence of zero or more characters.
- non-terminal identifier is a sequence of one or more characters chosen from the capital letters, the small letters, the decimal digits and the hyphen; the first letter must be a letter. case is significant and distinguishes one identifier from another.
- non-terminal number denotes a non-negative integer and has two forms: the first specifies the integers value in decimal (radix 10) notation, it is a sequence of one or more decimal digits. the second specifies the integers value in hexadecimal (radix 16) notation, it is a sequence of one or more hexadecimal digits followed by the letter ;SPM_quot;H;SPM_quot;. To aid clarity Binary values may be subscripted with ;SPM_quot;2;SPM_quot;, Hexadecimal values with ;SPM_quot;16;SPM_quot; and decimal left unsubscripted.
- non-terminal empty denotes the null or empty string of symbols.
- Comments are embedded in the notation, proceeded by two hyphens ;SPM_quot;--;SPM_quot; and ended by two hyphens or the end of a line.