示例#1
0
        protected override Expression VisitUnaryOperator(UnaryOperatorBindingParserNode node)
        {
            var            operand = Visit(node.InnerExpression);
            ExpressionType eop;

            switch (node.Operator)
            {
            case BindingTokenType.AddOperator:
                eop = ExpressionType.UnaryPlus;
                break;

            case BindingTokenType.SubtractOperator:
                eop = ExpressionType.Negate;
                break;

            case BindingTokenType.NotOperator:
                eop = ExpressionType.Not;
                break;

            default:
                throw new NotSupportedException($"unary operator { node.Operator } is not supported");
            }
            return(ExpressionHelper.GetUnaryOperator(operand, eop));
        }
示例#2
0
 private static void CheckUnaryOperatorNodeType <TInnerExpression>(UnaryOperatorBindingParserNode node, BindingTokenType operatorType)
     where TInnerExpression : BindingParserNode
 {
     Assert.IsTrue(node.Operator == operatorType);
     Assert.IsTrue(node.InnerExpression is TInnerExpression);
 }
示例#3
0
 private static void CheckUnaryOperatorNodeType <TInnerExpression>(UnaryOperatorBindingParserNode node, BindingTokenType operatorType)
     where TInnerExpression : BindingParserNode
 {
     Assert.AreEqual(operatorType, node.Operator);
     Assert.IsInstanceOfType(node.InnerExpression, typeof(TInnerExpression));
 }