Multiline string literal improvements

Igor stojkovic.igor at gmail.com
Tue Oct 10 21:04:47 UTC 2017


D has a very nice feature of token strings:
string a = q{
                looksLikeCode();
             };

It is useful in writing mixins and to have syntax highlighting in 
editors. Although I like it, it is not something I ever felt like 
missing in other languages. What I do always miss are these two 
options:

1. Have something like this:

string a = |q{
                  firstLine();
                  if (cond) {
                      secondLine()
                  }
               };

mean count the number of whitespace characters at the start of a 
first new line of string literal and then strip up to that many 
whitespace characters from the start of each line.

2. If we just put for example "-" instead of "|" in above example 
have that mean: replace all whitespace with a single space in 
following string literal.

I think it is clear why would these be useful but if you want me 
I can add a few examples. This would not make any breaking 
changes to the language and it should be possible to simply 
implement it wholly in the lexer.

So what do think?


More information about the Digitalmars-d mailing list