Pete Resnick wrote:
Even in 2822, it was:
fields = *(trace
*(resent-date /
[...]
resent-msg-id))
*(orig-date /
[...]
That's one <return> per *set* of <trace>.
ACK, I missed that point.
2822upd includes <optional-field> up with
the <trace> as well.
With T = trace, R = resent block, O = <optional-field>,
and A = anything else what you have now is:
fields = *( T *O *R ) *( A O )
That's almost the same as a syntactically simpler:
fields = *( [T] O R ) *( A O )
One difference is that in your nested construct a T
(trace) is required if there's any R (resent-block).
But T can be empty, and with that a "required" T has
no effect for e.g. parsers trying to consider R in a
RFC 4409 8.1 "may add sender" scenario.
The complete R or worse *R concept is ugly like hell.
Frank