コード例 #1
0
  @Override
  public void ejecutar(Stack<Celda> pilaEvaluacion, GestorMemoria memoria, ContadorPrograma cp) {

    Celda cima = pilaEvaluacion.pop();
    int direccion = (Integer) cima.getDato();
    cp.setContadorPrograma(direccion);
  }
コード例 #2
0
 @Override
 public void ejecutar(Stack<Celda> pilaEvaluacion, GestorMemoria memoria, ContadorPrograma cp)
     throws ExcepcionOperacion {
   Celda op2 = pilaEvaluacion.pop();
   Celda op1 = pilaEvaluacion.pop();
   if ((op1.getTipo() == Tipo.BOOLEAN) && op2.getTipo() == Tipo.BOOLEAN) {
     boolean result = (Boolean) op1.getDato() != (Boolean) op2.getDato();
     Celda celda = new Celda(result, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.INT) && op2.getTipo() == Tipo.INT) {
     boolean result = (Integer) op1.getDato() != (Integer) op2.getDato();
     Celda celda = new Celda(result, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.INT) && op2.getTipo() == Tipo.NULL) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.NULL) && op2.getTipo() == Tipo.INT) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.NULL) && op2.getTipo() == Tipo.NULL) {
     Celda celda = new Celda(false, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.DOUBLE) && op2.getTipo() == Tipo.DOUBLE) {
     boolean result = (double) op1.getDato() != (double) op2.getDato();
     Celda celda = new Celda(result, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.BOOLEAN) && op2.getTipo() == Tipo.NULL) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.DOUBLE) && op2.getTipo() == Tipo.NULL) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.NULL) && op2.getTipo() == Tipo.BOOLEAN) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else if ((op1.getTipo() == Tipo.NULL) && op2.getTipo() == Tipo.DOUBLE) {
     Celda celda = new Celda(true, Tipo.BOOLEAN);
     pilaEvaluacion.push(celda);
   } else throw new ExcepcionOperacion("Error en la operacion Distinto");
 }