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.