Java 如何解析数学表达式

Java 如何解析数学表达式,java,formula,expression-evaluation,Java,Formula,Expression Evaluation,我想了解像GeoGebra这样的Java程序如何从文本框中读取像exp(z^2)这样的数学表达式,然后对其求值。对于那些熟悉MatLab的人:如何在Java中实现函数句柄?如果它类似于使用Java计算数学表达式(中缀),我建议使用一种简单的方法,首先将表达式转换为后缀符号,然后遵循计算后缀的基本算法 看看这里 表达式是A*B+C 后缀将是AB*C+ 读取后缀字符串,如果是操作数,则将其推入堆栈。(在堆栈->A、B中) 如果运算符(*),弹出两个操作数,执行计算(A*B=E,比如说) 将结果E推到

我想了解像GeoGebra这样的Java程序如何从文本框中读取像
exp(z^2)
这样的数学表达式,然后对其求值。对于那些熟悉MatLab的人:如何在Java中实现函数句柄?

如果它类似于使用Java计算数学表达式(中缀),我建议使用一种简单的方法,首先将表达式转换为后缀符号,然后遵循计算后缀的基本算法

看看这里

  • 表达式是A*B+C
  • 后缀将是AB*C+
  • 读取后缀字符串,如果是操作数,则将其推入堆栈。(在堆栈->A、B中)
  • 如果运算符(*),弹出两个操作数,执行计算(A*B=E,比如说
  • 将结果E推到堆栈中
  • 转到步骤3

  • 堆栈中的最终结果将是您的答案。

    关于解析:看一看Antlr——有源代码。从那里读。您当前形式的问题对未来的访问者没有价值。请检查来源并用更具体的问题复出。重复,是的,但不是真正的问题?你一定是在开玩笑。如果没有这样的问题,我们不可能达到Fortran I的程度。你需要查找“递归下降表达式解析器”和Dijkstra分流码算法。我同意这是一个关于如何解析字符串中的表达式的非常有效的问题,它引出了许多编译器编写原则。指向调车场()是一个良好的开端。