Julia expression to AbstractTree-like structure in Symbolics

I was looking at the different possibilities for Expr to tree-like structure in Julia and thought of the Symbolics ecosystem as the natural modern place for it

I found an old post and GitHub - dfdx/Espresso.jl: Expression transformation package but was wondering if there is something in Symbolics

Expr is a tree structure. But @shashi might have some other tools.

True, it is a tree structure but I didn’t see the AbstractTree interface implemented anywhere.

Edit: no clue how I missed it, it is already built in AbstractTrees

julia> AbstractTrees.print_tree(:(3x + 2 * y - f(z + π)))
Expr(:call)
├─ :-
├─ Expr(:call)
│  ├─ :+
│  ├─ Expr(:call)
│  │  ├─ :*
│  │  ├─ 3
│  │  └─ :x
│  └─ Expr(:call)
│     ├─ :*
│     ├─ 2
│     └─ :y
└─ Expr(:call)
   ├─ :f
   └─ Expr(:call)
      ├─ :+
      ├─ :z
      └─ :π
1 Like