函数表达式解析器 最早是在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