# Symbolics.jl convert string to symbolic equation

**URL:** <https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704>\
**Category:** General Usage\
**Created:** [February 24, 2024, 6:11pm UTC](https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704 "2024-02-24T18:11:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![brombo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brombo/32/47867_2.png) [@brombo](https://discourse.julialang.org/u/brombo)\
**Post date:** [February 24, 2024, 6:11pm UTC](https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704/1 "2024-02-24T18:11:39Z")

</div>

Consider that I have a string S = `"r^2*sin(th)^2"` that I want to convert to an Symbolics expression, Sexpr, so that -

`Derivative(r)*Sexpr = 2*r*sin(th)^2`  
`Derivative(th)*Sexpr = 2r^2*sin(th)*cos(th)`

Basically I wish to input symbolic expressions via strings (actually a two dimensional array of strings).

---

<div class="post-metadata">

**Author:** ![SteffenPL](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/steffenpl/32/206270_2.png) [@SteffenPL](https://discourse.julialang.org/u/SteffenPL)\
**Post date:** [February 24, 2024, 6:47pm UTC](https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704/2 "2024-02-24T18:47:50Z")

</div>

You can use `eval(Meta.parse("r^2*sin(th)^2"))` to convert a string to a Julia code which can be evaluated in the Main scope. For this to work, you need to define the symbols `r` and `th` before via `@variables r th`.

---

<div class="post-metadata">

**Author:** ![Dan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dan/32/42581_2.png) [@Dan](https://discourse.julialang.org/u/Dan)\
**Post date:** [February 24, 2024, 6:52pm UTC](https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704/3 "2024-02-24T18:52:20Z")

</div>

Perhaps, use `Meta.parse` like Steffen suggested, but roll-out your own specialized Expr processing to build an expression fit for your system:

```julia
julia> Meta.parse("r^2*sin(th)^2")
:(r ^ 2 * sin(th) ^ 2)

julia> dump(Meta.parse("r^2*sin(th)^2"))
Expr
  head: Symbol call
  args: Array{Any}((3,))
    1: Symbol *
    2: Expr
      head: Symbol call
      args: Array{Any}((3,))
        1: Symbol ^
        2: Symbol r
        3: Int64 2
    3: Expr
      head: Symbol call
      args: Array{Any}((3,))
        1: Symbol ^
        2: Expr
          head: Symbol call
          args: Array{Any}((2,))
            1: Symbol sin
            2: Symbol th
        3: Int64 2

```

Some macro processing tools could help in Expr analysis.

---

<div class="post-metadata">

**Author:** ![brombo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brombo/32/47867_2.png) [@brombo](https://discourse.julialang.org/u/brombo)\
**Post date:** [February 24, 2024, 10:17pm UTC](https://discourse.julialang.org/t/symbolics-jl-convert-string-to-symbolic-equation/110704/4 "2024-02-24T22:17:47Z")

</div>

Thank you both. Steffen’s suggestion works for what I have to do.
