Thanks Alex. Updated.

> On 1 Mar 2023, at 18:19, Alex Buckley <[email protected]> wrote:
> 
> Ch.3 looks good.
> 
> Some points about 15.8.6:
> 
> 1. This pair of sentences is very good and clear:
> 
>  A string template with n embedded expressions (n>0) consists of the 
> alternate interleaving of n+1 fragments with the n embedded expressions. The 
> first fragment is a StringTemplateBegin token (3.13); the next n-1 fragments 
> are StringTemplateMid tokens; the last fragment is a StringTemplateEnd token.
> 
> 2. I think this sentence is a leftover and should be removed:
> 
>  A string template with n (n > 0) embedded expressions, consists of the 
> alternate interleaving of n+1 fragments (one StringTemplateBegin token, n-1 
> StringTemplateMid tokens, and one StringTemplateEnd token ) with the n 
> embedded expressions.
> 
> 3. I think this sentence is correct but should be phrased as a pair of 
> sentences, like in #1 above.
> 
>  A text block template with n (n > 0) embedded expressions, consists of the 
> alternate interleaving of n+1 fragments (one TextBlockTemplateBegin token, 
> n-1 TextBlockTemplateMid tokens, and one TextBlockTemplateEnd token) with the 
> n embedded expressions.
> 
> 4. Consider this sentence:
> 
>  A string template with n embedded expressions and n+1 fragments has n+1 
> fragment strings, where each fragment string is the content of the 
> corresponding fragment (3.13).
> 
> (In the previous draft, we said the same thing, worded differently: From the 
> fragments in a string template, a sequence of corresponding fragment strings 
> is derived by taking the content of each fragment token (3.13).)
> 
> However, the _content_ of the corresponding fragment in 3.13 does not have 
> its escape sequences interpreted. I'm pretty sure you want its escape 
> sequences to have been interpreted. For that, you need 15.8.6's fragment 
> strings to lean on this artifact from 3.13:
> 
>  The string represented by a StringTemplateBegin, StringTemplateMid, or 
> StringTemplateEnd token is given by its content with every escape sequence 
> interpreted, as if by execution of String.translateEscapes on the content.
> 
> 5. I'm not a fan of the factoring whereby escape sequence interpretation 
> happens for a string template's tokens in 3.13 but a text block template's 
> tokens in 15.8.6. I realize why text block templates are more complicated, 
> but I would like to avoid the reader flipping between the sections and saying 
> "Didn't we do this already?" Perhaps we just defer string templates' escape 
> sequence interpretation to 15.8.6. That said, refactoring this topic is not 
> urgent, and can wait until after preview.
> 
> Alex
> 
> On 3/1/2023 6:17 AM, Gavin Bierman wrote:
>> Thanks Alex (and apologies for missing your earlier email - don’t know what 
>> happened there).
>> Updated spec available at:
>> https://cr.openjdk.org/~gbierman/jep430/latest/ 
>> <https://cr.openjdk.org/~gbierman/jep430/latest/>
>> Thanks,
>> Gavin
>>> On 28 Feb 2023, at 18:37, Alex Buckley <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> 1. Escape sequences are legal in fragments, so 3.10.7 should open with 
>>> something like:
>>> 
>>> "In character literals, string literals, and text blocks (§3.10.4, §3.10.5, 
>>> §3.10.6), +and in fragments of a template (3.13),+ the escape sequences 
>>> allow for ..."
>>> 
>>> 
>>> 2. 3.10.7 goes on to say that "An escape sequence in the content of a 
>>> character literal, string literal, or text block is interpreted by ...". 
>>> This statement constitutes one half of a two-part exposition of 
>>> interpretation, the other half being found in 3.10.4/5/6 where 
>>> `String.translateEscapes` is mentioned. Two-way exposition is hard to 
>>> write, expensive to maintain, but helpful to read. 3.13 is upfront that 
>>> StringTemplateBegin, StringTemplateMid, and StringTemplateEnd tokens enjoy 
>>> interpretation, so let's get them named in 3.10.7. 3.13 is less upfront 
>>> about TextBlockTemplateBegin, TextBlockTemplateMid, and 
>>> TextBlockTemplateEnd tokens, let me set them aside for now.
>>> 
>>> 
>>> 3. 3.10.7 should end with a note that the character sequence \{ is not an 
>>> escape sequence but rather has meaning in a template (3.13).
>>> 
>>> 
>>> 4. In 3.13, consider "A fragment ~consists of~ +represents+ a 
>>> non-expression part of a template."  (Ch.3 is big on "representing", or 
>>> perhaps "denoting", things.)  This sentence would work well in the opening 
>>> paragraph of the section.
>>> 
>>> 
>>> 5. 15.8.6 needs more polishing, per the mail I sent about it last time. 
>>> I'll discuss offline.
>>> 
>>> Alex
>>> 
>>> On 2/28/2023 8:15 AM, Gavin Bierman wrote:
>>>> Following the feedback, a small update of the String Templates Spec is now 
>>>> available:
>>>> https://cr.openjdk.org/~gbierman/jep430/jep430-20230222/specs/string-templates-jls.html
>>>>  
>>>> <https://cr.openjdk.org/~gbierman/jep430/jep430-20230222/specs/string-templates-jls.html>
>>>>  
>>>> <https://cr.openjdk.org/~gbierman/jep430/jep430-20230222/specs/string-templates-jls.html
>>>>  
>>>> <https://cr.openjdk.org/~gbierman/jep430/jep430-20230222/specs/string-templates-jls.html>>
>>>> Any further comments welcomed!
>>>> Thanks,
>>>> Gavin
>>>>> On 9 Feb 2023, at 15:28, Gavin Bierman <[email protected] 
>>>>> <mailto:[email protected]> <mailto:[email protected] 
>>>>> <mailto:[email protected]>>> wrote:
>>>>> 
>>>>> Dear experts:
>>>>> 
>>>>> A new, updated spec covering JEP 430 (String Templates) is now available 
>>>>> at:
>>>>> 
>>>>> https://cr.openjdk.java.net/~gbierman/jep430/latest 
>>>>> <https://cr.openjdk.java.net/~gbierman/jep430/latest> 
>>>>> <https://cr.openjdk.java.net/~gbierman/jep430/latest 
>>>>> <https://cr.openjdk.java.net/~gbierman/jep430/latest>>
>>>>> 
>>>>> This is a substantial rewrite: it now covers more fully how templates are 
>>>>> tokenized, how to deal with ambiguities, and how text block templates are 
>>>>> dealt with.
>>>>> 
>>>>> Comments welcomed!
>>>>> Gavin

Reply via email to