Beispiel #1
0
        public static TernaryExpression Parse(ExpressionWalker ew, Expression condition = null)
        {
            if (condition == null)
            {
                condition = Expression.ParseExpression(ew, typeof(ExpressionParser));
            }

            ew.IsCurrentOrThrow(ExpressionToken.Or);
            ew.NextOrThrow();
            Expression trueResult;
            Expression falseResult = null;

            if (ew.OptionalCurrent(ExpressionToken.Or))
            {
                trueResult  = Expression.None;
                falseResult = Expression.ParseExpression(ew, typeof(TernaryExpression));
            }
            else
            {
                trueResult = Expression.ParseExpression(ew, typeof(TernaryExpression));
                if (ew.OptionalCurrent(ExpressionToken.Or))
                {
                    falseResult = Expression.ParseExpression(ew, typeof(TernaryExpression));
                }
            }

            return(new TernaryExpression(condition, trueResult, falseResult));
        }