Chapter 16. CSN.1 Described

Table of Contents

Definitions
CSN.1 Lexical Items
Module
Labels and References
BasicString
CSN1String
Alternation
Concatenation
Exponents
Exclusion
Intersection
Send Expression
Subclass Expressions

CSN.1 (Concrete Syntax Notation 1) is a notation used to describe the concrete representation of data, i.e. the encoding. It is noteworthy for its use as the notation for describing message and information element encodings in various 3GPP technical specifications. In this chapter, we describe the CSN.1 notation. In the following chapter, we describe how we map CSN.1 to ASN.1.

3GPP 24.007 Annex B describes CSN.1. In practice, however, this description is incomplete; it does not cover all of the syntax actually used by the 3GPP technical specifications. Other documents (e.g. 3GPP 44.018) reference "CSN.1 Specification, Version 2.0" and provide a dead URL. Searching the internet, we did find some additional, unofficial information on CSN.1. We also found an order form to order the specification from the author, located in France. In short, an official description of CSN.1 is not readily available. Therefore, we've made do with what information we could find and what could be inferred from usage; our interpretation of CSN.1 may therefore not be entirely according to the official specification.

The CSN.1 grammar presented in this document is not from any official source. Also, it is a simplified version of the grammar as used by our parser (e.g., the rules presented here do not reflect operator precedence).

A note on the grammar syntax: it is basically bison grammar syntax, with a shorthand for repetition: x* means zero or more x; x+ means one or more x; x? means 0 or 1 x.