Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Lisp表达式计算器(仅使用一个堆栈)_Java_Lisp_Stack - Fatal编程技术网

Java中的Lisp表达式计算器(仅使用一个堆栈)

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

我正在尝试使用Java实现一个简单的Lisp表达式计算器。实际上,关于这个主题有大量的信息,但它们似乎都使用两个独立的堆栈来获得结果。我想知道是否有可能只使用一个堆栈实现这样一个程序,以及一些伪代码会是什么样子

谢谢

关于我所说的更多信息,请参考


您链接到的两个解释器都做出了一个非常重要的假设:+、-、*,等等都是二进制函数,也就是说,它们总是正好有两个参数。在real Lisp中,您可以说
(+1 2 3 4 5)
对一组数字求和。但是,如果你愿意接受一个简化的假设,即每个操作符的算术是已知的,那么你肯定可以只使用一个堆栈来实现这一点。关键是:将堆栈倒置

您链接到的解释器具有如下堆栈:

底部->
(+(-21)4)
(+(-21)4)
希望能对您有所帮助