Zac*_*ack 4 math parsing expression transform julia
Julia 中是否有预定义的类或包可以处理这种转换: x * (y - z) => [y, z, "-"; x, y, "*"](这假设为了节省内存空间,在应用第二个操作之前将第一个操作的输出存储在变量 y 中)。
基本上,我需要将数学表达式分解为一系列步骤,然后通过算法将其应用于所涉及的变量。谢谢!
您可以从表达式中获取抽象语法树。由于它是儒略数据结构,因此您可以以任何您想要的方式处理或可视化它。
julia> dump(:(x * (y - z)))
Expr
head: Symbol call
args: Array{Any}((3,))
1: Symbol *
2: Symbol x
3: Expr
head: Symbol call
args: Array{Any}((3,))
1: Symbol -
2: Symbol y
3: Symbol z
Run Code Online (Sandbox Code Playgroud)
Julia 手册的元编程部分描述了此机制
根据您实际需要执行的操作,这个问题可能也相关:Julia What is The Fastest Way to Evaluate a Math Tree
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |