| ZeroOrManyWithHangingSeparator = "(" RuleExpression ";" Separator ";" "?" ")" "*"
RuleExpression.ZeroOrManyWithHangingSeparator is the same as
ZeroOrManyWithSeparator, except that it allows for a hanging separator – a separator located at the end of the list (not followed by an element).
syntax EnumMemberDeclarations = (EnumMemberDeclaration; ","; ?)*;
This example parses code such as:
UriEscaped = 1, Unescaped, SafeUnescaped,
UriEscaped = 1, Unescaped, SafeUnescaped
that is the code either with a comma at the end of the list or without it.
ZeroOrManyWithSeparator rule would prohibit a comma at the end of the list.