[stringtemplate-interest] "".."" won't work

Udo Borkowski ub at abego-software.de
Tue Apr 5 20:09:39 PDT 2011


Let's get back to the original issue: 
we want to make templates more readable that currently packed in one line (to avoid newline output):
> Here's a simple example:
> 
> ruleRef(rule,label,elementIndex,args,scope) ::= <<
> <if(label)><label>=<endif><if(scope)><scope:delegateName()>.<endif><rule.name>(<args; separator=", ">);
> >>
> 
Do we really need a new feature to achieve this? 
What about using stuff already implemented to improve readablity?

E.g. comments can be used to insert linebreaks that are visible in the template but not rendered:

ruleRef(rule,label,elementIndex,args,scope) ::= <<<!
!><if(label)><!
!><label>=<!
!><endif><!
!><if(scope)><!
!><scope:delegateName()>.<!
!><endif><!
!><rule.name>(<args; separator=", ">);
>>

With a proper syntax highlighting (which makes comments very "light") it becomes even more readable:

ruleRef(rule,label,elementIndex,args,scope) ::= <<<!
!><if(label)><!
!><label>=<!
!><endif><!
!><if(scope)><!
!><scope:delegateName()>.<!
!><endif><!
!><rule.name>(<args; separator=", ">);
>>

These comments can even be used to do indents, improving the readability again:

ruleRef(rule,label,elementIndex,args,scope) ::= <<<!
!><if(label)><!
    !><label>=<!
!><endif><!
!><if(scope)><!
    !><scope:delegateName()>.<!
!><endif><!
!><rule.name>(<args; separator=", ">);
>>
This final example looks very readable to me, even more readable than the template we would write with the suggested "newline eating" syntax:
> ruleRef(rule,label,elementIndex,args,scope) ::= <<<
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> >>>

Of cause this "comment formatting" involves a little more typing, but this can easily handled by any good editor (Ter: "... emacs is your friend ;)").

With this idea in mind, do we really need to add this "newline eating" feature? 

To me the benefit does not look that big. As I have not yet written any real long "one liners" I may not be the right person to judge this, so what do others think?

Implementing the "line eating" feature has quite its difficulties, as we noticed already. I have no doubt these issues can be solved, however I assume "StringTemplate's overall design simplicity" (Sam Harwell) will be bigger without it. 


Udo

On 05.04.2011, at 18:31, Terence Parr wrote:

> yeah it was hassle flipping << >> to <% %> in Java.stg templates, though I'd need to insert [..] or whatever just the same.  still open for debate :)
> T
> On Apr 5, 2011, at 5:03 AM, Udo Borkowski wrote:
> 
>> Following this thread makes me think if extending the syntax through new template delimiters ("", """, <% or whatsoever) is really a good idea. 
>> 
>> I assume we run into less problems (conflict with old syntax, escape issues etc.) with just sticking to the old ones ("…"  and <<…>>) and just add the optional "[…]" template prefix, as already suggested earlier.
>> 
>> t() ::= […]<<
>> .
>> .
>> .
>> >>
>> 
>> Udo
>> 
>> 
>> 
>> On 05.04.2011, at 06:15, Terence Parr wrote:
>> 
>>> oh right.  might work.
>>> Ter
>>> On Apr 4, 2011, at 8:06 PM, Sam Harwell wrote:
>>> 
>>>> If you chose % as your delimiter, it would still be fine. The template starts at <% and ends at %>.
>>>>  
>>>> <%%x%%>
>>>>  
>>>> Sam
>>>>  
>>>> From: Collin Fagan [mailto:collin.fagan at gmail.com] 
>>>> Sent: Monday, April 04, 2011 9:29 PM
>>>> To: Sam Harwell
>>>> Cc: Terence Parr; stringtemplate-interest List
>>>> Subject: Re: [stringtemplate-interest] "".."" won't work
>>>>  
>>>> I have no problem with <%...%> but that eliminates one character available as a valid delimiters right?
>>>> 
>>>> I can't set the starting and ending delimiters to '%' and have %%...%% can I?
>>>> 
>>>> Collin
>>>> 
>>>> On Mon, Apr 4, 2011 at 8:39 PM, Sam Harwell <sharwell at pixelminegames.com> wrote:
>>>> If you want to emit the literal %> in the output, you can write it as %\>,
>>>> using the existing escape sequence without breaking anything.
>>>> 
>>>> Sam
>>>> 
>>>> -----Original Message-----
>>>> From: stringtemplate-interest-bounces at antlr.org
>>>> [mailto:stringtemplate-interest-bounces at antlr.org] On Behalf Of Terence Parr
>>>> Sent: Monday, April 04, 2011 8:07 PM
>>>> To: stringtemplate-interest List
>>>> Subject: Re: [stringtemplate-interest] "".."" won't work
>>>> 
>>>> 
>>>> On Apr 4, 2011, at 6:05 PM, Sam Harwell wrote:
>>>> 
>>>> > I guess with <%..%>, the escape character is still \>?
>>>> >
>>>> > This should work fine.
>>>> 
>>>> Well, shouldn't need any escape really...should be \%?
>>>> Ter
>>>> _______________________________________________
>>>> stringtemplate-interest mailing list
>>>> stringtemplate-interest at antlr.org
>>>> http://www.antlr.org/mailman/listinfo/stringtemplate-interest
>>>> 
>>>> _______________________________________________
>>>> stringtemplate-interest mailing list
>>>> stringtemplate-interest at antlr.org
>>>> http://www.antlr.org/mailman/listinfo/stringtemplate-interest
>>>>  
>>> 
>>> _______________________________________________
>>> stringtemplate-interest mailing list
>>> stringtemplate-interest at antlr.org
>>> http://www.antlr.org/mailman/listinfo/stringtemplate-interest
>> 
> 
> _______________________________________________
> stringtemplate-interest mailing list
> stringtemplate-interest at antlr.org
> http://www.antlr.org/mailman/listinfo/stringtemplate-interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/stringtemplate-interest/attachments/20110406/44eb0fa6/attachment.html 


More information about the stringtemplate-interest mailing list