2012-08-08 41 views
7

我希望用户能够输入这样的:如何将用户友好的中缀数学代码转换为Clojure代码?

5+6*t+sin(2*t) 

,所以它会被转换成这样:

(+ 5 (* 6 t) (sin (* 2 t))) 

,所以我可以EVAL一些功能将被实时编译和稍后有效执行。

是否有已经在上最新的Clojure工作已经可用的库(与运营商优先考虑)?

+0

我敢肯定在antlr中有十几个例子,你可以通过一些修改来获取和使用。 – Bill 2012-08-08 22:52:44

回答

7

的咒术包包括module for doing infix math

user> ($= 7 + 8 - 2 * 6/2) 
9 

等都有written packages

+0

需要空间似乎有点限制。我期望字符串作为输入(在这里我也需要'读')。 – 2012-08-08 23:05:40

+0

我试过clojuire-infix,但它似乎是放弃的(这就是为什么我将“作品放在最新的Clojure”条款中)。 – 2012-08-08 23:06:34

+0

@Vi。难道你不能自动解析字符串以在所有操作符周围添加空格吗? – 2012-08-09 13:26:31