Intersection Procedures

The intersection operator is often used as a way of specifying length-constrained content. One operand will be a variable-length string, and the other will be simply a bit string constrained to a certain number of bits, possibly by reference to a preceding field. For example,

            LengthConstrExample ::= <len: bit(4)> { <some variable length stuff> & bit(val(len)) }
        

In cases where the Intersection is an operand of a Concatenation, we may view the length-constrained string ("some variable length stuff" in the above example) as part of the Concatenation. In other cases, the Intersection will be considered on its own. This gives rise to two separate operations for an Intersection: analysis and mapping.