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