Example #1
0
 public override Expression VisitAssignmentExpression(AssignmentExpression assignment)
 {
     return base.VisitAssignmentExpression(assignment);
 }
Example #2
0
        public override Expression VisitAssignmentExpression(AssignmentExpression assignment)
        {
            if (assignment == null) return null;
            AssignmentExpression newAssignment = new AssignmentExpression();
            newAssignment.AssignmentStatement = (Statement)this.Visit(assignment.AssignmentStatement);

            // For symbolic execution, assignment statements become method calls. So we
            // have to rewrite the IR so that these are no longer buried inside an
            // AssignmentStatement.
            ExpressionStatement exprStmt = newAssignment.AssignmentStatement as ExpressionStatement;
            if (exprStmt != null)
                return exprStmt.Expression;
            else
                return newAssignment;
        }
Example #3
0
 public virtual Expression VisitAssignmentExpression(AssignmentExpression assignment)
 {
     if (assignment == null) return null;
     assignment.AssignmentStatement = (Statement)this.Visit(assignment.AssignmentStatement);
     return assignment;
 }
Example #4
0
 public override Expression VisitAssignmentExpression(AssignmentExpression assignment)
 {
     if (assignment == null) return null;
     return base.VisitAssignmentExpression((AssignmentExpression)assignment.Clone());
 }
Example #5
0
 private Expression ParseAssignmentExpression(Expression operand1, TokenSet followers){
   Debug.Assert(Parser.InfixOperators[this.currentToken]);
   Debug.Assert(this.currentToken != Token.Conditional);
   switch (this.currentToken){
     case Token.AddAssign:
     case Token.Assign:
     case Token.BitwiseAndAssign:
     case Token.BitwiseOrAssign:
     case Token.BitwiseXorAssign:
     case Token.DivideAssign:
     case Token.LeftShiftAssign:
     case Token.MultiplyAssign:
     case Token.RemainderAssign:
     case Token.RightShiftAssign:
     case Token.SubtractAssign:
       Token assignmentOperator = this.currentToken;
       this.GetNextToken();
       Expression operand2 = this.ParseExpression(followers);
       if (operand1 == null || operand2 == null) return null;
       AssignmentStatement statement = new AssignmentStatement(operand1, operand2, Parser.ConvertToBinaryNodeType(assignmentOperator));
       statement.SourceContext = operand1.SourceContext;
       statement.SourceContext.EndPos = operand2.SourceContext.EndPos;
       Expression expression = new AssignmentExpression(statement);
       expression.SourceContext = statement.SourceContext;
       return expression;
     default:
       operand1 = this.ParseBinaryExpression(operand1, followers|Token.Conditional);
       if (operand1 != null && this.currentToken == Token.Conditional)
         return this.ParseConditional(operand1, followers);
       return operand1;
   }
 }
 public EventingVisitor(Action<AssignmentExpression> visitAssignmentExpression) { VisitedAssignmentExpression += visitAssignmentExpression; } public event Action<AssignmentExpression> VisitedAssignmentExpression; public override Expression VisitAssignmentExpression(AssignmentExpression assignment) { if (VisitedAssignmentExpression != null) VisitedAssignmentExpression(assignment); return base.VisitAssignmentExpression(assignment); }