Your description misses one subtlety: while one or more flowed lines and
a following fixed line constitute a unit that invites re-wrapping, a
fixed line not preceeded by a flowed line does not invite re-wrapping.
I would rather treat a "flowed line" as a single entity than as
multiple entities. But you're right in that a "fixed line" and "flowed line"
should be presented differently, to the extent possible.
I also left out space stuffing.
Also, I think "paragraph" is a more intuitive term for the concept
you're calling "line".
I avoided using the term "paragraph" because that has semantics other
than for presentation.
Personally, I don't think the grammar helps much. Most readers will
pay less attention to the grammar than the text. It's more important
to clean up the text than the grammar. But if the text were cleaned
up, cleaning up the grammar would also be useful.
text-body = *( fixed-line / flowed-line )
( fixed-line / flowed-line / fragment )
fixed-line = [quote] *text-char CRLF
flowed-line = [stuffing] [quote] 1*( *text-char SP CRLF )
*text-char text-char-no-sp CRLF
fragment = [quote] *text-char
I don't like using the term "soft" for the SP CR LF sequence in a flowed
line because it's too easily confused with Q-P soft line breaks,
even though they have nothing to do with one another.
Also, I'm concerned that people will implement format=flowed differently
for objects depending on the content-transfer-encoding, when the
content-transfer-encoding should be irrelevant.
There is an additional rule that is impossible to express in the
grammar: a flowed line must have the same quote depth as the next line.
A flowed line that breaks this rule (has a quote depth different from
the next line) is to be intepreted as if it were a fixed line.
ah yes, another thing that I missed.