public override IAssignableExpression VisitUnaryOperatorExpression(IUnaryOperatorExpression expr,
                                                                           IList <IStatement> context)
        {
            var lit = expr.Operand as ICSharpLiteralExpression;

            if (lit != null)
            {
                switch (expr.UnaryOperatorType)
                {
                case UnaryOperatorType.MINUS:
                    return(ToConst(lit, false));

                case UnaryOperatorType.PLUS:
                    return(ToConst(lit, true));
                }
            }
            switch (expr.UnaryOperatorType)
            {
            case UnaryOperatorType.EXCL:
                return(new UnaryExpression
                {
                    Operator = UnaryOperator.Not,
                    Operand = ToSimpleExpression(expr.Operand, context)
                });
            }
            return(ComposedExpressionCreator.Create(this, expr, context));
        }
        public static IAssignableExpression Create(ExpressionVisitor expressionVisitor,
                                                   ICSharpExpression expr,
                                                   IList <IStatement> context)
        {
            var visitor = new ComposedExpressionCreator(expressionVisitor);

            expr.Accept(visitor, context);

            if (visitor._collectedRefs.Any())
            {
                return(new ComposedExpression {
                    References = visitor._collectedRefs
                });
            }

            return(new ConstantValueExpression());
        }
Beispiel #3
0
 public override IAssignableExpression VisitShiftExpression(IShiftExpression expr, IList <IStatement> context)
 {
     return(ComposedExpressionCreator.Create(this, expr, context));
 }
Beispiel #4
0
 public override IAssignableExpression VisitBitwiseInclusiveOrExpression(IBitwiseInclusiveOrExpression expr,
                                                                         IList <IStatement> context)
 {
     return(ComposedExpressionCreator.Create(this, expr, context));
 }