嘿,我用 JavaScript 和 HTML5 编写了一个分形生成程序(这里是链接),这是一个大约 2 年的过程,包括我对复杂数学和分形方程所做的所有研究,我正在寻找更新界面,因为人们看起来很吓人。在查看代码时,我注意到我做事的一些旧技术非常低效,例如我的Complex.parseFunction。
我正在寻找一种方法来使用 RegExp 来解析表达式的组件,例如函数、运算符和变量,以及为表达式实现正确的操作顺序。下面的一个例子可以说明我的意思:
//the first example parses an expression with two variables and outputs to string
console.log(Complex.parseFunction("i*-sinh(C-Z^2)", ["Z","C"], false))
"Complex.I.mult(Complex.neg(Complex.sinh(C.sub(Z.cPow(new Complex(2,0,2,0))))))"
//the second example parses the same expression but outputs to function
console.log(Complex.parseFunction("i*-sinh(C-Z^2)", ["Z","C"], true))
function(Z,C){
return Complex.I.mult(Complex.neg(Complex.sinh(C.sub(Z.cPow(new Complex(2,0,2,0))))));
}
我知道如何使用 RegExp 来处理String.prototype.replace
所有这些,我所需要的只是 RegExp 本身。请注意,它应该能够通过注意它是否直接在a之后来区分减法运算符(例如“CZ^2”)和负函数(例如“i*-(Z^2+C)”)变量或运算符。