使用Java Stacks评估有效的Lisp表达式

时间:2013-10-23 07:18:48

标签: java lisp operators stack

对于Data Structures中的项目,我们鼓励我们使用Lisp Expression评估Java API Stacks

Lisp expressions有四个基本操作符:+, -, *, / . 表达式中的有效标记为'(', ')'和运算符。

示例Lisp expression( + (-6) (+ 3 2 1) (/ 10 5) (* 2 3 4))等于26


如何计算Lisp的令牌,然后将其推回stack

1 个答案:

答案 0 :(得分:1)

这是配方(是的,你必须知道 Java,没有别的方法)

  • 标记您的输入:您将拥有以下标记
    • S-EXPR-START(每次遇到'(')
    • S-EXPR-END(每次遇到')')
    • NUMBER(值是已解析数字的值)
    • 操作(值为操作代码:+ - * / etc)
  • 构建语法树:每次启动一个s-expression(左括号)时,它都是一个新的树节点,它的值是函数,子节点是操作数。
  • 通过将节点/子节点替换为此节点的结果,以自下而上的方式评估树。 ...
  • PROFIT!