[antlr-interest] Custom AST Types

Robert Colquhoun rjc at trump.net.au
Thu Jun 12 08:05:40 PDT 2003


Hello,

Following up my own post, i have a patch of antlr-2.7.2 which fixes the 
problem:
         http://www.trump.net.au/~rjc/antlr/
It(customast.diff) was a one line patch to JavaCodeGenerator.java, the 2nd 
solution outlined below was used, possibly the same problem is in the C++ 
and C# generators, but it is late and i couldn't be bothered checking ;-)

Also at the bottom of the page is a compiled antlr.jar which has the 3 
listed patches on the page.

  - Robert

At 12:25 PM 12/06/2003 +1000, Robert Colquhoun wrote:
>Hi Everyone,
>
>Is anyone else having problems in tree walkers using custom AST types in
>conjunction with protected rules?
>
>I get ClassCastExceptions whenever the rule tries to match nothing ie ASTNULL
>
>ie
>
>options{
>      ASTLabelType=MyAST;
>}
>....
>protected elsest: (#(ELSE statementblock))?
>
>The code generated has something like:
>
>   protected final void elsest(antlr.collections.AST _t) throws
>antlr.RecognitionException {
>
>       MyAST elsest_AST_in = (MyAST)_t;  //<---ClassCastException here!
>       .....
>
>What appears to happen is that the elsest() rule is called passing ASTNULL
>when there is no else clause as part of a if/then/else statement and it
>trys to cast ASTNULL to MyAST type which breaks things.
>
>To fix
>         - either somehow change ASTNULL to be of MyAST type.
>         - as in other parts of generated code use something like:
>                 MyAST elsest_AST_in = (_t == ASTNULL) ? null : (MyAST)_t;
>
>Both require changes to antlr to solve though, otherwise i can hack my
>grammar to work around this i think.....just want to know if it is
>affecting other people at all, and thus whether i should fix antlr?
>
>   - Robert
>
>
>
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list