[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