Example #1
0
        public IActionResult EvaluateExpression([FromBody, SwaggerRequestBody("The request that contains the expression and variables")] ExpressionRequest request)
        {
            if (!this.ModelState.IsValid)
            {
                this.logger.LogError("This model doesn't look right to me!");
                throw new ArgumentException("Your request body wasn't proper! ");
            }

            this.logger.LogInformation($"All looks good.  Let's start parsing: {request.Expression}.");
            MathExpressionBuilder builder          = new MathExpressionBuilder(request.Expression);
            IMathExpression       parsedExpression = builder.GenerateExpression();

            this.logger.LogDebug("Yup.  Looks like a legit expression.");
            foreach (var variable in request.VariableEntries)
            {
                builder.SetVariable(variable.Name, variable.Value.ToString());
                this.logger.LogDebug("Setting variable {0} with {1}", variable.Name, variable.Value);
            }

            ExpressionResponse response = new ExpressionResponse
            {
                AdjustedExpression = parsedExpression.ToString(),
                Expression         = request.Expression,
                VariableEntries    = request.VariableEntries,
                ValueGenerated     = parsedExpression.EvaluateExpression()
            };

            return(this.Ok(response));
        }
Example #2
0
        static void Main(string[] args)
        {
            foreach (var requests in args)
            {
                string[] commandItems = requests.Split(';');
                if (commandItems.Length == 0)
                {
                    continue;
                }

                string expression = commandItems[0];
                MathFun.ExpressionBuilder.MathExpressionBuilder mathExpressionBuilder = new ExpressionBuilder.MathExpressionBuilder(expression);

                IMathExpression mathExpression = mathExpressionBuilder.GenerateExpression();
                Console.WriteLine($"The expression parsed was {mathExpression.ToString()}");
                if (mathExpressionBuilder.ContainsVariables)
                {
                    foreach (var variableCommand in commandItems)
                    {
                        string[] commandSubparts = variableCommand.Split("=");
                        if (commandSubparts.Length != 2)
                        {
                            continue;
                        }

                        string variableName = commandSubparts[0];
                        string value        = commandSubparts[1];

                        mathExpressionBuilder.SetVariable(variableName, value);
                        Console.WriteLine($"{variableName}={value}");
                    }
                }

                Console.WriteLine($"The expression evaluated {mathExpression.EvaluateExpression()}");
            }
        }