[stringtemplate-interest] proposed "ignore newlines" template syntax
Collin Fagan
collin.fagan at gmail.com
Mon Apr 4 09:25:48 PDT 2011
When you declare a single line template you can use " so it does feel
consistent to use the " symbol again. Would using a different symbol like '
require one to escape the new symbol in our templates? That might be a good
reason to not introduce a new character and use "" or """.
Collin
On Mon, Apr 4, 2011 at 10:31 AM, Terence Parr <parrt at cs.usfca.edu> wrote:
> Hi guys, thanks for the response...
>
> I was thinking '''...''' myself like python. I like the suggestions about
> future flexibility but after 10 years this is the first change we've needed.
> Contrast this with lots of antlr grammar rule options.
>
> maybe triple double quotes to reuse "..." symbols?
>
> t() ::= """
> ...
> """
>
> ?
>
> Ter
> On Apr 3, 2011, at 7:52 PM, Collin Fagan wrote:
>
> I think it's a great idea :) Here are some alternatives for the syntax. I'm
> not quite sure that at a glance I'd notice the difference between << and
> <<<.
>
> Double 'double quotes'
> ""...""
> ruleRef(rule,label,elementIndex,args,scope) ::= ""
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> ""
> Triple 'single quotes'
> ruleRef(rule,label,elementIndex,args,scope) ::=
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> """
>
> The < and > with some other symbols.
> <# .. #>
> ruleRef(rule,label,elementIndex,args,scope) ::= <#
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> #>
>
> <| ... |>
> ruleRef(rule,label,elementIndex,args,scope) ::= <|
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> |>
>
> <@ ... @>
> ruleRef(rule,label,elementIndex,args,scope) ::= <@
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> @>
>
> PHP style
> <?...?>
> ruleRef(rule,label,elementIndex,args,scope) ::= <?
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> ?>
>
> ASP style
> <%...%>
> ruleRef(rule,label,elementIndex,args,scope) ::= <%
> <if(label)>
> <label>=
> <endif>
> <if(scope)>
> <scope:delegateName()>.
> <endif>
> <rule.name>(<args; separator=", ">);
> %>
>
> Collin
>
>
> On Sun, Apr 3, 2011 at 6:09 PM, Terence Parr <parrt at cs.usfca.edu> wrote:
>
>> Hi. There is a proposal to create special syntax that allows arbitrary
>> formatting within a template that does not result in new lines in the
>> output. This is useful when you have a really complicated template with IFs
>> and such that needs to generate output all on the same line. Currently, this
>> can be quite challenging. There's no way to read a huge template on one
>> line. Sam Harwell and I came up with a potential solution: a new <<<...>>>
>> triple angle bracket template that ignores newlines unless you use <\n>
>> inside.
>>
>> Here's a simple example:
>>
>> ruleRef(rule,label,elementIndex,args,scope) ::= <<
>> <if(label)><label>=<endif><if(scope)><scope:delegateName()>.<endif><
>> rule.name>(<args; separator=", ">);
>> >>
>>
>> it would probably be easier to read like this:
>>
>> ruleRef(rule,label,elementIndex,args,scope) ::= <<<
>> <if(label)>
>> <label>=
>> <endif>
>> <if(scope)>
>> <scope:delegateName()>.
>> <endif>
>> <rule.name>(<args; separator=", ">);
>> >>>
>>
>> come to think of it, perhaps it should also ignore whitespace so that I
>> could indent the conditionals:
>>
>> ruleRef(rule,label,elementIndex,args,scope) ::= <<<
>> <if(label)>
>> <label>=
>> <endif>
>> <if(scope)>
>> <scope:delegateName()>.
>> <endif>
>> <rule.name>(<args; separator=", ">);
>> >>>
>>
>> We while the syntax to be close, but still recognizable as different than
>> the usual <<...>>. I believe that there has been a proposal for special
>> characters at the start of the template and the addition of keyword but I
>> think a new template and closure syntax is better.
>>
>> thoughts?
>>
>> Thanks,
>> 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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/stringtemplate-interest/attachments/20110404/dff8f5c0/attachment.html
More information about the stringtemplate-interest
mailing list