即使是非常简陋的事情也没关系。就像输入和评估像x + 1这样的东西,其中x是我要指定的变量。
我正在考虑为每个公式编写自己的字符串,使用正则表达式来解析它们等等,但是我们假设我的目标是尽可能地懒散,并且如果有另一种选择(特别是一个正式的),我宁愿首先尝试使用它。
那里有什么东西可以做这样的事吗?
答案 0 :(得分:4)
我知道以下库:
Symja Parser(Apache License)支持类似Mathematica的语法
JParser(BSD许可证)
Jep - Java Math Expression Parser(商业版 - GNU公共许可证下的旧版本?)
JFormula(商业)
JEval(Apache许可证)
MathEval - Math Expression Evaluator(公共领域和非常小的足迹)
答案 1 :(得分:3)
您可以考虑使用Java 6中的scripting。参考JDK附带一个JavaScript实现,您也可以插入其他语言。
答案 2 :(得分:1)
几年前我使用JEP取得了成功,但它似乎仍在积极开发中。我相信他们当时拥有更宽松的许可证,但它可能比自己编码便宜(取决于你的确切需求和技能)。
答案 3 :(得分:1)
我已经构建了一个java库来为我自己做Lex / YACC的学习示例。它被纳入一个更大的项目,似乎运作良好。如果我再次启动更大的项目,我将遵循上面的建议并使用Java脚本引擎。
答案 4 :(得分:1)
您可以尝试LibFormula,这是一个基于OpenDocument的OpenFormula标准的公式挖掘库。
OpenFormula是为电子表格应用程序编写的,并使用接近Excel公式的语法。更多信息可以在Pentaho-Wiki
中找到样品:
=[x]+1
答案 5 :(得分:0)
您可以查看我在exp4j下发布的 Apache License 2.0 。它实现了dijkstra的分流码算法,并且适用于多变量函数,如f(x,foo)=log(foo^(x^-1))
答案 6 :(得分:0)
有些人可能会对名为formula4j的新工具感兴趣。
它是商业性的,所以并非适合所有人。
答案 7 :(得分:-1)
也许MathML?
MathML是一种低级规范,用于将数学描述为机器到机器通信的基础,这为在网页中包含数学表达式提供了急需的基础。在发布科学和技术工作流程以及数学必须由软件处理的任何地方也很重要。例如,新版本带来了对数学可访问性的改进,以及从右到左编写的语言中的公式。基本标记保持不变,因为社区有七年的经验。