[stringtemplate-interest] proposed "ignore newlines" template syntax
Collin Fagan
collin.fagan at gmail.com
Sun Apr 3 19:52:32 PDT 2011
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/stringtemplate-interest/attachments/20110403/1fc584ba/attachment.html
More information about the stringtemplate-interest
mailing list