I remember the (patented) parser I once worked with, and it would be written as
foo_list ::= <* bar | baz | cat ; "," *>
Yes, exactly. The actual metacharacters above are controversial, but I find the general approach acceptable.
When writing another syntax generator, I considered something like this for a while, but threw it in favor of saving the model.
The syntax diagram, of course, can perfectly represent it without unwanted repetition:

source share