コード例 #1
0
 public override void Visit(ISubtraction subtraction)
 {
     if (Process(subtraction))
     {
         visitor.Visit(subtraction);
     }
     base.Visit(subtraction);
 }
コード例 #2
0
ファイル: HLMethod.cs プロジェクト: Astaelan/Neutron
        private HLLocation ProcessSubtractionExpression(ISubtraction pExpression)
        {
            HLLocation locationLeftOperand  = ProcessExpression(pExpression.LeftOperand);
            HLLocation locationRightOperand = ProcessExpression(pExpression.RightOperand);
            HLLocation locationTemporary    = HLTemporaryLocation.Create(CreateTemporary(HLDomain.GetOrCreateType(pExpression.Type)));

            mCurrentBlock.EmitSubtract(locationTemporary, locationLeftOperand, locationRightOperand);
            return(pExpression.ResultIsUnmodifiedLeftOperand ? locationLeftOperand : locationTemporary);
        }
コード例 #3
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ISubtraction subtraction)
 {
     this.traverser.Traverse(subtraction);
 }
コード例 #4
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the subtraction expression.
 /// </summary>
 public void Traverse(ISubtraction subtraction)
 {
     Contract.Requires(subtraction != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(subtraction);
       if (this.StopTraversal) return;
       this.TraverseChildren(subtraction);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(subtraction);
 }
コード例 #5
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual void Visit(ISubtraction subtraction)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(subtraction);
       this.Visit(subtraction.LeftOperand);
       this.Visit(subtraction.RightOperand);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not to decrease this.path.Count.
       this.path.Pop();
 }
コード例 #6
0
 public override void Visit(ISubtraction operation)
 {
     ProcessOperation(operation);
 }
コード例 #7
0
 public virtual void onASTElement(ISubtraction subtraction)
 {
 }
コード例 #8
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified subtraction.
 /// </summary>
 /// <param name="subtraction">The subtraction.</param>
 public override void Visit(ISubtraction subtraction)
 {
     Subtraction mutableSubtraction = subtraction as Subtraction;
     if (alwaysMakeACopy || mutableSubtraction == null) mutableSubtraction = new Subtraction(subtraction);
     this.resultExpression = this.myCodeMutator.Visit(mutableSubtraction);
 }
コード例 #9
0
ファイル: AstFormatter.cs プロジェクト: pkunze/visualmutator
 public override void Visit(ISubtraction binary)
 {
     _formattedValue = Format(binary.LeftOperand) + " - " + Format(binary.RightOperand);
 }
コード例 #10
0
ファイル: TypeInferencer.cs プロジェクト: xornand/cci
 public override void TraverseChildren(ISubtraction subtraction)
 {
     base.TraverseChildren(subtraction);
     ((Subtraction)subtraction).Type = this.GetBinaryNumericOperationType(subtraction, subtraction.TreatOperandsAsUnsignedIntegers);
 }
コード例 #11
0
ファイル: Visitor.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Generates IL for the specified subtraction.
 /// </summary>
 /// <param name="subtraction">The subtraction.</param>
 public override void TraverseChildren(ISubtraction subtraction)
 {
     this.Traverse(subtraction.LeftOperand);
       this.Traverse(subtraction.RightOperand);
       OperationCode operationCode = OperationCode.Sub;
       if (subtraction.CheckOverflow) {
     if (subtraction.TreatOperandsAsUnsignedIntegers)
       operationCode = OperationCode.Sub_Ovf_Un;
     else
       operationCode = OperationCode.Sub_Ovf;
       }
       this.generator.Emit(operationCode);
       this.StackSize--;
 }
コード例 #12
0
 public override void Visit(ISubtraction subtraction)
 {
     if(Process(subtraction)){visitor.Visit(subtraction);}
     base.Visit(subtraction);
 }
コード例 #13
0
ファイル: HLMethod.cs プロジェクト: kvanberendonck/Neutron
 private HLLocation ProcessSubtractionExpression(ISubtraction pExpression)
 {
     HLLocation locationLeftOperand = ProcessExpression(pExpression.LeftOperand);
     HLLocation locationRightOperand = ProcessExpression(pExpression.RightOperand);
     HLLocation locationTemporary = HLTemporaryLocation.Create(CreateTemporary(HLDomain.GetOrCreateType(pExpression.Type)));
     mCurrentBlock.EmitSubtract(locationTemporary, locationLeftOperand, locationRightOperand);
     return pExpression.ResultIsUnmodifiedLeftOperand ? locationLeftOperand : locationTemporary;
 }
コード例 #14
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 public void Visit(ISubtraction subtraction)
 {
     this.result = this.rewriter.Rewrite(subtraction);
 }
コード例 #15
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Rewrites the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual IExpression Rewrite(ISubtraction subtraction)
 {
     var mutableSubtraction = subtraction as Subtraction;
       if (mutableSubtraction == null) return subtraction;
       this.RewriteChildren(mutableSubtraction);
       return mutableSubtraction;
 }
コード例 #16
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ISubtraction subtraction)
 {
     Contract.Requires(subtraction != null);
       throw new NotImplementedException();
 }
コード例 #17
0
 public override void Visit(ISubtraction subtraction) {
   base.Visit(subtraction);
   Bpl.Expr rexp = TranslatedExpressions.Pop();
   Bpl.Expr lexp = TranslatedExpressions.Pop();
   TranslatedExpressions.Push(Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Sub, lexp, rexp));
 }
コード例 #18
0
ファイル: Expressions.cs プロジェクト: xornand/cci
 /// <summary>
 /// 
 /// </summary>
 /// <param name="subtraction"></param>
 public Subtraction(ISubtraction subtraction)
   : base(subtraction) {
   this.CheckOverflow = subtraction.CheckOverflow;
   this.TreatOperandsAsUnsignedIntegers = subtraction.TreatOperandsAsUnsignedIntegers;
 }
コード例 #19
0
 public virtual void onASTElement(ISubtraction subtraction) { }
コード例 #20
0
 public override void Visit(ISubtraction subtraction)
 {
     allElements.Add(new InvokInfo(Traverser, "ISubtraction", subtraction));
 }
コード例 #21
0
 public override void TraverseChildren(ISubtraction subtraction)
 {
   var targetExpression = subtraction.LeftOperand as ITargetExpression;
   if (targetExpression != null) { // x -= e
     bool statement = this.currentExpressionIsOpAssignStatement;
     this.currentExpressionIsOpAssignStatement = false;
     this.VisitAssignment(targetExpression, subtraction, (IExpression e) => this.TraverseSubtractionRightOperandAndDoOperation(e),
       treatAsStatement: statement, pushTargetRValue: true, resultIsInitialTargetRValue: subtraction.ResultIsUnmodifiedLeftOperand);
   } else { // x - e
     this.Traverse(subtraction.LeftOperand);
     this.TraverseSubtractionRightOperandAndDoOperation(subtraction);
   }
 }
コード例 #22
0
 /// <summary>
 /// Rewrites the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual IExpression Rewrite(ISubtraction subtraction)
 {
     return subtraction;
 }
コード例 #23
0
 public override IExpression Rewrite(ISubtraction operation)
 {
     return(ReplaceOperation(operation));
 }
コード例 #24
0
 public override void TraverseChildren(ISubtraction subtraction) {
   base.TraverseChildren(subtraction);
   ((Subtraction)subtraction).Type = this.GetBinaryNumericOperationType(subtraction, subtraction.TreatOperandsAsUnsignedIntegers);
 }
コード例 #25
0
        public override void TraverseChildren(ISubtraction subtraction)
{ MethodEnter(subtraction);
            base.TraverseChildren(subtraction);
     MethodExit();   }
コード例 #26
0
ファイル: Copier.cs プロジェクト: Refresh06/visualmutator
    /// <summary>
    /// Returns a shallow copy of the given subtraction expression.
    /// </summary>
    /// <param name="subtraction"></param>
    public Subtraction Copy(ISubtraction subtraction) {
      Contract.Requires(subtraction != null);
      Contract.Ensures(Contract.Result<Subtraction>() != null);

      return new Subtraction(subtraction);
    }
コード例 #27
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual void Visit(ISubtraction subtraction)
 {
 }
コード例 #28
0
ファイル: Copier.cs プロジェクト: Refresh06/visualmutator
    /// <summary>
    /// Returns a deep copy of the given subtraction expression.
    /// </summary>
    /// <param name="subtraction"></param>
    public Subtraction Copy(ISubtraction subtraction) {
      Contract.Requires(subtraction != null);
      Contract.Ensures(Contract.Result<Subtraction>() != null);

      var mutableCopy = this.shallowCopier.Copy(subtraction);
      this.CopyChildren((BinaryOperation)mutableCopy);
      return mutableCopy;
    }
コード例 #29
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the children of the subtraction expression.
 /// </summary>
 public virtual void TraverseChildren(ISubtraction subtraction)
 {
     Contract.Requires(subtraction != null);
       this.TraverseChildren((IBinaryOperation)subtraction);
 }
コード例 #30
0
 /// <summary>
 /// Performs some computation with the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual void Visit(ISubtraction subtraction)
 {
 }
コード例 #31
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public virtual void Visit(ISubtraction subtraction)
 {
     this.Visit((IBinaryOperation)subtraction);
 }
コード例 #32
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified subtraction.
 /// </summary>
 /// <param name="subtraction">The subtraction.</param>
 public override void Visit(ISubtraction subtraction)
 {
     Subtraction mutableSubtraction = new Subtraction(subtraction);
     this.resultExpression = this.myCodeCopier.DeepCopy(mutableSubtraction);
 }
コード例 #33
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(ISubtraction subtraction)
 {
     throw new NotImplementedException();
 }
コード例 #34
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a deep copy of the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public Subtraction Copy(ISubtraction subtraction)
 {
     var mutableCopy = this.shallowCopier.Copy(subtraction);
       this.CopyChildren((BinaryOperation)mutableCopy);
       return mutableCopy;
 }
コード例 #35
0
ファイル: Expressions.cs プロジェクト: riverar/devtools
 /// <summary>
 /// 
 /// </summary>
 /// <param name="subtraction"></param>
 public Subtraction(ISubtraction subtraction)
     : base(subtraction)
 {
     this.CheckOverflow = subtraction.CheckOverflow;
 }
コード例 #36
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a shallow copy of the given subtraction expression.
 /// </summary>
 /// <param name="subtraction"></param>
 public Subtraction Copy(ISubtraction subtraction)
 {
     return new Subtraction(subtraction);
 }
コード例 #37
0
    public override void TraverseChildren(ISubtraction subtraction) {
      if (subtraction.LeftOperand is ITargetExpression && ExpressionHelper.IsIntegralOne(subtraction.RightOperand)) {
        if (subtraction.ResultIsUnmodifiedLeftOperand) {
          this.Traverse(subtraction.LeftOperand);
          this.sourceEmitterOutput.Write("--");
        } else {
          this.sourceEmitterOutput.Write("--");
          this.Traverse(subtraction.LeftOperand);
        }
        return;
      }

      var needsParen = LowerPrecedenceThanParentExpression(subtraction);
      var savedCurrentPrecedence = this.currentPrecedence;
      this.currentPrecedence = this.Precedence(subtraction);

      if (needsParen) this.sourceEmitterOutput.Write("(");
      this.Traverse(subtraction.LeftOperand);
      if (subtraction.LeftOperand is ITargetExpression)
        this.sourceEmitterOutput.Write(" -= ");
      else
        this.sourceEmitterOutput.Write(" - ");
      this.Traverse(subtraction.RightOperand);
      if (needsParen) this.sourceEmitterOutput.Write(")");

      this.currentPrecedence = savedCurrentPrecedence;
    }
コード例 #38
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 public void Visit(ISubtraction subtraction)
 {
     this.result = this.copier.Copy(subtraction);
 }
コード例 #39
0
 public override void TraverseChildren(ISubtraction subtraction)
 {
     MethodEnter(subtraction);
     base.TraverseChildren(subtraction);
     MethodExit();
 }
コード例 #40
0
ファイル: Mutator.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified subtraction.
 /// </summary>
 /// <param name="subtraction">The subtraction.</param>
 public override void Visit(ISubtraction subtraction)
 {
     Subtraction mutableSubtraction = subtraction as Subtraction;
     if (mutableSubtraction == null) {
       this.resultExpression = subtraction;
       return;
     }
     this.resultExpression = this.myCodeMutator.Visit(mutableSubtraction);
 }