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)); }