Concatenation

Concatenation:
    CSN1String BasicString ExponentExpr*
|   CSN1String BASIC_NAME ExponentExpr*          
        

There is no operator for the concatenation operation. Instead, one simply lists the things to be concatenated together.

The lack of a concatenation operator, together with the allowance of spaces in a BASIC_NAME gives rise to an ambiguity: is "foo bar" a single BASIC_NAME or the concatenation of two names? To resolve this, we let BASIC_NAME match as many characters as possible, and then in contexts where there is possible ambiguity, we report an error if a multi-word name is used.

The BASIC_NAME in the second alternative shall not be a multi-word name.