Re: obs-commas

"Frank Ellermann" <[email protected]>
Newsgroups gmane.ietf.rfc822
Organization <http://purl.net/xyzzy>
Message-ID <[email protected]>
Pete Resnick wrote:

> Here's all of the syntax in question:
> group           =   display-name ":" [group-list] ";" [CFWS]
.......................................^..........^
ACK, I missed that the complete group-list is already optional.

> Now, here's my new obs-mailbox syntax:
> obs-mbox-list   =   *([CFWS] ",") mailbox *("," [mailbox / CFWS])

Looks good, unnecessary [CFWS] omitted using the leading and
trailing [CFWS] in <mailbox>, and at least one <mailbox> as
you wanted it...

> The only thing not described by the above is a mailbox list
> with no mailboxes at all (i.e., simply commas with optional
> surrounding CFWS).

...or maybe not.  If no <mailbox> at all is okay, how about:

  obs-mbox-list   =   [mailbox] *("," [mailbox / CFWS])

But in -05 with <obs-commas> it was "at least one <mailbox>",
either in <mailbox-list> or in <obs-mbox-kist>.  The former
with one comma per <mailbox> pair, and the latter allowing
unnecessary commas.  

Parsing left to right it's no problem if each <mailbox-list>
also matches <obs-mbox-list>.

> That's:
> obs-group-list  =   1*([CFWS] ",") [CFWS]

> I'm happy to simplify if possible. But so far, that's the
> best I can do.

Maybe I now see what you are talking about:  If you drop the
"at least one" from <obs-mbox-list> you could eliminate the
complete <obs-group-list>.

Except from the one case covered by "1" in <obs-group-list>,
which still gives you "if nothing else at least one comma".

But you don't need "at least one comma", because "nothing"
and "only CFWS" are already covered (and not obsolete):

1: "nothing" is "no <group-list>" in [group-list] of <group>.
2: "only CFWS" is the explicit CFWS in <group-list>
3: "one <mailbox>, no comma" is covered by <mailbox-list>
4: "more than one <mailbox>, good commas" is <mailbox-list>
5: "more than one <mailbox>, ugly commas" is <obs-mbox-list>
6: "no <mailbox>, but commas" does not need "at least one".

Putting it all together I get:

| group           =   display-name ":" [group-list] ";" [CFWS]
: group-list      =   mailbox-list / CFWS
| mailbox-list    =   (mailbox *("," mailbox)) / obs-mbox-list
: obs-mbox-list   =   [mailbox] *("," [mailbox / CFWS])

No more <obs-group-list>, and if that's really okay you could
also get rid of <group-list>:

: group           =   display-name ":" [mailbox-list] ";" [CFWS]
: mailbox-list    =   (mailbox *("," mailbox)) / CFWS / obs-mbox-list
: obs-mbox-list   =   [mailbox] *("," [mailbox / CFWS])

 Frank
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.