This is a useful alternative to str() for expression objects.

ast(x)

Arguments

x

An expression to display. Input is automatically quoted, use !! to unquote if you have already captured an expression object.

Examples

# Leaves ast(1)
#> 1
ast(x)
#> x
# Simple calls ast(f())
#> f
ast(f(x, 1, g(), h(i())))
#> f #> ├─x #> ├─1 #> ├─g #> └─h #> └─i
ast(f()())
#> f
ast(f(x)(y))
#> f #> │ └─x #> └─y
ast((x + 1))
#> `(` #> └─`+` #> ├─x #> └─1
# Displaying expression already stored in object x <- quote(a + b + c) ast(x)
#> x
ast(!!x)
#> `+` #> ├─`+` #> │ ├─a #> │ └─b #> └─c
# All operations have this same structure ast(if (TRUE) 3 else 4)
#> `if` #> ├─TRUE #> ├─3 #> └─4
ast(y <- x * 10)
#> `<-` #> ├─y #> └─`*` #> ├─x #> └─10
ast(function(x = 1, y = 2) { x + y } )
#> `function` #> ├─x = 1 #> │ └─y = 2 #> ├─`{` #> │ └─`+` #> │ ├─x #> │ └─y #> └─<inline srcref>
# Operator precedence ast(1 * 2 + 3)
#> `+` #> ├─`*` #> │ ├─1 #> │ └─2 #> └─3
ast(!1 + !1)
#> `!` #> └─`+` #> ├─1 #> └─`!` #> └─1