Section 2.2.5: my 1st reaction when reading the example is what you say
right after about grouping using round braquets instead of square ones.
The direct consequence of your example is that the operator "..." is
also defined for nil, which was not obvious before.
Hmmm. I'm not sure what you are saying.
[JM] Sorry if my writing was confusing. I was refering to the last note of
2.2.5. Let me try to rephrase.
You're defining the operator "...". It applies to an object or a
construct,
but I first wondered on what set/domain (that word again?!) the function
was defined. Indeed, the early specification doesn't state if this
operator/function is defined for the empty construct or not. A piece of
answer if provided in the last example:
"[ <MESSAGE_ID_ACK> | <MESSAGE_ID_NACK> ] ..."
reveals that "..." can be applied to an empty construct as the optional
part, marked by the square braquets, could be equal to the empty set.
Am I more clear now?