Raw string literals and Unicode escapes

Alex Buckley alex.buckley at oracle.com
Wed Feb 14 21:43:27 UTC 2018


On 2/14/2018 12:42 PM, John Rose wrote:
> On Feb 14, 2018, at 12:24 PM, Alex Buckley <alex.buckley at oracle.com
> <mailto:alex.buckley at oracle.com>> wrote:
>>
>> There is plenty of precedent for semantic rules
>
> In my draft version this is done with "where" clauses on the
> grammar rules:
>
>> RawStringLiteral:
>>
>>   RawQuote RawStringBody RawQuote
>>   where the two raw-quotes are constrained to be identical
>>
>> RawQuote:
>>   ` {`}
>>   where the preimage is constrained to be unescaped

We're dancing on the head of a pin now, but as a matter of 
specificational style I'm wary of too many rules in the grammar itself, 
especially a context-sensitive rule like raw-quotes-must-balance.

JLS 3.10.5 is a good specimen to study: there is a context-free rule in 
the grammar:

   StringCharacter:
     InputCharacter but not " or \

and a context-sensitive semantic rule:

   It is a compile-time error for a line terminator to appear
   after the opening " and before the closing matching ".

Strictly speaking, the semantic rule is unnecessary because 
InputCharacter is DEFINED to exclude the CR and LF line terminators! But 
the semantic rule makes the intent very very clear. Writing rules in 
this form also prevents the spec from becoming a soup of statements that 
are more than just observations but less than full-throated assertions.

Anyway, the draft was very useful, thanks!

Alex


More information about the amber-spec-experts mailing list