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()); }
public override IAssignableExpression VisitShiftExpression(IShiftExpression expr, IList <IStatement> context) { return(ComposedExpressionCreator.Create(this, expr, context)); }
public override IAssignableExpression VisitBitwiseInclusiveOrExpression(IBitwiseInclusiveOrExpression expr, IList <IStatement> context) { return(ComposedExpressionCreator.Create(this, expr, context)); }