Alternate string literal syntax (with mixins)?
Johan Granberg
lijat.meREM at OVE.gmail.com
Sun Feb 11 08:51:00 PST 2007
Johan Granberg 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)
While I'm at it I might suggest using <[ and ]> as tokens instead of @{.
This is the tokens used in nemerle (if I understood their manual right) and
it is unnecessary to use a different token just because.
http://nemerle.org/Syntax_extensions
More information about the Digitalmars-d
mailing list