在 Julia 中,如何将数学表达式转换为更易于解析的方式?

Zac*_*ack 4 math parsing expression transform julia

Julia 中是否有预定义的类或包可以处理这种转换: x * (y - z) => [y, z, "-"; x, y, "*"](这假设为了节省内存空间,在应用第二个操作之前将第一个操作的输出存储在变量 y 中)。

基本上,我需要将数学表达式分解为一系列步骤,然后通过算法将其应用于所涉及的变量。谢谢!

Prz*_*fel 5

您可以从表达式中获取抽象语法树。由于它是儒略数据结构,因此您可以以任何您想要的方式处理或可视化它。

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