Alternate string literal syntax (with mixins)?

Kristian Kilpi kjkilpi at gmail.com
Sun Feb 11 09:00:29 PST 2007


On Sun, 11 Feb 2007 18:39:35 +0200, Johan Granberg  
<lijat.meREM at OVE.gmail.com> wrote:
> 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);
>
> Wouldn't it be a better solution if the escape syntax you described
> represented a custom format that mixins was thought to handle? What I'm
> thingking is something like lisps quotes, then the escaped code could be
> tokenized and we could modify tokens instead of strings. (for a small
> fraction of cases the string might be better but then we could have the
> current syntax)


Sounds like a good idea. :) That would/could simplify things. Hmm, I'm  
wondering if tuples could be used here?



More information about the Digitalmars-d mailing list