Java中的Lisp表达式计算器(仅使用一个堆栈)
我正在尝试使用Java实现一个简单的Lisp表达式计算器。实际上,关于这个主题有大量的信息,但它们似乎都使用两个独立的堆栈来获得结果。我想知道是否有可能只使用一个堆栈实现这样一个程序,以及一些伪代码会是什么样子 谢谢 关于我所说的更多信息,请参考Java中的Lisp表达式计算器(仅使用一个堆栈),java,lisp,stack,Java,Lisp,Stack,我正在尝试使用Java实现一个简单的Lisp表达式计算器。实际上,关于这个主题有大量的信息,但它们似乎都使用两个独立的堆栈来获得结果。我想知道是否有可能只使用一个堆栈实现这样一个程序,以及一些伪代码会是什么样子 谢谢 关于我所说的更多信息,请参考 您链接到的两个解释器都做出了一个非常重要的假设:+、-、*,等等都是二进制函数,也就是说,它们总是正好有两个参数。在real Lisp中,您可以说(+1 2 3 4 5)对一组数字求和。但是,如果你愿意接受一个简化的假设,即每个操作符的算术是已知
(+1 2 3 4 5)
对一组数字求和。但是,如果你愿意接受一个简化的假设,即每个操作符的算术是已知的,那么你肯定可以只使用一个堆栈来实现这一点。关键是:将堆栈倒置
您链接到的解释器具有如下堆栈:
底部->(+(-21)4)
(+(-21)4)
希望能对您有所帮助