Example #1
0
        public ParseError EvaluateExpression(string expression, List<VariableInfo> variables, 
            out double result)
        {
            if(string.IsNullOrEmpty(expression)) {
                throw new ArgumentNullException("Expression was not defined.");
            }
            // ------------------------------------------------------- */
            result = 0;

            try {
                MathParser parser = new MathParser();

                // Add the received variables before starting the evaluation.
                foreach(VariableInfo varInfo in variables) {
                    parser.Variables.Add(varInfo.Name, varInfo.Value);
                }

                // Parse and evalute the received expression.
                InitializeParser(parser);
                parser.BuildExpression(expression);
                result = parser.Evaluate();
            }
            catch(ParseException pe) {
                return pe.Error;
            }
            catch(Exception e) {
                return new ParseError(TargetType.Other, string.Empty);
            }

            return new ParseError(TargetType.None, string.Empty);
        }
Example #2
0
 public override double Evaluate(MathParser parser)
 {
     return Math.Atan(parser.Pop());
 }
Example #3
0
 public override double Evaluate(MathParser parser)
 {
     double newBase = parser.Pop();
     return Math.Log(parser.Pop(), newBase);
 }
Example #4
0
 public abstract double Evaluate(MathParser parser);
Example #5
0
 public override double Evaluate(MathParser parser)
 {
     double a = parser.Pop();
     double b = parser.Pop();
     return a + b;
 }
Example #6
0
 public override double Evaluate(MathParser parser)
 {
     double a = parser.Pop();
     double b = parser.Pop();
     return Math.Pow(b, a);
 }
Example #7
0
        public List<OperatorInfo> GetAvailableOperators()
        {
            List<OperatorInfo> list = new List<OperatorInfo>();
            MathParser parser = new MathParser();
            InitializeParser(parser);

            foreach(KeyValuePair<char, MathOperator> kvp in parser.Operators) {
                list.Add(new OperatorInfo() { HelpString = kvp.Value.HelpString,
                                              Symbol = kvp.Key });
            }

            return list;
        }
Example #8
0
        public List<FunctionInfo> GetAvailableFunctions()
        {
            List<FunctionInfo> list = new List<FunctionInfo>();
            MathParser parser = new MathParser();
            InitializeParser(parser);

            foreach(KeyValuePair<string, MathFunction> kvp in parser.Functions) {
                list.Add(new FunctionInfo() { HelpString = kvp.Value.HelpString,
                                              Name = kvp.Key });
            }

            return list;
        }
Example #9
0
        private void InitializeParser(MathParser parser)
        {
            // Add the available operators.
            parser.AddOperator(new AddOperator());
            parser.AddOperator(new SubstractOperator());
            parser.AddOperator(new MultiplyOperator());
            parser.AddOperator(new DivideOperator());
            parser.AddOperator(new ExponentialOperator());

            // Add the available functions.
            parser.AddFunction(new SinFunction());
            parser.AddFunction(new CosFunction());
            parser.AddFunction(new TanFunction());
            parser.AddFunction(new AtanFunction());
            parser.AddFunction(new AbsFunction());
            parser.AddFunction(new MinFunction());
            parser.AddFunction(new MaxFunction());
            parser.AddFunction(new SqrtFunction());
            parser.AddFunction(new LogFunction());
            parser.AddFunction(new LnFunction());
            parser.AddFunction(new Log10Function());
            parser.AddFunction(new SignFunction());
            parser.AddFunction(new CeilFunction());
            parser.AddFunction(new FloorFunction());

            // Add the available constants.
            parser.AddVariable("PI", Math.PI);
            parser.AddVariable("E", Math.E);
        }
Example #10
0
        public List<VariableInfo> GetAvailableVariables()
        {
            List<VariableInfo> list = new List<VariableInfo>();
            MathParser parser = new MathParser();
            InitializeParser(parser);

            foreach(KeyValuePair<string, double> kvp in parser.Variables) {
                list.Add(new VariableInfo() { Value = kvp.Value,
                                              Name = kvp.Key });
            }

            return list;
        }