Raw string literals and Unicode escapes

Alex Buckley alex.buckley at oracle.com
Wed Feb 14 22:42:50 UTC 2018


On 2/14/2018 1:48 PM, John Rose wrote:
> P.S. I posted another version that takes a slightly different
> tack on the restriction of "cannot begin with a backquote".
> It basically lifts the whole design of Markdown code quotes.
>
> http://cr.openjdk.java.net/~jrose/jls/raw-string-pages-v5.pdf

The inclusion of RawSP means that you are fully delivering on your 
trailer from Jan 30: "Spoiler: I think I can prove that Markdown code 
quoting is appropriately minimal in its design, in a way Jim's is not."

Let me first recognize the power of RawSP in lifting TWO restrictions: 
cannot begin with a backtick, and cannot end with a backtick:

   String s = ``Hi `Bob```;       // Error, unbalanced delimiters
   String s = ``Hi `Bob`` + "`";  // OK
   String s = `` Hi `Bob` ``;     // OK with RawSP trick

However, since the JEP's goal is to allow copy-paste of arbitrary text 
without interpretation, I think the RawSP trick of assigning meaning to 
whitespace is out of place. To most people, the raw string literal:

   ` and `

denotes a perfectly good five-character string that will probably be 
inserted between two other strings. Explaining that, no, it's really a 
three-character string will not be popular.

Also, the inclusion of RawSP makes the lexing of RawStringLiteral 
ambiguous, since RawStringBody allows opening and closing whitespace. No 
doubt this can be fixed with rules involving "If the first character 
after RawSP is a backtick ...", but now being like Markdown is getting 
expensive.

Alex


More information about the amber-spec-experts mailing list