在javascript中展开表达式

时间:2014-07-11 08:08:50

标签: javascript algorithm math

我在javascript中有以下表达式(字符串):

var my_expr = "(2*(A||B&&C))&&(3*D)";

如何做到这样的事情:

(2*A||2*B&&2*C)&&(3*D)

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您必须将表达式解析为抽象表达式树。这不是最简单的任务,但也不是不可能的。接下来,您必须实现一些代数属性,尤其是distributive property,您将在此处展示。最后,您必须表达要应用于表达式的哪个子树的规则。

一旦你为一般情况完成了所有这些工作,将会将其应用于此以及您可能遇到的所有类似案例。

Primer on expression trees in Javascript

编辑:您必须通过表达式树,没有捷径,因为它是代数属性可以正确应用于所有情况的唯一方法

答案 1 :(得分:0)

听起来你想要eval()字符串:

> var str = "4*5";
> eval(str);
20

互联网上有无数资源,说明为什么eval是一个危险的东西。如果您从其他来源获取字符串,则尤其如此。如果有任何替代方案,我建议使用它们。