On Aug 13, 2019, at 10:29 AM, John Rose <john.r.r...@oracle.com> wrote:
> 
> So I suggest deleting all of <LWS* \ LT LWS*> where LWS is either space or 
> tab, unescaped of course. 
> 

Just to be clear about my suggestion for stripping additional incidental 
whitespace before
and/or after <\ LT>, here’s an example for using a rule that expand stripping:

String story = """
    "When I use a word," Humpty Dumpty said,         \
     in rather a scornful tone, "it means just what I \
     choose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you      \
     can make words mean so many different things."
    "The question is," said Humpty Dumpty,           \
     "which is to be master - that's all."
    """;

Here, all the spaces *before* the backslashes are treated as incidental.  They 
are beneficial
in allowing the programmer to lay them out separately from the content.  The 
dots show
which spaces are incidental (in both existing rules and under my suggestion)l:

String story = """
...."When I use a word," Humpty Dumpty said,.........\
.... in rather a scornful tone, "it means just what I.\
.... choose it to mean - neither more nor less.”
...."The question is," said Alice, "whether you......\
.... can make words mean so many different things."
...."The question is," said Humpty Dumpty,...........\
.... "which is to be master - that's all."
....""";

Here is the same content but without the extra incidental spaces, which 
conforms to the current
proposal by Jim:


String story = """
    "When I use a word," Humpty Dumpty said, \
    in rather a scornful tone, "it means just what I \
    choose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you \
    can make words mean so many different things."
    "The question is," said Humpty Dumpty, \
    "which is to be master - that's all."
    """;

Equivalently, and a bit more legibly, and also within the bounds of Jim's 
proposal:

String story = """
    "When I use a word," Humpty Dumpty said,\
     in rather a scornful tone, "it means just what I\
     choose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you\
     can make words mean so many different things."
    "The question is," said Humpty Dumpty,\
     "which is to be master - that's all."
    """;

The intended content is, of course:
String story = """
    "When I use a word," Humpty Dumpty said, in rather a scornful tone, "it 
means just what I choose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you can make words mean so many 
different things."
    "The question is," said Humpty Dumpty, "which is to be master - that's all."
    """;

Incidental space could also be stripped after <\ LT> as well as before.  I 
think that the value of aligning
the backslashes is the main benefit here, so stripping *before* <\ LT> is more 
important than after.
But stripping incidentals after would allow the programmer to lay out 
continuation lines at a different
left margin, which can also be a help to readability, although the <\ s> 
sequences undo the benefit:


String story = """
    "When I use a word," Humpty Dumpty said,         \
         \sin rather a scornful tone, "it means just what I \
         \schoose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you      \
         \scan make words mean so many different things."
    "The question is," said Humpty Dumpty,           \
         \s"which is to be master - that's all."
    """;

So I’ll amend my suggestion to something a little trickier:  <LWS* \ LT> is 
stripped
as incidental whitespace, but in the case of <LWS* \ LT LWS* LWS>, the final 
character
of linear whitespace (aka horizontal whitespace) is significant content, not 
incidental.
This allows the obscuring <\ s> to be removed in the example:


String story = """
    "When I use a word," Humpty Dumpty said,         \
         in rather a scornful tone, "it means just what I \
         choose it to mean - neither more nor less.”
    "The question is," said Alice, "whether you      \
         can make words mean so many different things."
    "The question is," said Humpty Dumpty,           \
         "which is to be master - that's all."
    """;

Here is the extra incidental space marked as dots:

String story = """
...."When I use a word," Humpty Dumpty said,.........\
........ in rather a scornful tone, "it means just what I.\
........ choose it to mean - neither more nor less.”
...."The question is," said Alice, "whether you......\
........ can make words mean so many different things."
...."The question is," said Humpty Dumpty,...........\
........ "which is to be master - that's all."
....""";

The suggested rule allows the author to adjust the broken line endings for 
maximum readability,
and the elision of the incidental space flows with them.

Meanwhile, if the content has no spaces (perhaps it’s some kind fo binary 
resource) the user
cannot indent the continuation lines, but can still space out the backslash 
into a proudly separate
position from the content:

String hexData = """
            000102030405060708090a0b0c0d0e0f101112131415   \
    161718191a1b1c1d1e1f202122232425262728292a2b2c \
    2d2e2f303132333435363738393a3b3c3d3e3f40       \
    4142434445464748494a4b4c4d4e4f505152535455     \
    """;
assert !hexData.contains(" ");

The basic motivation should be clear:  Give users tools to lay out delimiters 
clearly separate
from content.  Whether it’s worth adding the extra twist to the rule about <\ 
LT> I will leave for
others to decide.

HTH.

— John

Reply via email to