如何将用户友好的中缀数学代码转换为Clojure代码?

8

我希望用户能够像这样输入:

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

因此,它将被转换为:

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

我希望你能够将其翻译为:“因此,我可以对其进行评估并生成某个函数,以便稍后进行即时编译和有效执行。”

是否已经有可用的库(具有运算符优先级),可以在最新的Clojure中使用?


我相信在antlr中有十几个这样的例子,你可以稍加修改后使用。 - BillRobertson42
1个回答

9
Incanter软件包中包含一个用于执行中缀数学运算的模块。请参考此链接
user> ($= 7 + 8 - 2 * 6 / 2)
9

还有其他人编写了软件包与此相关。


需要空格似乎有点限制。我期望输入为字符串(这里我还需要处理“read”)。 - Vi.
我尝试了clojure-infix,但它似乎已经被放弃了(这就是为什么我包含了“在最新的Clojure中工作”的条款)。 - Vi.
@Vi. 你不能自动解析字符串以在所有运算符周围添加空格吗? - Adrian Mouat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接