[stringtemplate-interest] Region Usage

Massimiliano Donini maxgbr at hotmail.it
Wed Feb 2 14:42:45 PST 2011


  Tanks for your replu Udo, it helps me to understand bette rregion from 
the StringTemplate point of view, only one more thing: in question 2 i 
would understand how i can turn on and off from the client's code point 
of view (e.g from java or better C#).
My request was ambiguos sorry, but how can i achieve same result from 
code assuming that i have one template in test1.stg that refences a 
region defined in test2.stg?

e.g.
/* test1.stg */

method(name,code) ::= <<
public void <name>() {
<@preamble()>
<code>
}
 >>

/* test2.stg */

@method.preamble() ::= <<System.out.println("enter");>>


Best Regards
Max

Il 02/02/2011 23:01, Udo Borkowski ha scritto:
> I can only talk about StringTemplate 4.0, but I assume it is same with 
> ST 3:
>
>>     1) can i define region inside the same templategroup file?
>
> Yes. Rendering this group's main() template:
> -----
> /* RegionTest.stg */
>
> method(name,code) ::= <<
> public void <name>() {
> <@preamble()>
> <code>
> }
> >>
>
> @method.preamble() ::= <<System.out.println("enter");>>
>
> main() ::= <<
> <method(name="sample",code="beep();")>
> >>
> --------
> will output:
> --------
> public void sample() {
>     System.out.println("enter");
>     beep();
> }
> --------
>
>>     2) how can i turn on/off region template (starting  from 1° wiki 
>> region example, how could i generate code with <@preamble()> and 
>> without it?)
> If you don't define the region referenced by <@preamble()> nothing 
> will be generated. E.g. back to the above example: without the 
> @method.preamble()… stuff, i.e. with this group:
> -------------
> /* RegionTest2.stg */
>
> method(name,code) ::= <<
> public void <name>() {
> <@preamble()>
> <code>
> }
> >>
>
> main() ::= <<
> <method(name="sample",code="beep();")>
> >>
> -------------
> the output will be
> -------------
> public void sample() {
>     beep();
> }
> -------------
>
>
> You may now create a new group and import the above group:
> ------------
> import "RegionTest2.stg"
>
> main() ::= <<
> <method(name="makeNoise",code="beep();")>
> >>
> ------------
> to use the method template from the "RegionTest" group. Here we get 
> the following result:
> ------------
> public void makeNoise() {
>     beep();
> }
> -------------
>
> And in this new group you may define the region, too.
> ------------
> import "RegionTest2.stg"
>
> @method.preamble() ::= <<log("enter");>>
>
> main() ::= <<
> <method(name="makeNoise",code="beep();")>
> >>
> ------------
> resulting in this output:
> ------------
> public void makeNoise() {
>     log("enter");
>     beep();
> }
> -------------
>
>
> Hope this helps,
>
> Udo
>
>
>
>
> On 02.02.2011, at 19:59, Massimiliano Donini wrote:
>
>> Hi, i have read following on link 
>> http://www.antlr.org/wiki/display/ST/Template+regions region usage 
>> but i'm unable to find code usage.
>> I have 2 simple questions:
>>     1) can i define region inside the same templategroup file?
>>     2) how can i turn on/off region template (starting  from 1° wiki 
>> region example, how could i generate code with <@preamble()> and 
>> without it?)
>>
>> Best Regards
>> Max
>> _______________________________________________
>> stringtemplate-interest mailing list
>> stringtemplate-interest at antlr.org 
>> <mailto: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/20110202/ff65469d/attachment-0001.html 


More information about the stringtemplate-interest mailing list