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

Udo Borkowski ub at abego-software.de
Wed Apr 6 12:55:55 PDT 2011


> well,In that case we already have the <\\> "insert but ignore \n" feature. :)

Right, but without the "indent support" ;)

Ter: I looked for a documentation of the <\\> feature and found none. Can you give me a link, or update the documentation if missing? (including the cheat sheet) 

Udo


On 06.04.2011, at 19:34, Terence Parr wrote:

> well,In that case we already have the <\\> "insert but ignore \n" feature. :)
> TerOn Apr 5, 2011, at 8:09 PM, Udo Borkowski wrote:
> 
>> 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
>> 
>> _______________________________________________
>> 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



More information about the stringtemplate-interest mailing list