[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