对于表达式的计算主要有以下种思路
1、经典的后缀表达式计算(也称波兰算法)
2、各式各样抽象语法树实现
目前在网上比较多的是经典的后缀表达式计算,也有调用编译器或其它三方组件实现。
目前所见的用后缀表达式计算表达式,存在以下问题:
1、不支持负数
2、只支持加减乘除
3、对波兰算法的实现不正确或者说不完整
4、不支持逻辑运算
5、不支持自定义函数、过程
6、不支持(左、右括号)
总起来说,波兰算法是经典的,当然也存在局限性。
2、抽象语法树实现存在的问题
1、对实现者本人来说要求较高
2、如果用第三方的抽象语法树组件,受到限制不说,还要学习它的语法、词法
这里我再介绍一种递归下降算法,从本质上说它属于抽象语法树实现的范畴,但是它更简单更灵活当然也更不规范了:)
先看看我近两周做的一个demo截图吧

PEE2.JPG

支持数学表达式和逻辑表达式混合计算,支持括号,支持函数、逻辑过程的无限嵌套,支持常见的三角函数。。。等