void setPars(Rule r) throws IOException {
    System.out.println("\n TAKING INPUTS to APPLY Rule: " + r.getName() + "\n");
    List<String> list = r.getInputParameterNames();
    System.out.println("The parameters for " + r.getName() + " are: " + list);
    //		System.out.println("The parameters values for " + r.getName() + " are: " +
    // r.getInputParameters());
    System.out.println("The parameters values:");
    for (int i = 0; i < list.size(); i++) {
      String pname = list.get(i);
      VarMember var = (VarMember) ((VarTuple) r.getAttrContext().getVariables()).getMemberAt(pname);
      if (var.isSet()) System.out.println(pname + " is set to value: " + var.getExprAsText());
      else System.out.println(pname + " is not set");
    }

    VarTuple vars = (VarTuple) r.getAttrContext().getVariables();

    for (int i = 0; i < vars.getNumberOfEntries(); i++) {
      VarMember var = (VarMember) vars.getMemberAt(i);
      if (var.isInputParameter()) {
        // olga:
        if (!var.isSet()) {
          System.out.println(
              var.getName() + "  is already input parameter of rule: " + r.getName());

          System.out.println(
              "\n \n Please Enter the value for input parameter for rule -- "
                  + r.getName()
                  + " --, parameter name -- "
                  + var.getName()
                  + " --: ");
          Scanner scan = new Scanner(System.in);
          String value = scan.nextLine();
          System.out.println("The given input was: " + value);
          var.setInputParameter(true);
          var.setExprAsText(value);
          // in1.close();
          System.out.println(var.getName() + "  is now input parameter of rule: " + r.getName());
        } else {
          System.out.println(
              var.getExprAsText()
                  + " is value of the INPUT parameter: "
                  + var.getName()
                  + "  of rule: "
                  + r.getName());
        }
      }
    }
    // in.close();
  }
  /**
   * If the kernel rule is using an input parameter and its value is already set do propagate this
   * value to the attribute context of multi rules.
   */
  public void applyValueOfInputParameter() {
    final VarTuple vars = (VarTuple) this.getAttrContext().getVariables();

    for (int i = 0; i < vars.getNumberOfEntries(); i++) {
      final VarMember v = vars.getVarMemberAt(i);
      if (v.isInputParameter() && v.isSet()) {
        VarMember vm =
            ((VarTuple) this.kernelRule.getAttrContext().getVariables())
                .getVarMemberAt(v.getName());
        if (vm != null && (vm.getExpr() == null || !v.getExprAsText().equals(vm.getExprAsText()))) {
          //					vm.setExprAsText(v.getExprAsText());
          vm.setExpr(v.getExpr());
        }

        for (int j = 0; j < this.multiRules.size(); j++) {
          vm =
              ((VarTuple) this.multiRules.get(j).getAttrContext().getVariables())
                  .getVarMemberAt(v.getName());
          if (vm != null
              && (vm.getExpr() == null || !v.getExprAsText().equals(vm.getExprAsText()))) {
            //						vm.setExprAsText(v.getExprAsText());
            vm.setExpr(v.getExpr());
          }
        }
      }
    }

    //		System.out.println("applyValueOfInputParameter...  "+this.kernelRule.getName());
    //		((VarTuple) this.kernelRule.getAttrContext().getVariables()).showVariables();
    //		for (int j=0; j<this.multiRules.size(); j++) {
    //			System.out.println("applyValueOfInputParameter...  "+this.multiRules.get(j).getName());
    //			((VarTuple) this.multiRules.get(j).getAttrContext().getVariables()).showVariables();
    //		}
  }
 private boolean isInputParameterSet(final AttrContext attrContext, boolean left) {
   AttrVariableTuple avt = attrContext.getVariables();
   for (int i = 0; i < avt.getNumberOfEntries(); i++) {
     VarMember v = avt.getVarMemberAt(i);
     if (v.isInputParameter()) {
       this.hasInputParameter = true;
       if (!v.isSet()) {
         if (left && leftGraphIsUsingVariable(v)) {
           return false;
         } else if (!left && rightGraphIsUsingVariable(v)) {
           return false;
         }
       }
     }
   }
   return true;
 }