# Emit an AST as Julia code?

**URL:** <https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368>\
**Category:** New to Julia\
**Tags:** metaprogramming\
**Created:** [August 22, 2020, 2:32pm UTC](https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368 "2020-08-22T14:32:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![stevenbarrett](https://avatars.discourse-cdn.com/v4/letter/s/5daacb/32.png) [@stevenbarrett](https://discourse.julialang.org/u/stevenbarrett)\
**Post date:** [August 22, 2020, 2:32pm UTC](https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368/1 "2020-08-22T14:32:55Z")

</div>

Hi there! Does anyone know if there a function or library to emit an AST as Julia code (i.e. convert an AST back into normal human-readable Julia)?

---

<div class="post-metadata">

**Author:** ![tomerarnon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tomerarnon/32/3170_2.png) [@tomerarnon](https://discourse.julialang.org/u/tomerarnon)\
**Post date:** [August 22, 2020, 2:47pm UTC](https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368/2 "2020-08-22T14:47:21Z")

</div>

I recall MacroTools.jl having something like that. Worth checking out.

---

<div class="post-metadata">

**Author:** ![ffevotte](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ffevotte/32/6587_2.png) [@ffevotte](https://discourse.julialang.org/u/ffevotte)\
**Post date:** [August 22, 2020, 4:35pm UTC](https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368/3 "2020-08-22T16:35:15Z")

</div>

By “AST”, do you mean an `Expr`?

If so, simply `print`ing an `Expr` displays it the form of Julia code:

```julia
julia> a = quote
         println("hello world!")
       end
quote
    #= REPL[1]:2 =#
    println("hello world!")
end

julia> println(a)
begin
    #= REPL[1]:2 =#
    println("hello world!")
end

```

For prettier printing, you can get rid of the line annotations using `MacroTools.striplines`:

```julia
julia> using MacroTools

julia> MacroTools.striplines(a) |> println
begin
    println("hello world!")
end

```

---

<div class="post-metadata">

**Author:** ![stevenbarrett](https://avatars.discourse-cdn.com/v4/letter/s/5daacb/32.png) [@stevenbarrett](https://discourse.julialang.org/u/stevenbarrett)\
**Post date:** [August 23, 2020, 4:51am UTC](https://discourse.julialang.org/t/emit-an-ast-as-julia-code/45368/4 "2020-08-23T04:51:12Z")

</div>

Thank you so much! That’s perfect!
