Alternate string literal syntax (with mixins)?

janderson askme at me.com
Thu Feb 15 21:54:01 PST 2007


janderson 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);
> 
> 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


Humm would be problomatic with ()?:

Well @ or $ would be fine. I guess although it looks syntacticly ugly to me.

char[] string = @label"


"@label;

-Joel



More information about the Digitalmars-d mailing list