[antlr-interest] Minor suggestion re. Java output

Jim Idle jimi at temporal-wave.com
Mon Feb 4 08:39:49 PST 2008



> -----Original Message-----
> From: Guntis Ozols [mailto:guntiso at latnet.lv]
> Sent: Sunday, February 03, 2008 1:38 PM
> To: Jim Idle
> Cc: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Minor suggestion re. Java output
> 
> > A tree is not guaranteed to be any particular type or interface as
> the
> > tree adaptor can produce anything it likes. Hence it must be an
> object.
> > This is explained in the code etc.
> >
> > Jim
> 
> Casting tree once is not that big of a deal, but tons of casting could
> be
> eliminated, plus there is no need for an option, if
> CommonTree.getChild()
> returned CommonTree.
> 
> Covariant return types are available since java 1.5 (Sept 2004).
> 
> Also, how about using enum for tokens? It would free client code of
> prefixes in
> switch statements, plus toString() would be available and more.

The original code was 1.4 compliant - I don't know how Ter feels about 
being 1.5+ compliant but it is probably OK these days. However to b 
co-variant you must be able to return things that or more or less 
derived and an adapter can do anything it likes including ignoring 
CommonTree and so on. What you probably want to do is just derive from 
CommonTree and add the method yourself. The generated code will carry on 
using (cast) but your code can use your own methods. 

I think using enums is a reasonable suggestion, but I seemed to think 
that there was some reason not to do it and I don't remember what it 
was.

Jim




More information about the antlr-interest mailing list