该语言直接支持树表示,因此您可以编写如下内容:
+(^(*(5,10),2),+(30,25))
这将是最快的
但是,如果您想要一个解析器,您可以利用语言的力量并将其作为一行。
我建议您使用以下始终有 2 个参数的数学树表示形式:
dat = [:+,[:^,[:*, 5, 10],2], [:+, 30, 25]]
比你可以用这个衬垫处理所有事情(如果你有String
s 而不是Symbol
你总是可以做Symbol(d[1])
在我的代码中):
compu(d) = quote
$(d[1])($(typeof(d[2])<:AbstractVector ? compu(d[2]) : d[2]), $(typeof(d[3])<:AbstractVector ? compu(d[3]) : d[3]))
end
现在让我们测试一下:
julia> (+(^(*(5,10),2),+(30,25) ))
2555
julia> eval(compu(dat))
2555