示例#1
0
        public CompileResult CompileExpression(string expressionText)
        {
            var result = new CompileResult();

            if (string.IsNullOrEmpty(expressionText))
            {
                return(result);
            }

            Node ast = Parse(expressionText, result);

            if (result.Errors.Any())
            {
                return(result);
            }

            var builder        = new ExpressionTreeBuilder(binder);
            var expressionTree = builder.CreateExpression(ast, result);

            if (expressionTree == null || result.Errors.Any())
            {
                return(result);
            }

            Func <double> function = evaluator.InterpretExpression(expressionTree);

            result.Expression = function;
            return(result);
        }
示例#2
0
        public CompileResult CompileFunction(string functionText)
        {
            var result = new CompileResult();
            if (string.IsNullOrEmpty(functionText))
            {
                return result;
            }

            Node ast = Parse(functionText, result);
            if (result.Errors.Any())
            {
                return result;
            }

            var builder = new ExpressionTreeBuilder();
            var expressionTree = builder.CreateFunction(ast, result);
            if (expressionTree == null || result.Errors.Any())
            {
                return result;
            }

            Func<double, double> function = evaluator.InterpretFunction(expressionTree);
            result.Function = function;
            return result;
        }