Ejemplo n.º 1
0
  @Override
  public void visit(Call callExp) {
    if (callExp.getCallee() != null) callExp.getCallee().accept(this);
    System.out.print(".");
    if (callExp.getMethodName() != null) callExp.getMethodName().accept(this);
    System.out.print("(");

    if (callExp.getArgs() != null) {
      for (int i = 0; i < callExp.getArgs().size(); i++) {
        if (callExp.getArgs().elementAt(i) == null) continue;

        callExp.getArgs().elementAt(i).accept(this);
        if (i < callExp.getArgs().size() - 1) System.out.print(", ");
      }
    }

    System.out.print(")");
  }
 @Override
 public void visitar(Call call) {
   // obtengo el codigo graph del nodo call.
   String ident = call.toExtendedGrapher(this.cantNodosVisitados);
   // uno al codigo general.
   this.codigoGraph += ident;
   String[] delimitador = ident.split("\\[");
   // enlazo el nodo con el padre.
   String enlace = this.auxPadres.peek() + "->" + delimitador[0] + "; \n";
   // guardo el enlace en el codigo general.
   this.codigoGraph += enlace;
   // guardo el nuevo nodo en la pila
   this.auxPadres.push(delimitador[0]);
   // cuento como nodo visitado.
   this.cantNodosVisitados++;
   // visito los argumentos.
   for (Nodo argumento : call.getArgs()) {
     argumento.aceptar(this);
   }
   // ya visto el subarbol de call, elimino la raiz .
   this.auxPadres.pop();
 }