函数表达式解析器

5 篇文章 0 订阅

函数表达式解析器 最早是在02年写的,当时刚学完数据结构里的栈,于是就着书上的例子实现了一个简单的后缀表达式分析器,可以解析简单的表达式,也可以画一些简单的图像。

 

 

之前的程序只能识别+-*/^这几个运算,并且只能认x这个变量,其它的就不行了。

于是将运算扩展到三角函数,以及LOG,EXP,同时将变量扩展到多个,不限定哪个变量一定要有,反正设置变量的值,就可以计算表达式的值,如果没有设置,则变量值为0

解析出多个变量后,如何一一设置这些变量的值呢?考虑了一下后,决定用集合的方式来返回所有的变量,同时提供一个方法来设置某个变量的值,SetValue(变量名,值),为了快速计算多个数据,以便画图,提供了一个批量计算的方法,一般是设置好其它的变量,然后剩一个变量 的值在变化,于是就定义成这样:

Public Function MulComputer(ValueDat() As Single, RetDat() As Single ) As Boolean

ValueDat是变量的值,RetDat() As Single 是计算后返回的多个值

有时候函数不一定是关于X的,所以又改成

Public Function MulComputer(ValueDat() As Single, RetDat() As Single, _
            Optional ByVal VarName As String = "X") As Boolean

为了适应多种表达式,对表达式的空格一律略过,同时对字母大小写统一忽略,也就是Sin和sin是一样的函数

x*30和X*30中的x是同一个变量。

如果解析表达式时出现错误,同时给出一个LastError属性来说明错误原因,同时给出一个ErrPosition来指定错误的位置,提示就可以像IIS那样了:

另外又将画图的一些基本用法包装成一个类,最后得到了这样的东东:

 

 

还有很多不足,正在完善中,有兴趣的朋友来测试,下载地址:

http://www.hexi5.com/download/FunExpV1.0.11.rar

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值