Alternate string literal syntax (with mixins)?

janderson askme at me.com
Thu Feb 15 21:47:40 PST 2007


Kristian Kilpi wrote:
> 
> String literals with mixins are a bit awkward sometimes (editor 
> highlighting etc).
> 
> Some special marks -- I use @{ }@ here -- could be used to mark a part 
> of a source file as a string literal, just like /* */ marks a part of 
> code as a comment. For example:
> 
>   mixin(
>     @{
>       //this is a string literal block
>       if(...) {
>         ...
>       }
>     }@
>   );
> 
> The @{ }@ marks have a close relation, of course, with quotation marks 
> "". But because there is a starting mark and an ending mark, you can 
> nest them. (And because they are used to mark a part of a file as a 
> string literal, they are not actually the part of the 'working code' 
> just like the "" literals are, if you get what I'm trying to say.)
> 
> E.g.
> 
>   alias @{
>     str = @{ foo }@ ~ @{ bar }@;
>     str ~= "blah";
>     if(...) {
>       ...
>     }
>   }@ MyCode;
> 
>    mixin(MyCode);

Just a thought what about keeping this in the same spirit of D's other 
string prefixes. ie

char[] string = l"


";

I do like the label idea suggested before:

Perhaps:

char[] string = :something"


":something;

Which would work with the  other postfixes:

char[] string = r:something"


"d:something;

And you could also choose not to label it:

char[] string = :"


":;

Best of all worlds.

-Joel



More information about the Digitalmars-d mailing list