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