How can I parse a .jl
file into a Vector{Expr}
, similar to what include
does (but without executing of course). I expected Meta.parse
to accept an IO
, but it doesn’t.
1 Like
Not sure if this is the best way, but I have personally used
parsefile(file) = parse(join(["quote", readstring(file), "end"], ";"))
If you take the .args[1].args
, you have a Vector{Expr}
of everything.
1 Like
Thanks, that’s a good solution. I ended up with
parsecode(code::String)::Vector =
# https://discourse.julialang.org/t/parsing-a-julia-file/32622
filter(x->!(x isa LineNumberNode),
Meta.parse(join(["quote", code, "end"], ";")).args[1].args)
One drawback of this approach is that it looses all location information from the file. E.g. line-numbers and filename. Is there a way to keep that information?
1 Like