private void geraCodigoInspecao(NoPara noPara) throws ExcecaoVisitaASA { NoExpressao incremento = noPara.getIncremento(); if (incremento != null) { NoOperacaoAtribuicao atribuicao = (NoOperacaoAtribuicao) incremento; if (atribuicao.getOperandoEsquerdo() instanceof NoReferenciaVariavel) { NoReferenciaVariavel referencia = (NoReferenciaVariavel) atribuicao.getOperandoEsquerdo(); NoDeclaracao origem = referencia.getOrigemDaReferencia(); if (origem instanceof NoDeclaracaoVariavel) { Utils.geraCodigoParaInspecao((NoDeclaracaoVariavel) origem, saida, nivelEscopo, false); } else if (origem instanceof NoDeclaracaoParametro) { Utils.geraCodigoParaInspecao((NoDeclaracaoParametro) origem, saida, nivelEscopo); } } } }
@Override public Void visitar(NoPara no) throws ExcecaoVisitaASA { saida.append("for("); if (no.getInicializacao() != null) { no.getInicializacao().aceitar(this); } saida.append("; "); // separador depois da inicialização do for no.getCondicao().aceitar(this); saida.append("; "); // separador depois da c if (no.getIncremento() != null) { no.getIncremento().aceitar(this); } saida.append(")").println(); // fecha o parênteses do for String identacao = Utils.geraIdentacao(nivelEscopo); saida.append(identacao).append("{").println(); geraVerificacaoThreadInterrompida(); if (gerandoCodigoParaInspecaoDeSimbolos) { geraCodigoInspecao(no); } visitarBlocos(no.getBlocos()); saida.println(); saida.append(identacao).append("}").println(); return null; }