public static string GetMemberName <T>(Sle.Expression <Func <T, object> > expr) { Sle.Expression body = ((Sle.LambdaExpression)expr).Body; Sle.MemberExpression memberExpression = body as Sle.MemberExpression; if (memberExpression == null) { memberExpression = (Sle.MemberExpression)((Sle.UnaryExpression)body).Operand; } return(memberExpression.Member.Name); }
/// <summary> /// Parse the input and create a function. /// </summary> private void Parse() { // Build the expression Sle.Expression expression = GetExpression(); // Ensure we exhausted the input int finalPosition = Lexer.Position; Token finalToken = Lexer.Get(); if (finalToken != null) { throw new FormatException(string.Format(CultureInfo.InvariantCulture, "Unexpected token {0} at position {1}!", finalToken.TokenType, finalPosition)); } // Wrap the expression in a function Sle.Expression <Func <double, double> > functionExpression = Sle.Expression.Lambda <Func <double, double> >( expression, Parameter ?? Sle.Expression.Parameter(typeof(double), "x")); // Compile the expression into a function Function = functionExpression.Compile(); }