Alternate string literal syntax (with mixins)?

Johan Granberg lijat.meREM at OVE.gmail.com
Sun Feb 11 08:39:35 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);

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)



More information about the Digitalmars-d mailing list