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