[antlr-interest] StringTemplate

Joan Pujol joanpujol at gmail.com
Tue Sep 21 00:50:33 PDT 2004


I read the CodeGeneration article of Terr and I thought that I can use
for my pseudocode language compiler because I have to generate Java
code also for didactic purposes.

But I have some problems using it  from an AST generated by ANTLR.
Well, in fact, I haven't started to do it yet. But I made a simple
test code simulating it.

For example I have:

#/(DECCONST name:IDENT type:IDENT)   

And to test it I have done this simple template string (I have tried a
lot of variants, but none have worked):

group Java;

algorisme()::= <<
public class Algorisme {

   public static Main(String argv[]) {


decconst()::= <<
   <t:{final <tipus> <nom> <if(valor)> = <valor> <endif>}>;

And I write this test program simulating that I'm parsing the AST and
I have the name and type of the constant declaration.

public class TestStringTemplate  {
 public static void main(String[] args) throws Exception{

   StringTemplateGroup plantilles = new StringTemplateGroup(new

   StringTemplate algorisme= plantilles.getInstanceOf("algorisme");
   StringTemplate decconst= plantilles.getInstanceOf("decconst");

   for(int i=0;i<5;i++) {
     decconst.setAttribute("t.{nom,tipus}" , "nom"+i,"tipu"+i);




I know (or better, I think) that I can do it creating a bean. But it's
not a little unproductive to have to create a bean for everything from
the AST?
My question is what is the better way to use StringTemplate to
generate code from a ANTLR AST?
And I can use it without having to generate a bean for everithing?

My code is a Catalan pseudocode language similar to Java then I have
things like (previously translated to English):

(#IF expr THEN block ELSE block)
(#FOR expr TO expr DO block)

A lot of thanks in advance,

Joan Jesús Pujol Espinar

Yahoo! Groups Links

<*> To visit your group on the web, go to:

<*> To unsubscribe from this group, send an email to:
    antlr-interest-unsubscribe at yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:

More information about the antlr-interest mailing list