我找到了一种将中缀表示法的数学表达式转换为后缀表示法的方法。( http://en.wikipedia.org/wiki/Shunting-yard_algorithm ) 但是,我应该如何编码来解释结果表达式?
这是我的想法:
对于仅操作数表达式:
- 寻找一组遵循操作数-操作数-操作符格式的对象。
- 将运算符的计算规则应用于两个操作数。
- 将一组对象交换为一个操作数,这是计算的结果。
对于具有函数的表达式(正弦、绝对值、符号...)
- 寻找一组遵循操作数-操作数-...-操作符格式的对象。
- 操作数的数量取决于需要传递给函数的参数数量。例如:
- 正弦 - 一个参数(锐角)
- 幂 - 二参数(数字m的n次方)
- 3x3 矩阵 - 九个参数
- 操作数的数量取决于需要传递给函数的参数数量。例如:
- 做我上面提到的任何其他事情。
我现在的情况是我没有任何环境可以将我的想法实现为一段代码,因此我只能抽象地说。
这个想法是否可行?如果可以改进,请注意。也欢迎参考。
如果你在展示一段代码,请将代码改成大家都能理解的文字。例如:
改变:
for (var i:int = 0; i < rpn.length; i++) {
if ("1234567890.".indexOf(rpn[i]) != -1) {
// do something...
}
}
进入:
for every element in the postfix result,
if the element is a number,
do something...
end if
end for
end ...不过是可选的。
谢谢!