DIP 1026---Deprecate Context-Sensitive String Literals---Community Review Round 1

Dennis dkorpel at gmail.com
Tue Dec 3 23:51:13 UTC 2019

On Tuesday, 3 December 2019 at 23:13:16 UTC, aliak wrote:
> 1) Are there any examples of strings that don't have an 
> in-source code workaround if this dip is accepted?

Considering escape sequences such as "\x0B" and string 
concatenation with ~, any string literal can still be expressed. 
The generic, most non-intrusive transformation I can think of 
would be:
Given an identifier delimited string, check which of < ( { [ has 
the least amount of mismatched brackets. Then convert the string 
literal to a bracket delimited string with all unmatched brackets 
concatenated in:
((["`[<< { ((["`[<<

// only one mismatching {, so it becomes

q"{((["`[<< }" ~ "{" ~ q"{ ((["`[<<}"

(This is a worst case example, in practice I expect there to be 
not so many mismatched brackets and quotes/back ticks in a string 

> 3) how much less complex does the parser actually get? Is it 
> trivial?

In dmd not so much, it would just make this function a bit 

For implementations of a D lexer in lexer/parser generators (e.g. 
http://dinosaur.compilertools.net/lex/index.html), it means only 
needing context-free constructs to express everything.

More information about the Digitalmars-d mailing list