anchor.diff:    int ifCounter = 0;
     int loopCounter = 0;
     int counter = 0;
  +  
  +  public Type exprType(Type lhs, Type rhs) {
  +     if (lhs.getName().equals("vector") || rhs.getName().equals("vector")) {
  +       return new BuiltInTypeSymbol("vector");
  +     } else {
  +       return new BuiltInTypeSymbol("int");
  +     }
  +  }
   }
   
   program
  
positive.code:     {
        counter++;
        $c = counter;
        Type lhstype = $lhs.tsym;
        Type rhstype = $rhs.tsym;
        if (lhstype.getName().equals("vector") || rhstype.getName().equals("vector")) {
          $tsym = new BuiltInTypeSymbol("vector");
        } else {
          $tsym = new BuiltInTypeSymbol("int");
        }
      }
      -> {lhstype.getName().equals("vector") && rhstype.getName().equals("vector")}? mulVecVec(counter = {counter}, lhs_counter = {$lhs.c}, lhs = {$lhs.st}, rhs_counter = {$rhs.c}, rhs = {$rhs.st})
      -> {lhstype.getName().equals("vector")}? mulVecInt(counter = {counter}, lhs_counter = {$lhs.c}, lhs = {$lhs.st}, rhs_counter = {$rhs.c}, rhs = {$rhs.st})
  
negative.code:     {
        counter++;
        $c = counter;
        $tsym = exprType($lhs.tsym, $rhs.tsym);
      }
      -> {lhstype.getName().equals("vector") && rhstype.getName().equals("vector")}? addVecVec(counter = {counter}, lhs_counter = {$lhs.c}, lhs = {$lhs.st}, rhs_counter = {$rhs.c}, rhs = {$rhs.st})
      -> {lhstype.getName().equals("vector")}? addVecInt(counter = {counter}, lhs_counter = {$lhs.c}, lhs = {$lhs.st}, rhs_counter = {$rhs.c}, rhs = {$rhs.st})
  