Olá, estou utilizando o AntLR para construir um compilador portugol e tive que criar algumas classes extras para fazer uma analise semantica mais pratica.
Construi uma classe GramaticaAST que extende de CommonTree.
package Gramatica;
import org.antlr.runtime.Token;
import org.antlr.runtime.tree.CommonTree;
public class GramaticaAST extends CommonTree {
public Simbolo simbolo;
public String expType = "";
public String expSecType = "";
public GramaticaAST(Token t) {
super(t);
}
}
No entando algo estranho esta acontecendo…
No GramaticaParser eu chamo o metodo:
root_1 = (GramaticaAST)adaptor.becomeRoot(stream_tipo.nextNode(), root_1);
que retorna uma CommonTree, porém esta gerando uma Exception:
Exception in thread “main” java.lang.ClassCastException: org.antlr.runtime.tree.CommonTree cannot be cast to Gramatica.GramaticaAST
at Gramatica.GramaticaParser.declVars(GramaticaParser.java:489)
at Gramatica.GramaticaParser.prog(GramaticaParser.java:239)
at Main.main(Main.java:34)
Entao… como esta gerando essa Exception se GramaticaAST extende de CommonTree ??