ANTLR duplicar uma árvore
Eu uso o ANTLR para construir uma árvore (CommonTree) como follwing (idioma: JAVA):
Parser.prog_return r = parser.prog();
CommonTree t = (CommonTree) r.getTree();
Agora, preciso passar "t" como parâmetro e fazer algumas alterações sem afetar a árvore original. No entanto, com o ponteiro de Java, isso não pôde ser feito, por isso preciso duplicar a árvor
Estive pesquisando na internet, a coisa mais desagradável que pude encontrar é adupTree () método da classe ASTFactor
Qualquer sugestão ou conselho sobre como obter isso seria apreciada!
EDITA@ Bart Kiers, Obrigado pela sua resposta, ele absolutamente funcion
Vejo que você está fazendo uma caminhada em profundidade pela árvore e crie um objeto CommonTree para cada nó visitad
Minha pergunta é agora, qual é a relação entre CommonToken e CommonTree e quais são esses atributos:
cTok.setCharPositionInLine(oTok.getCharPositionInLine());
cTok.setChannel(oTok.getChannel());
cTok.setStartIndex(oTok.getStartIndex());
cTok.setStopIndex(oTok.getStopIndex());
cTok.setTokenIndex(oTok.getTokenIndex());