简单测试轻量级表达式计算器Flee

  Flee是GitHub上基于.net的轻量级数学表达式解析和计算器,它支持计算数学表达式、带变量的数学表达式、带特殊处理函数的数学表达式等。从微信公众号中看到关于Flee的介绍文章(参考文献1是百度出来的同名的博客文章),准备测试一下,使用该模块计算数学表达式及带变量的数学表达式。
  使用VS2019创建Winform程序,通过NuGet查找并安装Flee包及依赖项,如下图所示:
在这里插入图片描述
在这里插入图片描述
  使用Flee计算不带变量和特殊处理函数的数学表达式很简单,直接使用其官网给的示例代码即可,测试代码及运行界面如下图所示。

		try
        {
            ExpressionContext context = new ExpressionContext();
            IDynamicExpression calcResult = context.CompileDynamic(txtExpression.Text);
            txtResult.Text =Convert.ToString(calcResult.Evaluate());
        }
        catch (ExpressionCompileException ex)
        {
            if (ex.Reason == CompileExceptionReason.SyntaxError)
            {
                txtResult.Text = "Check your expression syntax" + "\r\n" + ex.Message;
            }
            else
            {
                txtResult.Text = ex.Message;
            }
        }

在这里插入图片描述
  接下来测试带变量的数学表达式,这时最重要的是ExpressionContext类,该类用于保存表达式中的变量,测试代码及运行界面如下图所示。

	  try
      {
          ExpressionContext context = new ExpressionContext();

          foreach(DataGridViewRow dgvr in dgvParams.Rows)
          {
              decimal tmpValue = 0;

              if(string.IsNullOrEmpty(Convert.ToString(dgvr.Cells[0].Value))
                  || !decimal.TryParse(Convert.ToString(dgvr.Cells[1].Value),out tmpValue))
              {
                  continue;
              }

              context.Variables[Convert.ToString(dgvr.Cells[0].Value)] = tmpValue;
          }
          
          IDynamicExpression calcResult = context.CompileDynamic(txtExpression.Text);
          txtResult.Text =Convert.ToString(calcResult.Evaluate());
      }
      catch (ExpressionCompileException ex)
      {
          if (ex.Reason == CompileExceptionReason.SyntaxError)
          {
              txtResult.Text = "Check your expression syntax" + "\r\n" + ex.Message;
          }
          else
          {
              txtResult.Text = ex.Message;
          }

      }

在这里插入图片描述
  Flee的功能比较强大,本文只是测试了其中的最简单的使用方式,后续还会继续学习Flee的用法。

参考文献:
[1]https://github.com/mparlak/Flee
[2]https://github.com/mparlak/Flee/wiki/Examples

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值