怎么将外部输入的方程变成内部的编程语言实现

这个问题困扰了我一段时间
我是希望能够动态的修改类内部的一个计算方法的计算公式。
例如我外部传入y=x^2+3的字符串,或者类似的字符串,内部的计算公式就变成了return math.pow(x,2)+3。
一直没有找到实现这种方法思路。
这个问题有三个关键点。
1、传什么值进去。(例如:“math.pow(x,2)+3”或者“x^3+x^2+10”)

2、类如何处理值。(处理……得到一些特征元素)
3、处理之后,如何将处理结果变成计算程序语言。(将特征元素进行识别得到计算代码语言)

这种思路不知道对不对,感觉好麻烦。诸位有类似的实现敬请指导。谢谢!

第1个回答  2015-08-10
一个程序不能改变自己的代码,但是输入算式并计算可以编程实现追问

恩,明白前半句,那么“算式并计算可以编程实现”,要如何实现呢。能给个例子么?

追答

代码太长

可自行搜索代码

追问

我找了许多都没有找到,能给我keywords么? 这样我也有目标去找。谢谢~

第2个回答  2015-08-10
找个程序员。追问

我就是= =不过是个二手。貌似你也是,能不能指导下如何实现。

追答

找个程序员,给它算式,让它写代码,应该是最符合原意的方式

如果不是这样的话。个人的思路,应该也是常见的思路:1.输入算式 => 2.把算式转换成表达式树(由字符串转换成有层次的数据结构) => 3.对表达式树进行处理

1 到 2 就是“语法分析”,这点网上有各种资料——其实这也就是一个表达式计算器的前半部分。 2 到 3 ,个人建议直接写个模块用来把表达式的结果算出来,不要再转到另一门语言的计算公式了,不过如果表达式树建得没有问题的话,遍历表达式树,输出另一种描述方式也是不难的。

如果用的是带有 eval 函数的语言,并且不管安全性的话,就忽略上面说的话吧。直接接受表达式然后传给 eval 函数就可以了。

追问

感谢您的回答,“语法分析“、”表达式计算器“以及遍历树的思想,这些都是我想要的。我去搜索后也发现了一些答案。十分感谢!我去找一找开源的工具。万分感谢! 我用的是java语言~~想找到你的信息真的是困难呢。
追问:感谢,我找到了开源项目Expr4J。感谢!思路已经通畅了!love!

本回答被提问者采纳